Merge "[Feature][T106BUG-99][T106BUG-134]fix call lynq_setup_data_call will core dumped"
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/data/data.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/data/data.cpp
index 673960a..fbeaefe 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/data/data.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/data/data.cpp
@@ -789,6 +789,7 @@
                 p.writeInt32(0);//status
                 p.writeInt32(-1);//suggestedRetryTime
                 p.writeInt32(lynq_apn_cid_table[i].cid);//cid
+                writeStringToParcel(p, lynq_apn_cid_table[i].ifaceName);//ifname
                 android::LYNQ_RIL_respSocket(p, (void *)pRI);
                 RLOGD("cid:%d,apn:%s,apntype:%s", lynq_apn_cid_table[i].cid, lynq_apn_cid_table[i].apn, lynq_apn_cid_table[i].apntype);
                 return -1;
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
index 975db3a..49363ad 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -1116,12 +1116,12 @@
     int cid = -1;
     int active = -1;
     int utoken = -1;
-    char ifaceName[LYNQ_IFACE_NAME_MAX_LEN];
-    char type[LYNQ_TYPE_MAX_LEN];
-    char addresses[LYNQ_ADDRESSES_MAX_LEN];
-    char dnses[LYNQ_DNSES_MAX_LEN];
-    char gateways[LYNQ_GATEWAYS_MAX_LEN];
-    char pcscf[LYNQ_PCSCF_MAX_LEN];
+    char ifaceName[LYNQ_IFACE_NAME_MAX_LEN] = {0};
+    char type[LYNQ_TYPE_MAX_LEN] = {0};
+    char addresses[LYNQ_ADDRESSES_MAX_LEN] = {0};
+    char dnses[LYNQ_DNSES_MAX_LEN] = {0};
+    char gateways[LYNQ_GATEWAYS_MAX_LEN] = {0};
+    char pcscf[LYNQ_PCSCF_MAX_LEN] = {0};
 
     char *tmp_msg = NULL;
     int len = 0;
@@ -1197,16 +1197,19 @@
                 return error;
             }
         }
-//version != 0 || slot < 0, the cid out of lynq_apn_table, need add a new item
-        p.readInt32(&active);
-
-        tmp_msg = strdupReadString(p);
-        len = strlen(tmp_msg);
-        if(len < LYNQ_TYPE_MAX_LEN-1)
+//the cid out of lynq_apn_table, need add a new item
+        if(version != 0)
         {
-            memcpy(type,tmp_msg,len+1);
+            p.readInt32(&active);
+
+            tmp_msg = strdupReadString(p);
+            len = strlen(tmp_msg);
+            if(len < LYNQ_TYPE_MAX_LEN-1)
+            {
+                memcpy(type,tmp_msg,len+1);
+            }
+            free(tmp_msg);
         }
-        free(tmp_msg);
         tmp_msg = strdupReadString(p);
         len = strlen(tmp_msg);
         if(len < LYNQ_IFACE_NAME_MAX_LEN-1)
@@ -1232,6 +1235,7 @@
         *handle = lynq_data_call_id;
         lynq_apn_table[lynq_data_call_id].cid = cid;
         memcpy(lynq_apn_table[lynq_data_call_id].ifaceName, ifaceName, strlen(ifaceName) + 1);
+        memcpy(lynq_apn_table[lynq_data_call_id].apn, apn, strlen(apn) + 1);
         memcpy(lynq_apn_table[lynq_data_call_id].apnType, apnType, strlen(apnType) + 1);
         lynq_apn_table[lynq_data_call_id].hasUsed = 1;
         printf_apn_table();