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

From: Jeremy Cline
Date: Thu Sep 07 2023 - 21:01:15 EST


On Thu, Sep 07, 2023 at 04:41:12PM +0200, Simon Horman wrote:
> Cc "John W. Linville" <linville@xxxxxxxxxxxxx>
> Ilan Elias <ilane@xxxxxx>
> Dmitry Vyukov <dvyukov@xxxxxxxxxx>
> Lin Ma <linma@xxxxxxxxxx>
>
> 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: syzbot+0839b78e119aae1fec78@xxxxxxxxxxxxxxxxxxxxxxxxx
> > Closes: https://syzkaller.appspot.com/bug?extid=0839b78e119aae1fec78
> > Signed-off-by: Jeremy Cline <jeremy@xxxxxxxxxx>
>
> 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 <horms@xxxxxxxxxx>
>

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
> >
> >