From 11e185ee8e2ee3d21d50ce2d850e4bca620ddbc2 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Tue, 9 Sep 2008 21:10:18 +0000 Subject: [PATCH] Fix CallingNum IE decoding to allow zero-length "numbers" git-svn-id: http://svn.openzap.org/svn/openzap/trunk@551 a93c3328-9c30-0410-af19-c9cd2b2d52af --- libs/openzap/src/isdn/Q931ie.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libs/openzap/src/isdn/Q931ie.c b/libs/openzap/src/isdn/Q931ie.c index b936c20fe9..c93313e973 100644 --- a/libs/openzap/src/isdn/Q931ie.c +++ b/libs/openzap/src/isdn/Q931ie.c @@ -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);