diff --git a/src/hidapi/linux/hid.c b/src/hidapi/linux/hid.c index 6a0ae9fed..6507dde71 100644 --- a/src/hidapi/linux/hid.c +++ b/src/hidapi/linux/hid.c @@ -219,7 +219,7 @@ parse_uevent_info(const char *uevent, unsigned *bus_type, unsigned short *vendor_id, unsigned short *product_id, char **serial_number_utf8, char **product_name_utf8) { - char *tmp = strdup(uevent); + char *tmp; char *saveptr = NULL; char *line; char *key; @@ -229,6 +229,15 @@ parse_uevent_info(const char *uevent, unsigned *bus_type, int found_serial = 0; int found_name = 0; + if (!uevent) { + return 0; + } + + tmp = strdup(uevent); + if (!tmp) { + return 0; + } + line = strtok_r(tmp, "\n", &saveptr); while (line != NULL) { /* line: "KEY=value" */