From e0a5d47bbef0c79e4589dc6e75244dec99e32262 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Mon, 27 May 2024 16:19:05 +0100 Subject: [PATCH] Guard serial_number access in usbhid_open() to avoid sigfault --- src/usb_hidapi.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/usb_hidapi.c b/src/usb_hidapi.c index 07732ff3..70a75cfc 100644 --- a/src/usb_hidapi.c +++ b/src/usb_hidapi.c @@ -97,14 +97,14 @@ static int usbhid_open(const char *port, union pinfo pinfo, union filedescriptor walk = list; while (walk) { - pmsg_notice("usbhid_open(): found %ls, serno: %ls\n", walk->product_string, walk->serial_number); - size_t slen = wcslen(walk->serial_number); - if (slen >= serlen && wcscmp(walk->serial_number + slen - serlen, wserno) == 0) - { - /* Found matching serial number */ - break; + if(walk->serial_number) { + pmsg_notice("usbhid_open(): found %ls, serno: %ls\n", walk->product_string, walk->serial_number); + size_t slen = wcslen(walk->serial_number); + // Found matching serial number? + if (slen >= serlen && wcscmp(walk->serial_number + slen - serlen, wserno) == 0) + break; + pmsg_debug("usbhid_open(): serial number does not match\n"); } - pmsg_debug("usbhid_open(): serial number does not match\n"); walk = walk->next; } if (walk == NULL) {