summaryrefslogtreecommitdiffstats
path: root/src/smsutil.c
diff options
context:
space:
mode:
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];
}