fix sim data length count error 44/8444/1
authorCaiwen Zhang <caiwen.zhang@intel.com>
Thu, 27 Jun 2013 12:43:09 +0000 (20:43 +0800)
committerwootak.jung <wootak.jung@samsung.com>
Tue, 20 Aug 2013 00:28:17 +0000 (09:28 +0900)
the data may be binary and it may contain '\0', if count its length
with strlen, the length may be incorrect.

Change-Id: I669c2dd1e5ec049acadc3e04ac3fb0cc25aee9ab

src/s_sim.c

index af57b10..9c336eb 100644 (file)
@@ -1311,7 +1311,7 @@ static void _response_get_file_data(TcorePending *p, int data_len, const void *d
 
                tmp = util_removeQuotes(res);
                res = util_hexStringToBytes(tmp);
-               res_len = strlen((const char *)res);
+               res_len = strlen(tmp) / 2;
                dbg("Response: [%s] Response length: [%d]", res, res_len);
 
                if ((sw1 == 0x90 && sw2 == 0x00) || sw1 == 0x91) {
@@ -2846,7 +2846,7 @@ static void on_response_get_atr(TcorePending *p, int data_len, const void *data,
                        tmp = util_removeQuotes(g_slist_nth_data(tokens, 0));
                        decoded_data = util_hexStringToBytes(tmp);
 
-                       res.atr_length = strlen(decoded_data);
+                       res.atr_length = strlen(tmp) / 2;
                        memcpy((char *)res.atr, decoded_data, res.atr_length);
                        g_free(tmp);
                        g_free(decoded_data);