Input: gtco - fix crash on detecting device without endpoints
The gtco driver expects at least one valid endpoint. If given malicious descriptors that specify 0 for the number of endpoints, it will crash in the probe function. Ensure there is at least one endpoint on the interface before using it. Also let's fix a minor coding style issue. The full correct report of this issue can be found in the public Red Hat Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1283385 Reported-by: Ralf Spenneberg <ralf@spenneberg.net> Signed-off-by: Vladis Dronov <vdronov@redhat.com> Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
		
							parent
							
								
									d314e9e80c
								
							
						
					
					
						commit
						162f98dea4
					
				| @ -858,6 +858,14 @@ static int gtco_probe(struct usb_interface *usbinterface, | ||||
| 		goto err_free_buf; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Sanity check that a device has an endpoint */ | ||||
| 	if (usbinterface->altsetting[0].desc.bNumEndpoints < 1) { | ||||
| 		dev_err(&usbinterface->dev, | ||||
| 			"Invalid number of endpoints\n"); | ||||
| 		error = -EINVAL; | ||||
| 		goto err_free_urb; | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * The endpoint is always altsetting 0, we know this since we know | ||||
| 	 * this device only has one interrupt endpoint | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user