summaryrefslogtreecommitdiffstats
path: root/src/smsutil.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2012-09-17 11:48:03 -0500
committerDenis Kenzior <denkenz@gmail.com>2012-09-17 11:48:03 -0500
commit941257bec615acbf59d4be8a7df86039c040ab88 (patch)
tree88618095eab2a0d3980be92dd980a67ec8d44050 /src/smsutil.c
parent134a35f697a822af235a92c946aebb0c39bed938 (diff)
downloadofono-941257bec615acbf59d4be8a7df86039c040ab88.tar.bz2
smsutil: Fix CR padding logic for 7-bit case
Diffstat (limited to 'src/smsutil.c')
-rw-r--r--src/smsutil.c14
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];
}