diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2023-05-18 20:54:49 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2023-05-18 21:00:45 +0000 |
commit | b70fd80c0fb3ce56e6722898eadee38a945e1cbb (patch) | |
tree | ebcfa947b4121bb70dcfcd608ce90e6f73b1f80f /src/mm-charsets.c | |
parent | a03da1f3cbe369a8c82b8bbda32c2a03b8c4b45d (diff) |
charsets: fix read of uninitialized memory in gsm unpacked conversion
==1==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x59c6c88a31ef in gsm_ext_char_to_utf8 src/mm-charsets.c:256:13
#1 0x59c6c88a31ef in charset_gsm_unpacked_to_utf8 src/mm-charsets.c:339:20
#2 0x59c6c88a31ef in mm_modem_charset_bytearray_to_utf8 src/mm-charsets.c:857:30
#3 0x59c6c889babd in sms_decode_address src/mm-sms-part-3gpp.c:143:16
#4 0x59c6c8899d3a in mm_sms_part_3gpp_new_from_binary_pdu src/mm-sms-part-3gpp.c:514:15
Diffstat (limited to 'src/mm-charsets.c')
-rw-r--r-- | src/mm-charsets.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/mm-charsets.c b/src/mm-charsets.c index 0cbad337..0df99471 100644 --- a/src/mm-charsets.c +++ b/src/mm-charsets.c @@ -310,7 +310,7 @@ charset_gsm_unpacked_to_utf8 (const guint8 *gsm, for (i = 0; i < len; i++) { guint8 uchars[4]; - guint8 ulen; + guint8 ulen = 0; /* * 0x00 is NULL (when followed only by 0x00 up to the @@ -336,9 +336,11 @@ charset_gsm_unpacked_to_utf8 (const guint8 *gsm, if (gsm[i] == GSM_ESCAPE_CHAR) { /* Extended alphabet, decode next char */ - ulen = gsm_ext_char_to_utf8 (gsm[i+1], uchars); - if (ulen) - i += 1; + if (i + 1 < len) { + ulen = gsm_ext_char_to_utf8 (gsm[i + 1], uchars); + if (ulen) + i += 1; + } } else { /* Default alphabet */ ulen = gsm_def_char_to_utf8 (gsm[i], uchars); |