]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commit
netfilter: nf_conntrack_sip: fix Content-Length u32 truncation in sip_help_tcp()
authorLukas Johannes Möller <research@johannes-moeller.dev>
Tue, 10 Mar 2026 21:49:01 +0000 (21:49 +0000)
committerFlorian Westphal <fw@strlen.de>
Fri, 13 Mar 2026 14:31:14 +0000 (15:31 +0100)
commitfbce58e719a17aa215c724473fd5baaa4a8dc57c
tree1af7b9ef58c64b66f30e26b8c7b97bc05af72e27
parentf900e1d77ee0ef87bfb5ab3fe60f0b3d8ad5ba05
netfilter: nf_conntrack_sip: fix Content-Length u32 truncation in sip_help_tcp()

sip_help_tcp() parses the SIP Content-Length header with
simple_strtoul(), which returns unsigned long, but stores the result in
unsigned int clen.  On 64-bit systems, values exceeding UINT_MAX are
silently truncated before computing the SIP message boundary.

For example, Content-Length 4294967328 (2^32 + 32) is truncated to 32,
causing the parser to miscalculate where the current message ends.  The
loop then treats trailing data in the TCP segment as a second SIP
message and processes it through the SDP parser.

Fix this by changing clen to unsigned long to match the return type of
simple_strtoul(), and reject Content-Length values that exceed the
remaining TCP payload length.

Fixes: f5b321bd37fb ("netfilter: nf_conntrack_sip: add TCP support")
Signed-off-by: Lukas Johannes Möller <research@johannes-moeller.dev>
Signed-off-by: Florian Westphal <fw@strlen.de>
net/netfilter/nf_conntrack_sip.c