Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/dev/usb



 Hi, Jonathan.

(2012/12/12 0:25), Jonathan A. Kollasch wrote:
> On Tue, Dec 11, 2012 at 09:17:32AM +0000, SAITOH Masanobu wrote:
>> Module Name: src
>> Committed By:        msaitoh
>> Date:                Tue Dec 11 09:17:32 UTC 2012
>>
>> Modified Files:
>>      src/sys/dev/usb: ubsa_common.c
>>
>> Log Message:
>> Fix off by one read error.
>>
>>
>> To generate a diff of this commit:
>> cvs rdiff -u -r1.8 -r1.9 src/sys/dev/usb/ubsa_common.c
> 
> Judging by the other usage of UBSA_MAXCONN, it appears it was correct
> before.
> 
>       Jonathan Kollasch


The diff is as follows:

> Index: ubsa_common.c
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/usb/ubsa_common.c,v
> retrieving revision 1.8
> retrieving revision 1.9
> diff -U 9 -r1.8 -r1.9
> --- ubsa_common.c     24 Feb 2012 06:48:25 -0000      1.8
> +++ ubsa_common.c     11 Dec 2012 09:17:31 -0000      1.9
> @@ -99,19 +99,19 @@
>  {
>       usb_device_request_t req;
>       usbd_status err;
>  
>       if (sc->sc_quadumts)
>               req.bmRequestType = UT_WRITE_CLASS_INTERFACE;
>       else
>               req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
>  
> -     if (portno > UBSA_MAXCONN) {
> +     if (portno >= UBSA_MAXCONN) {
>               printf("%s: ubsa_request: invalid port(%d)#\n",
>                       device_xname(sc->sc_dev), portno);
>               return USBD_INVAL; 
>       }
>  
>       req.bRequest = request;
>       USETW(req.wValue, value);
>       USETW(req.wIndex, sc->sc_iface_number[portno]);
>       USETW(req.wLength, 0);


And ubsavar.h says:

> #define UBSA_MAXCONN          3
> 
> struct        ubsa_softc {
>       device_t                sc_dev;         /* base device */
>       usbd_device_handle      sc_udev;        /* USB device */
>       usbd_interface_handle   sc_iface[UBSA_MAXCONN]; /* interface */
> 
>       int                     sc_iface_number[UBSA_MAXCONN];  /* interface 
> number */
>       int                     sc_config_index;        /* USB CONFIG_INDEX */
> 

If we allow portno == 3, sc_iface_number[portno] overruns.

-- 
-----------------------------------------------
                SAITOH Masanobu (msaitoh%execsw.org@localhost
                                 msaitoh%netbsd.org@localhost)


Home | Main Index | Thread Index | Old Index