ct_sip_next_header and ct_sip_get_header return an absolute
value of matchoff, not a shift from current dataoff.
So dataoff should be assigned matchoff, not incremented by it.

Signed-off-by: Igor Ryzhov <[email protected]>
---
 net/netfilter/nf_conntrack_sip.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/netfilter/nf_conntrack_sip.c b/net/netfilter/nf_conntrack_sip.c
index c30c883c370b..966c5948f926 100644
--- a/net/netfilter/nf_conntrack_sip.c
+++ b/net/netfilter/nf_conntrack_sip.c
@@ -480,7 +480,7 @@ static int ct_sip_walk_headers(const struct nf_conn *ct, 
const char *dptr,
                                return ret;
                        if (ret == 0)
                                break;
-                       dataoff += *matchoff;
+                       dataoff = *matchoff;
                }
                *in_header = 0;
        }
@@ -492,7 +492,7 @@ static int ct_sip_walk_headers(const struct nf_conn *ct, 
const char *dptr,
                        break;
                if (ret == 0)
                        return ret;
-               dataoff += *matchoff;
+               dataoff = *matchoff;
        }
 
        if (in_header)
-- 
2.21.0

Reply via email to