From: Matthias Urlichs Date: Tue, 11 Apr 2006 03:01:44 +0000 (+0200) Subject: [PATCH] Overrun in option-card USB driver X-Git-Tag: v2.6.17-rc2~108 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6dde432553551ae036aae12c2b940677d36c9a5b;p=linux-2.6 [PATCH] Overrun in option-card USB driver Since the arrays are declared as in_urbs[N_IN_URB] and out_urbs[N_OUT_URB], both for loops go one over the end of the array. This fixes coverity id #555. Signed-off-by: Eric Sesterhenn Signed-Off-By: Matthias Urlichs Signed-Off-By: Linus Torvalds --- diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 495db5755d..5cf2b80add 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -28,6 +28,7 @@ 2005-09-10 v0.4.3 added HUAWEI E600 card and Audiovox AirCard 2005-09-20 v0.4.4 increased recv buffer size: the card sometimes wants to send >2000 bytes. + 2006-04-10 v0.4.2 fixed two array overrun errors :-/ Work sponsored by: Sigos GmbH, Germany @@ -582,14 +583,14 @@ static void option_setup_urbs(struct usb_serial *serial) portdata = usb_get_serial_port_data(port); /* Do indat endpoints first */ - for (j = 0; j <= N_IN_URB; ++j) { + for (j = 0; j < N_IN_URB; ++j) { portdata->in_urbs[j] = option_setup_urb (serial, port->bulk_in_endpointAddress, USB_DIR_IN, port, portdata->in_buffer[j], IN_BUFLEN, option_indat_callback); } /* outdat endpoints */ - for (j = 0; j <= N_OUT_URB; ++j) { + for (j = 0; j < N_OUT_URB; ++j) { portdata->out_urbs[j] = option_setup_urb (serial, port->bulk_out_endpointAddress, USB_DIR_OUT, port, portdata->out_buffer[j], OUT_BUFLEN, option_outdat_callback);