From: Caiwen Zhang Date: Thu, 27 Jun 2013 12:43:09 +0000 (+0800) Subject: fix sim data length count error X-Git-Tag: accepted/tizen/20131007.095414~8 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Ftelephony%2Ftel-plugin-imc.git;a=commitdiff_plain;h=fc10f01bc5b20a92e1a7a71b37798aa2101704e8 fix sim data length count error the data may be binary and it may contain '\0', if count its length with strlen, the length may be incorrect. Change-Id: I669c2dd1e5ec049acadc3e04ac3fb0cc25aee9ab --- diff --git a/src/s_sim.c b/src/s_sim.c index af57b10..9c336eb 100644 --- a/src/s_sim.c +++ b/src/s_sim.c @@ -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);