If "udevGetDeviceSysfsAttr()" returns NULL, "udevGetIntSysfsAttr" would return "0", indicating success, without writing to "value". This was found by clang-tidy's "clang-analyzer-core.UndefinedBinaryOperatorResult" check in function "udevProcessCCW", flagging a read on the potentially uninitialized variable "online". Signed-off-by: Tim Wiederhake <twiederh@xxxxxxxxxx> --- src/node_device/node_device_udev.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index 55a2731681..d5a12bab0e 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -254,7 +254,10 @@ udevGetIntSysfsAttr(struct udev_device *udev_device, str = udevGetDeviceSysfsAttr(udev_device, attr_name); - if (str && virStrToLong_i(str, NULL, base, value) < 0) { + if (!str) + return -1; + + if (virStrToLong_i(str, NULL, base, value) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to convert '%s' to int"), str); return -1; -- 2.26.2