Skip to contentSkip to conversation

Patch "Input: gtco - fix crash on detecting device without endpoints" has been added to the 4.5-stable tree

PATCH [email protected] 1 participant 1 message May 1, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

Input: gtco - fix crash on detecting device without endpoints

to the 4.5-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
input-gtco-fix-crash-on-detecting-device-without-endpoints.patch
and it can be found in the queue-4.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 162f98dea487206d9ab79fc12ed64700667a894d Mon Sep 17 00:00:00 2001

From: Vladis Dronov <[email protected]>
Date: Thu, 31 Mar 2016 10:53:42 -0700
Subject: Input: gtco - fix crash on detecting device without endpoints

From: Vladis Dronov <[email protected]>

commit 162f98dea487206d9ab79fc12ed64700667a894d upstream.

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

---
 drivers/input/tablet/gtco.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
drivers/input/tablet/gtco.c +9 -1
@@ -858,6 +858,14 @@ static int gtco_probe(struct usb_interfa
 		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
@@ -879,7 +887,7 @@ static int gtco_probe(struct usb_interfa
 	 * HID report descriptor
 	 */
 	if (usb_get_extra_descriptor(usbinterface->cur_altsetting,
-				     HID_DEVICE_TYPE, &hid_desc) != 0){
+				     HID_DEVICE_TYPE, &hid_desc) != 0) {
 		dev_err(&usbinterface->dev,
 			"Can't retrieve exta USB descriptor to get hid report descriptor length\n");
 		error = -EIO;

Patches currently in stable-queue which might be from [email protected] are

queue-4.5/usbvision-revert-commit-588afcc1.patch queue-4.5/input-gtco-fix-crash-on-detecting-device-without-endpoints.patch