diff --git a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
index 2d78727..980ebd8 100755
--- a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
@@ -184,8 +184,8 @@
                     #if DEBUG
                     printf("line %d for apn_table[%d].apn:%s,,,,urc_response->apnName:%s\n",__LINE__,i,apn_table[i].apn,urc_response->apnName);
                     #endif
-                    RLOGD("for apn_table[%d].apn:%s,,,,urc_response->apnName:%s\n",i,apn_table[i].apn,urc_response->apnName);
-                    if(strcmp(apn_table[i].apn,urc_response->apnName)==0)
+                    RLOGD("for apn_table[%d].apntype:%s,,,,urc_response->apnType:%s\n",i,apn_table[i].apntype,urc_response->apnType);
+                    if(strcmp(apn_table[i].apntype,urc_response->apnType)==0)
                     {
                         #if DEBUG
                         printf("line %d This apn has been created update???!!!\n",__LINE__);
@@ -306,15 +306,19 @@
                     char ptr[1] = "";
                     if(NULL == urc_response->ifname)
                     {
-                        memcpy(apn_table[i].ifaceName, ptr,strlen(ptr)+1);
+                        memset(iface_t,0,LYNQ_APNTPYE_LEN_MAX);
+                        memset(apn_table[i].ifaceName,0,LYNQ_APNTPYE_LEN_MAX);
+                    }
+                    else
+                    {
+                        memcpy(iface_t,urc_response->ifname,strlen(urc_response->ifname)+1);
                     }
                     if(NULL == urc_response->addresses)
                     {
-                        memcpy(apn_table[i].address, ptr, strlen(ptr)+1);
+                        memset(apn_table[i].address,0,LYNQ_APNTPYE_LEN_MAX);
                     }
-                    memcpy(iface_t,apn_table[i].ifaceName,strlen(apn_table[i].ifaceName)+1);
-                    memcpy(apnType_t,apn_table[i].apntype,strlen(apn_table[i].apntype)+1);
-                    memcpy(apn_t,apn_table[i].apn,strlen(apn_table[i].apn)+1);
+                    memcpy(apnType_t,urc_response->apnType,strlen(urc_response->apnType)+1);
+                    memcpy(apn_t,urc_response->apnName,strlen(urc_response->apnName)+1);
                     p.writeInt32(1);
                     p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
                     p.writeInt32(0);//temporary plan
@@ -353,15 +357,19 @@
                 char ptr[1] = "";
                 if(NULL == urc_response->ifname)
                 {
-                    memcpy(apn_table[i].ifaceName, ptr,strlen(ptr)+1);
+                    memset(iface_t,0,LYNQ_APNTPYE_LEN_MAX);
+                    memset(apn_table[i].ifaceName,0,LYNQ_APNTPYE_LEN_MAX);
+                }
+                else
+                {
+                    memcpy(iface_t,urc_response->ifname,strlen(urc_response->ifname)+1);
                 }
                 if(NULL == urc_response->addresses)
                 {
-                    memcpy(apn_table[i].address, ptr, strlen(ptr)+1);
+                    memset(apn_table[i].address,0,LYNQ_APNTPYE_LEN_MAX);
                 }
-                memcpy(iface_t,apn_table[i].ifaceName,strlen(apn_table[i].ifaceName)+1);
-                memcpy(apnType_t,apn_table[i].apntype,strlen(apn_table[i].apntype)+1);
-                memcpy(apn_t,apn_table[i].apn,strlen(apn_table[i].apn)+1);
+                memcpy(apnType_t,urc_response->apnType,strlen(urc_response->apnType)+1);
+                memcpy(apn_t,urc_response->apnName,strlen(urc_response->apnName)+1);
                 p.writeInt32(1);
                 p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
                 p.writeInt32(0);//temporary plan
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index 1351300..b7498a6 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -719,7 +719,7 @@
                 apnId = getLynqApnID(apnType);
                 if(apnId >= 0)
                 {
-                    LYINFLOG("URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",apnType,ifaceName,apn,pdnState,apnId);
+                    LYINFLOG("[%d]URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",__LINE__,apnType,ifaceName,apn,pdnState,apnId);
                     lynq_data_call_change_id = apnId;
                     //bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);//async clean
                     pthread_mutex_lock(&s_lynq_urc_vector_mutex);
@@ -735,7 +735,7 @@
                         LYERRLOG("[%d]invalid apnId:%d",__LINE__,apnId);
                         break;
                     }
-                    LYINFLOG("URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",apnType,ifaceName,apn,pdnState,apnId);
+                    LYINFLOG("[%d]URC apnType:%s,ifaceName:%s,apn:%s pdnState:%d,handle:%d",__LINE__,apnType,ifaceName,apn,pdnState,apnId);
                     cleanDeactApn(apnId);
                     lynq_data_call_change_id = apnId;
                     bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);//async clean
