Skip to content

Commit f364c57

Browse files
JoseExpositoJiri Kosina
authored andcommitted
HID: hid-uclogic-params: Invalid parameter check in uclogic_params_init
The function performs a check on its input parameters, however, the hdev parameter is used before the check. Initialize the stack variables after checking the input parameters to avoid a possible NULL pointer dereference. Fixes: 9614219 ("HID: uclogic: Extract tablet parameter discovery into a module") Addresses-Coverity-ID: 1443831 ("Null pointer dereference") Signed-off-by: José Expósito <jose.exposito89@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
1 parent 13251ce commit f364c57

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

drivers/hid/hid-uclogic-params.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -834,10 +834,10 @@ int uclogic_params_init(struct uclogic_params *params,
834834
struct hid_device *hdev)
835835
{
836836
int rc;
837-
struct usb_device *udev = hid_to_usb_dev(hdev);
838-
__u8 bNumInterfaces = udev->config->desc.bNumInterfaces;
839-
struct usb_interface *iface = to_usb_interface(hdev->dev.parent);
840-
__u8 bInterfaceNumber = iface->cur_altsetting->desc.bInterfaceNumber;
837+
struct usb_device *udev;
838+
__u8 bNumInterfaces;
839+
struct usb_interface *iface;
840+
__u8 bInterfaceNumber;
841841
bool found;
842842
/* The resulting parameters (noop) */
843843
struct uclogic_params p = {0, };
@@ -848,6 +848,11 @@ int uclogic_params_init(struct uclogic_params *params,
848848
goto cleanup;
849849
}
850850

851+
udev = hid_to_usb_dev(hdev);
852+
bNumInterfaces = udev->config->desc.bNumInterfaces;
853+
iface = to_usb_interface(hdev->dev.parent);
854+
bInterfaceNumber = iface->cur_altsetting->desc.bInterfaceNumber;
855+
851856
/*
852857
* Set replacement report descriptor if the original matches the
853858
* specified size. Otherwise keep interface unchanged.

0 commit comments

Comments
 (0)