netfilter: nf_ct_sip: fix IPv6 address parsing
authorPatrick McHardy <kaber@trash.net>
Thu, 9 Aug 2012 10:08:46 +0000 (10:08 +0000)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 10 Aug 2012 09:53:11 +0000 (11:53 +0200)
commit02b69cbdc2fb2e1bfbfd9ac0c246d7be1b08d3cd
tree6ecc2c345b62d1d70463d3cf3f00b02051cadf8c
parente9324b2ce656e1910d2385b9b47a2f926456dbe3
netfilter: nf_ct_sip: fix IPv6 address parsing

Within SIP messages IPv6 addresses are enclosed in square brackets in most
cases, with the exception of the "received=" header parameter. Currently
the helper fails to parse enclosed addresses.

This patch:

- changes the SIP address parsing function to enforce square brackets
  when required, and accept them when not required but present, as
  recommended by RFC 5118.

- adds a new SDP address parsing function that never accepts square
  brackets since SDP doesn't use them.

With these changes, the SIP helper correctly parses all test messages
from RFC 5118 (Session Initiation Protocol (SIP) Torture Test Messages
for Internet Protocol Version 6 (IPv6)).

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/linux/netfilter/nf_conntrack_sip.h
net/ipv4/netfilter/nf_nat_sip.c
net/netfilter/nf_conntrack_sip.c