[libvirt PATCH 06/11] udevGetIntSysfsAttr: Return -1 for missing attributes

Tim Wiederhake twiederh at redhat.com
Thu Jan 28 10:24:36 UTC 2021


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 at redhat.com>
---
 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




More information about the libvir-list mailing list