All of lore.kernel.org
 help / color / mirror / Atom feed
From: Len Baker <len.baker@gmx.com>
To: Brian Norris <briannorris@chromium.org>, Pkshih <pkshih@realtek.com>
Cc: Len Baker <len.baker@gmx.com>,
	Yan-Hsuan Chuang <tony0620emma@gmail.com>,
	Kalle Valo <kvalo@codeaurora.org>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Stanislaw Gruszka <sgruszka@redhat.com>,
	"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH] rtw88: Fix out-of-bounds write
Date: Fri, 16 Jul 2021 17:08:32 +0200	[thread overview]
Message-ID: <20210716150832.GA3963@titan> (raw)
In-Reply-To: <CA+ASDXOC_dqhf84kP4LsbenJuqeDyKcNFj=EaemrvfJy1oZi_Q@mail.gmail.com>

On Mon, Jul 12, 2021 at 11:38:43AM -0700, Brian Norris wrote:
> On Sun, Jul 11, 2021 at 6:43 PM Pkshih <pkshih@realtek.com> wrote:
> > > -----Original Message-----
> > > From: Len Baker [mailto:len.baker@gmx.com]
> > >
> > > In the rtw_pci_init_rx_ring function the "if (len > TRX_BD_IDX_MASK)"
> > > statement guarantees that len is less than or equal to GENMASK(11, 0) or
> > > in other words that len is less than or equal to 4095. However the
> > > rx_ring->buf has a size of RTK_MAX_RX_DESC_NUM (defined as 512). This
> > > way it is possible an out-of-bounds write in the for statement due to
> > > the i variable can exceed the rx_ring->buff size.
> > >
> > > Fix it using the ARRAY_SIZE macro.
> > >
> > > Cc: stable@vger.kernel.org
> > > Addresses-Coverity-ID: 1461515 ("Out-of-bounds write")
>
> Coverity seems to be giving a false warning here. I presume it's
> taking the |len| comparison as proof that |len| might be as large as
> TRX_BD_IDX_MASK, but as noted below, that's not really true; the |len|
> comparison is really just dead code.

I agree.

> > > Fixes: e3037485c68ec ("rtw88: new Realtek 802.11ac driver")
> > > Signed-off-by: Len Baker <len.baker@gmx.com>
>
> > To prevent the 'len' argument from exceeding the array size of rx_ring->buff, I
> > suggest to add another checking statement, like
> >
> >         if (len > ARRAY_SIZE(rx_ring->buf)) {
> >                 rtw_err(rtwdev, "len %d exceeds maximum RX ring buffer\n", len);
> >                 return -EINVAL;
> >         }
>
> That seems like a better idea, if we really need to patch anything.

I think it is reasonable to protect any potencial overflow (for example, if
this function is used in the future with a parameter greater than 512). It
is better to be defensive in this case :)

> > But, I wonder if this a false alarm because 'len' is equal to ARRAY_SIZE(rx_ring->buf)
> > for now.
>
> Or to the point: rtw_pci_init_rx_ring() is only ever called with a
> fixed constant -- RTK_MAX_RX_DESC_NUM (i.e., 512) -- so the alleged
> overflow cannot happen.
>
> Brian

I will send a v2 for review.

Thanks,
Len

      reply	other threads:[~2021-07-16 15:09 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-11 14:16 [PATCH] rtw88: Fix out-of-bounds write Len Baker
2021-07-12  1:43 ` Pkshih
2021-07-12 18:38   ` Brian Norris
2021-07-16 15:08     ` Len Baker [this message]

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=20210716150832.GA3963@titan \
    --to=len.baker@gmx.com \
    --cc=briannorris@chromium.org \
    --cc=davem@davemloft.net \
    --cc=kuba@kernel.org \
    --cc=kvalo@codeaurora.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pkshih@realtek.com \
    --cc=sgruszka@redhat.com \
    --cc=stable@vger.kernel.org \
    --cc=tony0620emma@gmail.com \
    /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.