From: Martin Wilck <mwi...@suse.com>

libdevmapper will most probably not return a UUID for non-existing
maps anyway. But it's cheap to double-check here.

Signed-off-by: Martin Wilck <mwi...@suse.com>
Reviewed-by: Benjamin Marzinski <bmarz...@redhat.com>
---
 libmultipath/devmapper.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
index 248c373..9be82f4 100644
--- a/libmultipath/devmapper.c
+++ b/libmultipath/devmapper.c
@@ -706,12 +706,16 @@ dm_get_prefixed_uuid(const char *name, char *uuid, int 
uuid_len)
 {
        struct dm_task *dmt;
        const char *uuidtmp;
+       struct dm_info info;
        int r = 1;
 
        dmt = libmp_dm_task_create(DM_DEVICE_INFO);
        if (!dmt)
                return 1;
 
+       if (uuid_len > 0)
+               uuid[0] = '\0';
+
        if (!dm_task_set_name (dmt, name))
                goto uuidout;
 
@@ -720,11 +724,13 @@ dm_get_prefixed_uuid(const char *name, char *uuid, int 
uuid_len)
                goto uuidout;
        }
 
+       if (!dm_task_get_info(dmt, &info) ||
+           !info.exists)
+               goto uuidout;
+
        uuidtmp = dm_task_get_uuid(dmt);
        if (uuidtmp)
                strlcpy(uuid, uuidtmp, uuid_len);
-       else
-               uuid[0] = '\0';
 
        r = 0;
 uuidout:
-- 
2.42.0

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel

Reply via email to