2007-09-04 08:24:14

by Micah Gruber

[permalink] [raw]
Subject: [PATCH] Fix a potential NULL pointer dereference in usbat_check_status() in drivers/usb/storage/shuttle_usbat.c

This patch fixes a potential null dereference bug where we dereference us before a null check. This patch simply moves the dereferencing after the null check.

Signed-off-by: Micah Gruber <[email protected]>
---

--- a/drivers/usb/storage/shuttle_usbat.c
+++ b/drivers/usb/storage/shuttle_usbat.c
@@ -187,12 +187,14 @@
*/
static int usbat_check_status(struct us_data *us)
{
- unsigned char *reply = us->iobuf;
+ unsigned char *reply;
int rc;

if (!us)
return USB_STOR_TRANSPORT_ERROR;

+ reply = us->iobuf;
+
rc = usbat_get_status(us, reply);
if (rc != USB_STOR_XFER_GOOD)
return USB_STOR_TRANSPORT_FAILED;


2007-09-04 11:11:24

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH] Fix a potential NULL pointer dereference in usbat_check_status() in drivers/usb/storage/shuttle_usbat.c

On Tue, Sep 04 2007, Micah Gruber wrote:
> This patch fixes a potential null dereference bug where we dereference us before a null check. This patch simply moves the dereferencing after the null check.
>
> Signed-off-by: Micah Gruber <[email protected]>

Be careful with stuff like that, if you actually look at the code, a us
== NULL doesn't seem to be possible (or usbat_flash_transport() would
have oopsed before).

--
Jens Axboe

2007-09-04 20:27:19

by Simon Holm Thøgersen

[permalink] [raw]
Subject: Re: [PATCH] Fix a potential NULL pointer dereference in usbat_check_status() in drivers/usb/storage/shuttle_usbat.c

tir, 04 09 2007 kl. 13:06 +0200, skrev Jens Axboe:
> On Tue, Sep 04 2007, Micah Gruber wrote:
> > This patch fixes a potential null dereference bug where we dereference us before a null check. This patch simply moves the dereferencing after the null check.
> >
> > Signed-off-by: Micah Gruber <[email protected]>
>
> Be careful with stuff like that, if you actually look at the code, a us
> == NULL doesn't seem to be possible (or usbat_flash_transport() would
> have oopsed before).
>
If that is true, then
if (!us)
return USB_STOR_TRANSPORT_ERROR;
is utterly pointless.


Simon Holm Thøgersen

2007-09-04 20:58:43

by Alan Stern

[permalink] [raw]
Subject: Re: [linux-usb-devel] [PATCH] Fix a potential NULL pointer dereference in usbat_check_status() in drivers/usb/storage/shuttle_usbat.c

On Tue, 4 Sep 2007, Simon Holm Th?gersen wrote:

> > tir, 04 09 2007 kl. 13:06 +0200, skrev Jens Axboe:
> > On Tue, Sep 04 2007, Micah Gruber wrote:
> > > This patch fixes a potential null dereference bug where we dereference us before a null check. This patch simply moves the dereferencing after the null check.
> > >
> > > Signed-off-by: Micah Gruber <[email protected]>
> >
> > Be careful with stuff like that, if you actually look at the code, a us
> > == NULL doesn't seem to be possible (or usbat_flash_transport() would
> > have oopsed before).
> >
> If that is true, then
> if (!us)
> return USB_STOR_TRANSPORT_ERROR;
> is utterly pointless.

Indeed, so it is.

Alan Stern

2007-09-04 21:11:17

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH] Fix a potential NULL pointer dereference in usbat_check_status() in drivers/usb/storage/shuttle_usbat.c

On Tue, Sep 04 2007, Simon Holm Th?gersen wrote:
> tir, 04 09 2007 kl. 13:06 +0200, skrev Jens Axboe:
> > On Tue, Sep 04 2007, Micah Gruber wrote:
> > > This patch fixes a potential null dereference bug where we dereference us before a null check. This patch simply moves the dereferencing after the null check.
> > >
> > > Signed-off-by: Micah Gruber <[email protected]>
> >
> > Be careful with stuff like that, if you actually look at the code, a us
> > == NULL doesn't seem to be possible (or usbat_flash_transport() would
> > have oopsed before).
> >
> If that is true, then
> if (!us)
> return USB_STOR_TRANSPORT_ERROR;
> is utterly pointless.

Well that was the point I was trying to make, that test and return
should be deleted instead.

--
Jens Axboe

2007-09-06 22:40:41

by Simon Holm Thøgersen

[permalink] [raw]
Subject: [PATCH] Remove pointless NULL pointer check in drivers/usb/storage/shuttle_usbat.c.

tir, 04 09 2007 kl. 23:06 +0200, skrev Jens Axboe:
> On Tue, Sep 04 2007, Simon Holm Thøgersen wrote:
> > tir, 04 09 2007 kl. 13:06 +0200, skrev Jens Axboe:
> > > On Tue, Sep 04 2007, Micah Gruber wrote:
> > > > This patch fixes a potential null dereference bug where we dereference us before a null check. This patch simply moves the dereferencing after the null check.
> > > >
> > > > Signed-off-by: Micah Gruber <[email protected]>
> > >
> > > Be careful with stuff like that, if you actually look at the code, a us
> > > == NULL doesn't seem to be possible (or usbat_flash_transport() would
> > > have oopsed before).
> > >
> > If that is true, then
> > if (!us)
> > return USB_STOR_TRANSPORT_ERROR;
> > is utterly pointless.
>
> Well that was the point I was trying to make, that test and return
> should be deleted instead.
>
I guess we agree that we want the following then.


If us would ever be NULL, the function would have oopsed already before
the check.

Signed-off-by: Simon Holm Thøgersen <[email protected]>
---

--- a/drivers/usb/storage/shuttle_usbat.c
+++ b/drivers/usb/storage/shuttle_usbat.c
@@ -190,9 +190,6 @@ static int usbat_check_status(struct us_data *us)
unsigned char *reply = us->iobuf;
int rc;

- if (!us)
- return USB_STOR_TRANSPORT_ERROR;
-
rc = usbat_get_status(us, reply);
if (rc != USB_STOR_XFER_GOOD)
return USB_STOR_TRANSPORT_FAILED;


2007-09-10 16:33:25

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH] Remove pointless NULL pointer check in drivers/usb/storage/shuttle_usbat.c.

On Fri, Sep 07 2007, Simon Holm Th?gersen wrote:
> tir, 04 09 2007 kl. 23:06 +0200, skrev Jens Axboe:
> > On Tue, Sep 04 2007, Simon Holm Th?gersen wrote:
> > > tir, 04 09 2007 kl. 13:06 +0200, skrev Jens Axboe:
> > > > On Tue, Sep 04 2007, Micah Gruber wrote:
> > > > > This patch fixes a potential null dereference bug where we dereference us before a null check. This patch simply moves the dereferencing after the null check.
> > > > >
> > > > > Signed-off-by: Micah Gruber <[email protected]>
> > > >
> > > > Be careful with stuff like that, if you actually look at the code, a us
> > > > == NULL doesn't seem to be possible (or usbat_flash_transport() would
> > > > have oopsed before).
> > > >
> > > If that is true, then
> > > if (!us)
> > > return USB_STOR_TRANSPORT_ERROR;
> > > is utterly pointless.
> >
> > Well that was the point I was trying to make, that test and return
> > should be deleted instead.
> >
> I guess we agree that we want the following then.
>
>
> If us would ever be NULL, the function would have oopsed already before
> the check.

Yep, looks much better.

Acked-by: Jens Axboe <[email protected]>

>
> Signed-off-by: Simon Holm Th?gersen <[email protected]>
> ---
>
> --- a/drivers/usb/storage/shuttle_usbat.c
> +++ b/drivers/usb/storage/shuttle_usbat.c
> @@ -190,9 +190,6 @@ static int usbat_check_status(struct us_data *us)
> unsigned char *reply = us->iobuf;
> int rc;
>
> - if (!us)
> - return USB_STOR_TRANSPORT_ERROR;
> -
> rc = usbat_get_status(us, reply);
> if (rc != USB_STOR_XFER_GOOD)
> return USB_STOR_TRANSPORT_FAILED;
>
>

--
Jens Axboe