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