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

Peter Krempa pkrempa at redhat.com
Thu Jan 28 10:44:20 UTC 2021


On Thu, Jan 28, 2021 at 11:24:36 +0100, Tim Wiederhake wrote:
> 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;

In this case an error wouldn't be reported any more.

> +
> +    if (virStrToLong_i(str, NULL, base, value) < 0) {
>          virReportError(VIR_ERR_INTERNAL_ERROR,
>                         _("Failed to convert '%s' to int"), str);

while here it was

>          return -1;
> -- 
> 2.26.2
> 




More information about the libvir-list mailing list