diff options
author | Denis Kenzior <denkenz@gmail.com> | 2012-09-17 11:48:03 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2012-09-17 11:48:03 -0500 |
commit | 941257bec615acbf59d4be8a7df86039c040ab88 (patch) | |
tree | 88618095eab2a0d3980be92dd980a67ec8d44050 /src/smsutil.c | |
parent | 134a35f697a822af235a92c946aebb0c39bed938 (diff) | |
download | ofono-941257bec615acbf59d4be8a7df86039c040ab88.tar.bz2 |
smsutil: Fix CR padding logic for 7-bit case
Diffstat (limited to 'src/smsutil.c')
-rw-r--r-- | src/smsutil.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/smsutil.c b/src/smsutil.c index b4d129ff..1e9b471c 100644 --- a/src/smsutil.c +++ b/src/smsutil.c @@ -4103,11 +4103,19 @@ char *cbs_decode_text(GSList *cbs_list, char *iso639_lang) /* * CR is a padding character, which means we can - * safely discard everything afterwards + * safely discard everything afterwards if there are + * only trailing CR characters. */ for (; i < written; i++, bufsize++) { - if (unpacked[i] == '\r') - break; + if (unpacked[i] == '\r') { + unsigned int t; + + t = strspn((const char *) unpacked + i, + "\r"); + + if (t + i == written) + break; + } buf[bufsize] = unpacked[i]; } |