On Wed, Jun 05, 2019 at 12:32:40PM +0300, Igor Ryzhov wrote:
> 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.

Could we get a more detailed description of this bug? A description of
the simplified scenario / situation that help you found it would help
here.

Thanks.

> 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