usb: core: add sanity checks when using bInterfaceClass with new_id
Check if that field is actually used and if so, bail out if it exeeds a u8. Make it also future-proof by not requiring "exactly three" parameters in new_id, but simply "more than two". Signed-off-by: Wolfram Sang <wsa@the-dreams.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
3569843a2b
Коммит
c63fe8f6ca
|
@ -60,7 +60,10 @@ ssize_t usb_store_new_id(struct usb_dynids *dynids,
|
|||
dynid->id.idVendor = idVendor;
|
||||
dynid->id.idProduct = idProduct;
|
||||
dynid->id.match_flags = USB_DEVICE_ID_MATCH_DEVICE;
|
||||
if (fields == 3) {
|
||||
if (fields > 2 && bInterfaceClass) {
|
||||
if (bInterfaceClass > 255)
|
||||
return -EINVAL;
|
||||
|
||||
dynid->id.bInterfaceClass = (u8)bInterfaceClass;
|
||||
dynid->id.match_flags |= USB_DEVICE_ID_MATCH_INT_CLASS;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче