forked from mirrors/linux
		
	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:
		
							parent
							
								
									3569843a2b
								
							
						
					
					
						commit
						c63fe8f6ca
					
				
					 1 changed files with 4 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue