Bug#769108: asterisk: rr_copy array too small for some record-route headers
Dirk Teurlings - SIGNET B.V.
dteurlings at signet.nl
Tue Nov 11 09:56:34 UTC 2014
Package: asterisk
Version: 1:1.8.13.1~dfsg1-3+deb7u3
Severity: normal
Dear Maintainer,
Connecting with Microsoft Lync through one or more SIP proxies fails
when the Record-Route value exceeds 256 characters in length. Asterisk's
log shows the following warning message:
[Nov 10 16:11:04] WARNING[22109]: sip/reqresp_parser.c:1070
get_in_brackets_full: No closing bracket found in
'<sip:192.168.10.2;r2=on;lr;ftag=as36b4c879;vsf=AAAAAAAAAAA'
where the complete Record-Route was:
<sip:127.1.2.3;line=sr-EcmQ.7qAr7xCqCtAi7V9q7qy.13CnXJzETMC8bByn1ehE7xMPcthPLxh6-3R6zBREzEzianBn7eQ.16z67Bwusjwusjwusjwusjwusjwusjwusjwu2iY3smwsaAQdBjXOKjw3-RgsaElrdl2OXuM67qAr7YU67KhPajyogmmEQ**>,<sip:192.168.10.2;r2=on;lr;ftag=as736f5b00;vsf=AAAAAAAAAAAAAAAAAAAAAABCUEIARlpOQVhAAFxWRg--;did=f31.5bf1;nat=yes>.
As you can see it cuts the Record-Route string short at exactly 256 chars.
Looking into this I found that in chan_sip.c in function build_route
there is a definition of 'char rr_copy[256]' (line 14252). This is too
small as you can see. My proposed fix would be to enlarge this field to
a bigger value. For now I have set mine to 8192. This completely
resolves the issue.
-- System Information:
Debian Release: 7.7
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
--
Met vriendelijke groet,
Dirk Teurlings BICT
Signet B.V.
More information about the Pkg-voip-maintainers
mailing list