summaryrefslogtreecommitdiff
path: root/src/smsutil.c
diff options
context:
space:
mode:
authorSlava Monich <slava.monich@jolla.com>2017-01-01 20:48:02 +0300
committerDenis Kenzior <denkenz@gmail.com>2016-12-30 18:19:21 -0600
commita1df13a3bc9143ef83c1449a45572e9fbf85a7c3 (patch)
tree87223b6dc75127d26a7c86e15d4f56d7f9e69a73 /src/smsutil.c
parenta011fea4a408615b5d0d3ae56282d06a2fe07cd0 (diff)
downloadofono-a1df13a3bc9143ef83c1449a45572e9fbf85a7c3.tar.gz
smsutil: Prevent invalid access in cbs_decode_text
Valgrind was complaining about it like this: ==18099== Conditional jump or move depends on uninitialised value(s) ==18099== at 0x4C32281: strspn ==18099== by 0x41286B: cbs_decode_text (smsutil.c:4140) ==18099== by 0x40675C: test_cbs_encode_decode (test-sms.c:1417)
Diffstat (limited to 'src/smsutil.c')
-rw-r--r--src/smsutil.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/smsutil.c b/src/smsutil.c
index 22129945..24dcfaa7 100644
--- a/src/smsutil.c
+++ b/src/smsutil.c
@@ -4135,12 +4135,13 @@ char *cbs_decode_text(GSList *cbs_list, char *iso639_lang)
*/
for (; i < written; i++, bufsize++) {
if (unpacked[i] == '\r') {
- int t;
+ int j;
- t = strspn((const char *) unpacked + i,
- "\r");
+ for (j = i + 1; j < written; j++)
+ if (unpacked[j] != '\r')
+ break;
- if (t + i == written)
+ if (j == written)
break;
}