All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alan Stern <stern@rowland.harvard.edu>
To: Haimin Zhang <tcs.kernel@gmail.com>
Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Haimin Zhang <tcs_kernel@tencent.com>,
	TCS Robot <tcs_robot@tencent.com>
Subject: Re: [PATCH] USB:  array-index-out-of-bounds in ehci_brcm_hub_control
Date: Tue, 2 Nov 2021 11:25:27 -0400	[thread overview]
Message-ID: <20211102152527.GC1490038@rowland.harvard.edu> (raw)
In-Reply-To: <20211102074446.87107-1-tcs_kernel@tencent.com>

On Tue, Nov 02, 2021 at 03:44:46PM +0800, Haimin Zhang wrote:
> There isn't enough check parameter `wIndex` in the function 
> `ehci_brcm_hub_control`;due to the size of array `port_status`
> is 15, so it may lead to out of bounds.
> 
> Signed-off-by: Haimin Zhang <tcs_kernel@tencent.com>
> Reported-by: TCS Robot <tcs_robot@tencent.com>
> ---
>  drivers/usb/host/ehci-brcm.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/host/ehci-brcm.c b/drivers/usb/host/ehci-brcm.c
> index d3626bfa966b..4ca3eb9fcda9 100644
> --- a/drivers/usb/host/ehci-brcm.c
> +++ b/drivers/usb/host/ehci-brcm.c
> @@ -63,7 +63,8 @@ static int ehci_brcm_hub_control(
>  	unsigned long flags;
>  	int retval, irq_disabled = 0;
>  
> -	status_reg = &ehci->regs->port_status[(wIndex & 0xff) - 1];
> +	if (wIndex && wIndex <= ports)
> +		status_reg = &ehci->regs->port_status[(wIndex & 0xff) - 1];

This isn't quite right because it won't work properly if the upper byte 
of wIndex is nonzero.  You should do something like:

	u32 temp;

	temp = (wIndex & 0xff) - 1;
	if (temp < ports)
		status_reg = &ehci->regs->port_status[temp];

Alan Stern

      reply	other threads:[~2021-11-02 15:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-02  7:44 [PATCH] USB: array-index-out-of-bounds in ehci_brcm_hub_control Haimin Zhang
2021-11-02 15:25 ` Alan Stern [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=20211102152527.GC1490038@rowland.harvard.edu \
    --to=stern@rowland.harvard.edu \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=tcs.kernel@gmail.com \
    --cc=tcs_kernel@tencent.com \
    --cc=tcs_robot@tencent.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.