From: Stefan Knoblich Date: Tue, 8 Jul 2008 14:44:11 +0000 (+0000) Subject: [Q.931] Fix DateTime IE parsing X-Git-Tag: v1.0.6~38^3~429 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a32cd745f7790b99e6502aa6eb0678607d205160;p=thirdparty%2Ffreeswitch.git [Q.931] Fix DateTime IE parsing git-svn-id: http://svn.openzap.org/svn/openzap/trunk@500 a93c3328-9c30-0410-af19-c9cd2b2d52af --- diff --git a/libs/freetdm/src/isdn/Q931ie.c b/libs/freetdm/src/isdn/Q931ie.c index 09d2d1ce8a..6c77d32a47 100644 --- a/libs/freetdm/src/isdn/Q931ie.c +++ b/libs/freetdm/src/isdn/Q931ie.c @@ -1357,11 +1357,10 @@ L3INT Q931Uie_DateTime(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR *pIE=0; - pie->IEId = IBuf[Octet]; - IESize = IBuf[Octet ++]; + pie->IEId = IBuf[Octet++]; /* Octet 2 */ - IESize = IBuf[Octet ++]; + IESize = IBuf[Octet++]; /* Octet 3 - Year */ pie->Year = IBuf[Octet++]; @@ -1375,23 +1374,24 @@ L3INT Q931Uie_DateTime(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR /******************************************************************* The remaining part of the IE are optioinal, but only the length can now tell us wherever these fields are present or not + (always remember: IESize does not include ID and Size octet) ********************************************************************/ pie->Format=0; /* Octet 6 - Hour (optional)*/ - if(IESize >= 6) + if(IESize >= 4) { pie->Format = 1; pie->Hour = IBuf[Octet++]; /* Octet 7 - Minute (optional)*/ - if(IESize >= 7) + if(IESize >= 5) { pie->Format = 2; pie->Minute = IBuf[Octet++]; /* Octet 8 - Second (optional)*/ - if(IESize >= 8) + if(IESize >= 6) { pie->Format = 3; pie->Second = IBuf[Octet++];