Re: GNU GK crash on receiving H.450 message

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dennis,

the callIdentity provided isn't long enough for a call id and thus the
typecast fails here:

CallSignalSocket::OnH450CallTransfer:

const PASN_NumericString & callIdentifier =
ctInitiateArg.m_callIdentity;

(const H225_CallIdentifier&)callIdentifier

Simon, could you please put in a check for this ? Thanks!

Jan


Denis Kochmashev "Enforta" wrote:
> PTLib: 2.0.1
> H323Plus: 1.20-beta3
> GNU GK: 2.2.7
> 
> Tried to transfer a call from non-H.450 endpoint using PacPhone and GNU GK
> crashed.
> 
> Last log lines (full log attached):
> 
> 2008/06/05 20:02:38.780 4       ProxyChannel.cxx(2413)  H450    Received
> supplementary service PDU:
>   {
>     serviceApdu = rosApdus 1 entries {
>       [0]=invoke {
>         invokeId = 1
>         opcode = local 9
>         argument =  6 octets {
>           00 01 01 00 43 30                                  ....C0
>         }
>       }
>     }
>   }
> 2008/06/05 20:02:38.781 0             assert.cxx(174)   PWLib   Assertion
> fail: Invalid cast to non-descendant class, file h225_1.cxx, line 3096
> 
> Gdb shows the following:
> 
> mmsvc@coll2:~/log> gdb -c core.15554 ../bin/gnugk-debug
> GNU gdb Red Hat Linux (6.3.0.0-1.132.EL4rh)
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db
> library "/lib/tls/libthread_db.so.1".
> 
> 
> warning: core file may not match specified executable file.
> Core was generated by `/usr/local/mmsvc/bin/gnugk -tttt -u mmsvc -c
> /usr/local/mmsvc/etc/gk.ini -o /us'.
> Program terminated with signal 11, Segmentation fault.
> Reading symbols from
> /usr/local/mmsvc/lib/libh323_linux_x86_d.so.1.20-beta3...done.
> Loaded symbols for /usr/local/mmsvc/lib/libh323_linux_x86_d.so.1.20-beta3
> Reading symbols from /usr/local/mmsvc/lib/libpt_linux_x86_d.so.2.0.1...done.
> Loaded symbols for /usr/local/mmsvc/lib/libpt_linux_x86_d.so.2.0.1
> Reading symbols from /usr/lib/libldap-2.2.so.7...done.
> Loaded symbols for /usr/lib/libldap-2.2.so.7
> Reading symbols from /usr/lib/liblber-2.2.so.7...done.
> Loaded symbols for /usr/lib/liblber-2.2.so.7
> Reading symbols from /usr/lib/libldap_r-2.2.so.7...done.
> Loaded symbols for /usr/lib/libldap_r-2.2.so.7
> Reading symbols from /lib/tls/libpthread.so.0...done.
> Loaded symbols for /lib/tls/libpthread.so.0
> Reading symbols from /usr/lib/libsasl2.so.2...done.
> Loaded symbols for /usr/lib/libsasl2.so.2
> Reading symbols from /lib/libssl.so.4...done.
> Loaded symbols for /lib/libssl.so.4
> Reading symbols from /lib/libcrypto.so.4...done.
> Loaded symbols for /lib/libcrypto.so.4
> Reading symbols from /usr/lib/libexpat.so.0...done.
> Loaded symbols for /usr/lib/libexpat.so.0
> Reading symbols from /lib/libresolv.so.2...done.
> Loaded symbols for /lib/libresolv.so.2
> Reading symbols from /lib/libdl.so.2...done.
> Loaded symbols for /lib/libdl.so.2
> Reading symbols from /usr/lib/libstdc++.so.6...done.
> Loaded symbols for /usr/lib/libstdc++.so.6
> Reading symbols from /lib/tls/libm.so.6...done.
> Loaded symbols for /lib/tls/libm.so.6
> Reading symbols from /lib/libgcc_s.so.1...done.
> Loaded symbols for /lib/libgcc_s.so.1
> Reading symbols from /lib/tls/libc.so.6...done.
> Loaded symbols for /lib/tls/libc.so.6
> Reading symbols from /lib/ld-linux.so.2...done.
> Loaded symbols for /lib/ld-linux.so.2
> Reading symbols from /lib/libcrypt.so.1...done.
> Loaded symbols for /lib/libcrypt.so.1
> Reading symbols from /usr/lib/libgssapi_krb5.so.2...done.
> Loaded symbols for /usr/lib/libgssapi_krb5.so.2
> Reading symbols from /usr/lib/libkrb5.so.3...done.
> Loaded symbols for /usr/lib/libkrb5.so.3
> Reading symbols from /lib/libcom_err.so.2...done.
> Loaded symbols for /lib/libcom_err.so.2
> Reading symbols from /usr/lib/libk5crypto.so.3...done.
> Loaded symbols for /usr/lib/libk5crypto.so.3
> Reading symbols from /usr/lib/libz.so.1...done.
> Loaded symbols for /usr/lib/libz.so.1
> Reading symbols from
> /usr/local/mmsvc/lib/ptlib/devices/videoinput/v4l2_pwplugin.so...done.
> Loaded symbols for
> /usr/local/mmsvc/lib/ptlib/devices/videoinput/v4l2_pwplugin.so
> Reading symbols from
> /usr/local/mmsvc/lib/ptlib/devices/videoinput/v4l_pwplugin.so...done.
> Loaded symbols for
> /usr/local/mmsvc/lib/ptlib/devices/videoinput/v4l_pwplugin.so
> Reading symbols from /lib/libnss_files.so.2...done.
> Loaded symbols for /lib/libnss_files.so.2
> #0  0x00f4b35b in __dynamic_cast () from /usr/lib/libstdc++.so.6
> (gdb) bt full
> #0  0x00f4b35b in __dynamic_cast () from /usr/lib/libstdc++.so.6
> No symbol table info available.
> #1  0x00d56e82 in PASN_OctetString::Compare (this=0x9d8be60,
> obj=@0xb7eccdb0) at ../../ptclib/asner.cxx:1420
>         other = (const PASN_OctetString &) @0x0: {<PASN_ConstrainedObject> =
> {<PASN_Object> = {<PObject> = {
>         _vptr.PObject = 0x0}, extendable = 0, tagClass =
> PASN_Object::UniversalTagClass, tag = 0},
>     constraint = PASN_Object::Unconstrained, lowerLimit = 0, upperLimit =
> 0},
>   value = {<PBaseArray<BYTE>> = {<PAbstractArray> = {<PContainer> =
> {<PObject> = {_vptr.PObject = 0x0}, reference = 0x0},
>         elementSize = 0, theArray = 0x0, allocatedDynamically = 0}, <No data
> fields>}, <No data fields>}}
> #2  0x0044a14d in H225_CallIdentifier::Compare (this=0x9d8bdd0,
> obj=@0xb7eccd20) at h225_1.cxx:3102
>         other = (const H225_CallIdentifier &) @0xb7eccd20: {<PASN_Sequence>
> = {<PASN_Object> = {<PObject> = {
>         _vptr.PObject = 0x878768}, extendable = 0, tagClass =
> PASN_Object::UniversalTagClass, tag = 18},
>     fields = {<PArrayObjects> = {<PCollection> = {<PContainer> = {<PObject>
> = {_vptr.PObject = 0x2},
>             reference = 0x0}, <No data fields>}, theArray = 0x4}, <No data
> fields>},
>     optionMap = {<PASN_ConstrainedObject> = {<PASN_Object> = {<PObject> =
> {_vptr.PObject = 0xea3e08},
>           extendable = 165201232, tagClass =
> PASN_Object::ApplicationTagClass, tag = 165201216},
>         constraint = PASN_Object::PartiallyConstrained, lowerLimit =
> 135722768, upperLimit = 165201248}, totalBits = 1,
>       bitData = {<PBaseArray<BYTE>> = {<PAbstractArray> = {<PContainer> =
> {<PObject> = {_vptr.PObject = 0x9d8c570},
>               reference = 0x1}, elementSize = 15117609, theArray = 0xb "",
>             allocatedDynamically = 4}, <No data fields>}, <No data
> fields>}}, knownExtensions = 4, totalExtensions = 4,
>     extensionMap = {<PASN_ConstrainedObject> = {<PASN_Object> = {<PObject> =
> {_vptr.PObject = 0x8171d10}, extendable = 1,
>           tagClass = PASN_Object::UniversalTagClass, tag = 16}, constraint =
> 135645320, lowerLimit = 165201280,
>         upperLimit = 165201296}, totalBits = 135734880,
>       bitData = {<PBaseArray<BYTE>> = {<PAbstractArray> = {<PContainer> =
> {<PObject> = {_vptr.PObject = 0x0},
>               reference = 0x0}, elementSize = 3, theArray = 0x2 "",
>             allocatedDynamically = 1}, <No data fields>}, <No data
> fields>}}, endBasicEncoding = 1},
>   m_guid = {<PASN_OctetString> = {<PASN_ConstrainedObject> = {<PASN_Object>
> = {<PObject> = {_vptr.PObject = 0x1},
>           extendable = 135728008, tagClass = 165068888, tag = 1}, constraint
> = 165068920, lowerLimit = 1, upperLimit = 0},
>       value = {<PBaseArray<BYTE>> = {<PAbstractArray> = {<PContainer> =
> {<PObject> = {_vptr.PObject = 0x0},
>               reference = 0x8172660}, elementSize = 0, theArray = 0x0,
>             allocatedDynamically = 3}, <No data fields>}, <No data
> fields>}}, <No data fields>}}
>         result = 14992308
> #3  0x0809f8d6 in CallRec::CompareCallId (this=0x1, CallId=0xb7eccd20)
>     at /usr/local/mmsvc/build/ptlib/include/ptlib/object.h:1549
> No locals.
> #4  0x08091894 in CallTable::FindCallRec (this=0x9d5fe98,
> CallId=@0xb7eccd20)
>     at
> /usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/bits/stl_
> function.h:680
> No locals.
> #5  0x080fa9c0 in CallSignalSocket::OnH450CallTransfer (this=0xb77082a8,
> ep=@0xb7ecd200, argument=0x9d92390)
>     at ProxyChannel.cxx:2516
>         remoteParty = {<PCharArray> = {<PBaseArray<char>> =
> {<PAbstractArray> = {<PContainer> = {<PObject> = {
> ---Type <return> to continue, or q <return> to quit---
>             _vptr.PObject = 0xea3e08}, reference = 0x9d95c48}, elementSize =
> 1, theArray = 0x9d95c38 "100",
>         allocatedDynamically = 1}, <No data fields>}, <No data fields>}, <No
> data fields>}
>         callIdentifier = Variable "callIdentifier" is not available.
> (gdb)


-- 
Jan Willamowius, jan@xxxxxxxxxxxxxx, http://www.gnugk.org/

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________________

Posting: mailto:Openh323gk-users@xxxxxxxxxxxxxxxxxxxxx
Archive: http://sourceforge.net/mailarchive/forum.php?forum_name=openh323gk-users
Unsubscribe: http://lists.sourceforge.net/lists/listinfo/openh323gk-users
Homepage: http://www.gnugk.org/

[Index of Archives]     [SIP]     [Open H.323]     [Gnu Gatekeeper]     [Asterisk PBX]     [ISDN Cause Codes]     [Yosemite News]

  Powered by Linux