]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Fix CallingNum IE decoding to allow zero-length "numbers"
authorStefan Knoblich <stkn@freeswitch.org>
Tue, 9 Sep 2008 21:10:18 +0000 (21:10 +0000)
committerStefan Knoblich <stkn@freeswitch.org>
Tue, 9 Sep 2008 21:10:18 +0000 (21:10 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@551 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/openzap/src/isdn/Q931ie.c

index b936c20fe977ca5b887f3c43f88e617052062c99..c93313e973a9e2fc8bd51fa71774bbc0bfd13dbf 100644 (file)
@@ -765,7 +765,7 @@ L3INT Q931Uie_CallingNum(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHA
        /* Octet 3 */
        pie->TypNum    = (IBuf[Octet + Off] >> 4) & 0x07;
        pie->NumPlanID =  IBuf[Octet + Off] & 0x0f;
-       
+
        /* Octet 3a */
        if ((IBuf[Octet + Off] & 0x80) == 0) {
                Off++;
@@ -774,14 +774,16 @@ L3INT Q931Uie_CallingNum(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHA
        }
        Octet++;
 
-       /* Octet 4*/
+       /* Octet 4 */
        x = 0;
-       do {
-               pie->Digit[x] = IBuf[Octet + Off] & 0x7f;
-               Off++;
-               x++;
-       } while ((IBuf[Octet + Off]&0x80) == 0 && Q931MoreIE());
+       while (Q931MoreIE()) {
+               pie->Digit[x++] = IBuf[Octet + Off] & 0x7f;
 
+               if ((IBuf[Octet + Off] & 0x80) != 0) {
+                       break;
+               }
+               Off++;
+       }
        pie->Digit[x] = '\0';
 
        Q931IESizeTest(Q931E_CALLINGNUM);