From 71fb3df9f98ac50d22735927813b5075aae3ee6d Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Thu, 9 Aug 2012 10:08:47 +0000 Subject: [PATCH] --- yaml --- r: 322039 b: refs/heads/master c: f22eb25cf5b1157b29ef88c793b71972efc47143 h: refs/heads/master i: 322037: 22fa7ab656f2e4e2a10924ffe79dc6dc7bb487c9 322035: 4265abc8d44c1df3d600843217f6a8a5b08f78ef 322031: 8d524e078057be8fd44d23f93751939cded7d787 v: v3 --- [refs] | 2 +- trunk/net/ipv4/netfilter/nf_nat_sip.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 3eaa87f8dccd..85107f566f3b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 02b69cbdc2fb2e1bfbfd9ac0c246d7be1b08d3cd +refs/heads/master: f22eb25cf5b1157b29ef88c793b71972efc47143 diff --git a/trunk/net/ipv4/netfilter/nf_nat_sip.c b/trunk/net/ipv4/netfilter/nf_nat_sip.c index eef8f29e8bf8..4ad9cf173992 100644 --- a/trunk/net/ipv4/netfilter/nf_nat_sip.c +++ b/trunk/net/ipv4/netfilter/nf_nat_sip.c @@ -148,7 +148,7 @@ static unsigned int ip_nat_sip(struct sk_buff *skb, unsigned int dataoff, if (ct_sip_parse_header_uri(ct, *dptr, NULL, *datalen, hdr, NULL, &matchoff, &matchlen, &addr, &port) > 0) { - unsigned int matchend, poff, plen, buflen, n; + unsigned int olen, matchend, poff, plen, buflen, n; char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")]; /* We're only interested in headers related to this @@ -163,11 +163,12 @@ static unsigned int ip_nat_sip(struct sk_buff *skb, unsigned int dataoff, goto next; } + olen = *datalen; if (!map_addr(skb, dataoff, dptr, datalen, matchoff, matchlen, &addr, port)) return NF_DROP; - matchend = matchoff + matchlen; + matchend = matchoff + matchlen + *datalen - olen; /* The maddr= parameter (RFC 2361) specifies where to send * the reply. */