Skip to contentSkip to conversation

media: gspaca: check pointer against NULL before using it in create_urbs()

PATCH In review Ethan Zhao 3 participants 3 messages Jan 7, 2014 – Jan 10, 2014

Subsystems (2)
lore
Share & tools
lore

Ethan Zhao

author
#0 lore raw

PATCH 1/1 media: gspaca: check pointer against NULL before using it in create_urbs()

function alt_xfer() may return NULL, should check its return value passed into create_urbs() as parameter.

gspca_init_transfer()
{
... ...
ret = create_urbs(gspca_dev,alt_xfer(&intf->altsetting[alt], xfer)); ... ...
}

---
 drivers/media/usb/gspca/gspca.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/media/usb/gspca/gspca.c +2 -0
index 048507b..eb45bc0 100644
@@ -761,6 +761,8 @@ static int create_urbs(struct gspca_dev *gspca_dev,
 	struct urb *urb;
 	int n, nurbs, i, psize, npkt, bsize;
 
+	if (!ep)
+		return -EINVAL;
 	/* calculate the packet size and the number of packets */
 	psize = le16_to_cpu(ep->desc.wMaxPacketSize);
 
Signature · 1 line
1.8.3.4 (Apple Git-47)
#1 lore raw

Cc to linux-media and Hans de Goede (gspca maintainer).

Regards,

Hans

Quoted 29 lines · Ethan Zhao

function alt_xfer() may return NULL, should check its return value passed into create_urbs() as parameter.

gspca_init_transfer()
{
... ...
ret = create_urbs(gspca_dev,alt_xfer(&intf->altsetting[alt], xfer)); ... ...
}

---
 drivers/media/usb/gspca/gspca.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/media/usb/gspca/gspca.c +2 -0
index 048507b..eb45bc0 100644
@@ -761,6 +761,8 @@ static int create_urbs(struct gspca_dev *gspca_dev,
 	struct urb *urb;
 	int n, nurbs, i, psize, npkt, bsize;
 
+	if (!ep)
+		return -EINVAL;
 	/* calculate the packet size and the number of packets */
 	psize = le16_to_cpu(ep->desc.wMaxPacketSize);
 
#2 lore raw

Hi,

Thanks for the patch, but the return value is already checked earlier on when building the ep_tb table, so it can never return NULL here.

Regards,

Hans

Quoted 36 lines · Hans Verkuil

Cc to linux-media and Hans de Goede (gspca maintainer).

Regards,

Hans

Quoted 29 lines · Ethan Zhao

function alt_xfer() may return NULL, should check its return value passed into create_urbs() as parameter.

gspca_init_transfer()
{
... ...
ret = create_urbs(gspca_dev,alt_xfer(&intf->altsetting[alt], xfer)); ... ...
}

---
  drivers/media/usb/gspca/gspca.c | 2 ++
  1 file changed, 2 insertions(+)
drivers/media/usb/gspca/gspca.c +2 -0
index 048507b..eb45bc0 100644
@@ -761,6 +761,8 @@ static int create_urbs(struct gspca_dev *gspca_dev,
  	struct urb *urb;
  	int n, nurbs, i, psize, npkt, bsize;
 
+	if (!ep)
+		return -EINVAL;
  	/* calculate the packet size and the number of packets */
  	psize = le16_to_cpu(ep->desc.wMaxPacketSize);