From: Simon Horman <simon.horman@corigine.com>
To: Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>,
Jozsef Kadlecsik <kadlec@netfilter.org>,
Florian Westphal <fw@strlen.de>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Patrick McHardy <kaber@trash.net>,
"netfilter-devel@vger.kernel.org"
<netfilter-devel@vger.kernel.org>,
"coreteam@netfilter.org" <coreteam@netfilter.org>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"lvc-project@linuxtesting.org" <lvc-project@linuxtesting.org>
Subject: Re: [PATCH] netfilter: nf_conntrack_sip: fix the ct_sip_parse_numerical_param() return value.
Date: Tue, 2 May 2023 16:05:24 +0200 [thread overview]
Message-ID: <ZFEYpNsp/hBEJAGU@corigine.com> (raw)
In-Reply-To: <d0a92686-acc4-4fd8-0505-60a8394d05d8@infotecs.ru>
On Tue, May 02, 2023 at 11:43:19AM +0000, Gavrilov Ilia wrote:
> On 4/28/23 22:24, Simon Horman wrote:
> > On Wed, Apr 26, 2023 at 03:04:31PM +0000, Gavrilov Ilia wrote:
> >> ct_sip_parse_numerical_param() returns only 0 or 1 now.
> >> But process_register_request() and process_register_response() imply
> >> checking for a negative value if parsing of a numerical header parameter
> >> failed. Let's fix it.
> >>
> >> Found by InfoTeCS on behalf of Linux Verification Center
> >> (linuxtesting.org) with SVACE.
> >>
> >> Fixes: 0f32a40fc91a ("[NETFILTER]: nf_conntrack_sip: create signalling expectations")
> >> Signed-off-by: Ilia.Gavrilov <Ilia.Gavrilov@infotecs.ru>
> >
> > Hi Gavrilov,
> >
>
> Hi Simon, thank you for your answer.
>
> > although it is a slightly unusual convention for kernel code,
> > I believe the intention is that this function returns 0 when
> > it fails (to parse) and 1 on success. So I think that part is fine.
> >
> > What seems a bit broken is the way that callers use the return value.
> >
> > 1. The call in process_register_response() looks like this:
> >
> > ret = ct_sip_parse_numerical_param(...)
> > if (ret < 0) {
> > nf_ct_helper_log(skb, ct, "cannot parse expires");
> > return NF_DROP;
> > }
> >
> > But ret can only be 0 or 1, so the error handling is never inoked,
> > and a failure to parse is ignored. I guess failure doesn't occur in
> > practice.
> >
> > I suspect this should be:
> >
> > ret = ct_sip_parse_numerical_param(...)
> > if (!ret) {
> > nf_ct_helper_log(skb, ct, "cannot parse expires");
> > return NF_DROP;
> > }
> >
>
> ct_sip_parse_numerical_param() returns 0 in to cases 1) when the
> parameter 'expires=' isn't found in the header or 2) it's incorrectly set.
> In the first case, the return value should be ignored, since this is a
> normal situation
> In the second case, it's better to write to the log and return NF_DROP,
> or ignore it too, then checking the return value can be removed as
> unnecessary.
Sorry, I think I misunderstood the intention of your patch earlier.
Do I (now) understand correctly that you are proposing a tristate?
a) return 1 if value is found; *val is set
b) return 0 if value is not found; *val is unchanged
c) return -1 on error; *val is undefined
next prev parent reply other threads:[~2023-05-02 14:05 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-26 15:04 [PATCH] netfilter: nf_conntrack_sip: fix the ct_sip_parse_numerical_param() return value Gavrilov Ilia
2023-04-28 19:24 ` Simon Horman
2023-05-02 11:43 ` Gavrilov Ilia
2023-05-02 14:05 ` Simon Horman [this message]
2023-05-02 14:16 ` Gavrilov Ilia
2023-05-02 15:38 ` Simon Horman
2023-06-22 13:55 ` Gavrilov Ilia
2023-06-22 14:43 ` Florian Westphal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZFEYpNsp/hBEJAGU@corigine.com \
--to=simon.horman@corigine.com \
--cc=Ilia.Gavrilov@infotecs.ru \
--cc=coreteam@netfilter.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=fw@strlen.de \
--cc=kaber@trash.net \
--cc=kadlec@netfilter.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lvc-project@linuxtesting.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.