From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7196894270184976705==" MIME-Version: 1.0 From: Philippe Nunes Subject: [PATCH] smsutil: is not necessarily a padding character in CBS message Date: Fri, 27 Jul 2012 17:08:31 +0200 Message-ID: <1343401711-31526-1-git-send-email-philippe.nunes@linux.intel.com> List-Id: To: ofono@ofono.org --===============7196894270184976705== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --- src/smsutil.c | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/src/smsutil.c b/src/smsutil.c index a541964..59eb7b1 100644 --- a/src/smsutil.c +++ b/src/smsutil.c @@ -4090,7 +4090,7 @@ char *cbs_decode_text(GSList *cbs_list, char *iso639_= lang) unsigned char unpacked[CBS_MAX_GSM_CHARS]; long written; int max_chars; - int i; + int i, j; = max_chars =3D sms_text_capacity_gsm(CBS_MAX_GSM_CHARS, taken); @@ -4102,12 +4102,24 @@ char *cbs_decode_text(GSList *cbs_list, char *iso63= 9_lang) i =3D iso639 ? 3 : 0; = /* - * CR is a padding character, which means we can - * safely discard everything afterwards + * CR can be used as a padding character, which means + * we can safely discard everything afterwards */ + for (; i < written; i++, bufsize++) { - if (unpacked[i] =3D=3D '\r') - break; + if (unpacked[i] =3D=3D '\r') { + /* + * check if this is a padding character or = + * if it is a wanted + */ + for (j=3Di+1; j < written; j++) + if (unpacked[j] !=3D '\r') + break; + + if (j =3D=3D written) + break; + } + = buf[bufsize] =3D unpacked[i]; } @@ -4135,8 +4147,19 @@ char *cbs_decode_text(GSList *cbs_list, char *iso639= _lang) } = while (i < max_offset) { - if (ud[i] =3D=3D 0x00 && ud[i+1] =3D=3D '\r') - break; + if (ud[i] =3D=3D 0x00 && ud[i+1] =3D=3D '\r') { + int j =3D i+2; + + while (j < max_offset) { + if (ud[j] !=3D 0x00 || ud[j+1] !=3D '\r') + break; + + j +=3D 2; + } + + if (j =3D=3D max_offset) + break; + } = buf[bufsize] =3D ud[i]; buf[bufsize + 1] =3D ud[i+1]; -- = 1.7.9.5 --===============7196894270184976705==--