On 31/08/15(Mon) 19:53, Grant Czajkowski wrote:
> Hi all,
> 
> This patch adds the usb control request validity checks
> already present in ugen(4) to usb(4).

Committed, thanks!

> Index: usb.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/usb/usb.c,v
> retrieving revision 1.107
> diff -u -p -r1.107 usb.c
> --- usb.c     14 Mar 2015 03:38:50 -0000      1.107
> +++ usb.c     31 Aug 2015 19:37:22 -0000
> @@ -622,7 +622,15 @@ usbioctl(dev_t devt, u_long cmd, caddr_t
>                       return (EBADF);
>  
>               DPRINTF(("usbioctl: USB_REQUEST addr=%d len=%d\n", addr, len));
> -             if (len < 0 || len > 32768)
> +             /* Avoid requests that would damage the bus integrity. */
> +             if ((ur->ucr_request.bmRequestType == UT_WRITE_DEVICE &&
> +                  ur->ucr_request.bRequest == UR_SET_ADDRESS) ||
> +                 (ur->ucr_request.bmRequestType == UT_WRITE_DEVICE &&
> +                  ur->ucr_request.bRequest == UR_SET_CONFIG) ||
> +                 (ur->ucr_request.bmRequestType == UT_WRITE_INTERFACE &&
> +                  ur->ucr_request.bRequest == UR_SET_INTERFACE))
> +                     return (EINVAL);
> +             if (len < 0 || len > 32767)
>                       return (EINVAL);
>               if (addr < 0 || addr >= USB_MAX_DEVICES)
>                       return (EINVAL);
> 

Reply via email to