From bb67e9b54e609eec2df4382d79cae4e9d50a3748 Mon Sep 17 00:00:00 2001 From: Yaroslav Chvanov Date: Fri, 19 May 2023 23:54:09 +0300 Subject: [PATCH] sinowealth-nubwo: fix incorrect firmware version getting error check If by any chance returned `size` was `0`, it would erroneously return 0, which would do an uninitialized pointer dereference in sinowealthnubwo_probe(). This fixes a convoluted warning by clang-analyze. --- src/driver-sinowealth-nubwo.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/driver-sinowealth-nubwo.c b/src/driver-sinowealth-nubwo.c index 193130c8..34160ae9 100644 --- a/src/driver-sinowealth-nubwo.c +++ b/src/driver-sinowealth-nubwo.c @@ -105,9 +105,12 @@ sinowealth_get_firmware_string(struct ratbag_device *device, char **output) } size = ratbag_hidraw_get_feature_report(device, SINOWEALTHNUBWO_GET_FIRMWARE_CMD_REPORTID, buff, SINOWEALTHNUBWO_GET_FIRMWARE_MSGSIZE); + if (size < 0) { + return size; + } if (size != SINOWEALTHNUBWO_GET_FIRMWARE_MSGSIZE) { log_error(device->ratbag ,"Firmware report reply size mismatch expected %d got %d\n", SINOWEALTHNUBWO_GET_FIRMWARE_MSGSIZE, size); - return size; + return -EIO; } *output = strdup_ascii_only((char *) buff + SINOWEALTHNUBWO_GET_FIRMWARE_MSGOFFSET);