Commit 53003cf1 authored by Johan Hovold's avatar Johan Hovold Committed by Yuan Can
Browse files

Input: aiptek - fix endpoint sanity check

stable inclusion
from stable-v4.19.100
commit d6ca8b03fd808b0fa05ced36b6a5e75a337fad8d
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IADGSO
CVE: CVE-2022-48836

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=d6ca8b03fd808b0fa05ced36b6a5e75a337fad8d



--------------------------------

commit 3111491f upstream.

The driver was checking the number of endpoints of the first alternate
setting instead of the current one, something which could lead to the
driver binding to an invalid interface.

This in turn could cause the driver to misbehave or trigger a WARN() in
usb_submit_urb() that kernels with panic_on_warn set would choke on.

Fixes: 8e20cf2b ("Input: aiptek - fix crash on detecting device without endpoints")
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Acked-by: default avatarVladis Dronov <vdronov@redhat.com>
Link: https://lore.kernel.org/r/20191210113737.4016-3-johan@kernel.org


Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarYuan Can <yuancan@huawei.com>
parent 0f07963f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1815,14 +1815,14 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id)
	input_set_abs_params(inputdev, ABS_WHEEL, AIPTEK_WHEEL_MIN, AIPTEK_WHEEL_MAX - 1, 0, 0);

	/* Verify that a device really has an endpoint */
	if (intf->altsetting[0].desc.bNumEndpoints < 1) {
	if (intf->cur_altsetting->desc.bNumEndpoints < 1) {
		dev_err(&intf->dev,
			"interface has %d endpoints, but must have minimum 1\n",
			intf->altsetting[0].desc.bNumEndpoints);
			intf->cur_altsetting->desc.bNumEndpoints);
		err = -EINVAL;
		goto fail3;
	}
	endpoint = &intf->altsetting[0].endpoint[0].desc;
	endpoint = &intf->cur_altsetting->endpoint[0].desc;

	/* Go set up our URB, which is called when the tablet receives
	 * input.