Subject: Re: [PATCH] nfc: nci: assert requested protocol is valid

From: Jeremy Cline <[email-masked]>
Date: Thu, 7 Sep 2023 21:01:06 -0400

On Thu, Sep 07, 2023 at 04:41:12PM +0200, Simon Horman wrote:
> Cc "John W. Linville" <[email-masked]>
>    Ilan Elias <[email-masked]>
>    Dmitry Vyukov <[email-masked]>
>    Lin Ma <[email-masked]>
> 
> On Wed, Sep 06, 2023 at 07:33:47PM -0400, Jeremy Cline wrote:
> > The protocol is used in a bit mask to determine if the protocol is
> > supported. Assert the provided protocol is less than the maximum
> > defined so it doesn't potentially perform a shift-out-of-bounds and
> > provide a clearer error for undefined protocols vs unsupported ones.
> > 
> > Fixes: 6a2968aaf50c ("NFC: basic NCI protocol implementation")
> > Reported-and-tested-by: [email-masked]
> > Closes: https://syzkaller.appspot.com/bug?extid=0839b78e119aae1fec78
> > Signed-off-by: Jeremy Cline <[email-masked]>
> 
> Hi Jeremy,
> 
> As a bug fix, with a Fixes tag, I'm assuming that this targets 'net'.
> As opposed to 'net-next'.

Yeah, that's fine, whatever the maintainers think is best works for me.
I'm an infrequent contributor, at best.

> 
> There is probably no need to repost for this, but in future please
> bear in mind the practice of specifying the target tree in
> the subject of Networking patches.
> 
>    Subject: [PATCH net] ...
> 

I'll try to keep that in mind if I send other Networking patches.

> Also, please include addresses indicated by the following in the CC list.
> 
>    get_maintainer.pl --min-percent 25 x.patch
> 

Likewise I'll try to remember this particular version if I send any more
network patches.

> The above notwithstanding, this looks good to me.
> 
> Reviewed-by: Simon Horman <[email-masked]>
> 

Thanks!

- Jeremy

> > ---
> >  net/nfc/nci/core.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c
> > index fff755dde30d..6c9592d05120 100644
> > --- a/net/nfc/nci/core.c
> > +++ b/net/nfc/nci/core.c
> > @@ -909,6 +909,11 @@ static int nci_activate_target(struct nfc_dev *nfc_dev,
> >  		return -EINVAL;
> >  	}
> >  
> > +	if (protocol >= NFC_PROTO_MAX) {
> > +		pr_err("the requested nfc protocol is invalid\n");
> > +		return -EINVAL;
> > +	}
> > +
> >  	if (!(nci_target->supported_protocols & (1 << protocol))) {
> >  		pr_err("target does not support the requested protocol 0x%x\n",
> >  		       protocol);
> > -- 
> > 2.41.0
> > 
> >