]> sourceware.org Git - lvm2.git/commitdiff
cov: check for dev_iter_create result
authorZdenek Kabelac <zkabelac@redhat.com>
Mon, 29 Jul 2024 14:50:41 +0000 (16:50 +0200)
committerZdenek Kabelac <zkabelac@redhat.com>
Fri, 9 Aug 2024 13:10:18 +0000 (15:10 +0200)
dev_iter_create() may fail in malloc so check
for its error code.

lib/device/dev-cache.c
lib/log/log.h

index 602d9cd0eec4658f611f431d5bb0a91dc3076bf2..5310d8ac4212f9c4ecdb7996e2a17caab3eed5e0 100644 (file)
@@ -899,10 +899,13 @@ static int _insert_dir(const char *dir)
 
 static int _dev_cache_iterate_devs_for_index(struct cmd_context *cmd)
 {
-       struct dev_iter *iter = dev_iter_create(NULL, 0);
+       struct dev_iter *iter;
        struct device *dev = NULL;
        int r = 1;
 
+       if (!(iter = dev_iter_create(NULL, 0)))
+               return_0;
+
        while ((dev = dev_iter_get(NULL, iter)))
                if (!_index_dev_by_vgid_and_lvid(cmd, dev))
                        r = 0;
@@ -1786,9 +1789,12 @@ struct device *dev_cache_get_by_devt(struct cmd_context *cmd, dev_t devt)
 
 struct device *dev_cache_get_by_pvid(struct cmd_context *cmd, const char *pvid)
 {
-       struct dev_iter *iter = dev_iter_create(NULL, 0);
+       struct dev_iter *iter;
        struct device *dev;
 
+       if (!(iter = dev_iter_create(NULL, 0)))
+               return_NULL;
+
        while ((dev = dev_iter_get(NULL, iter)))
                if (!memcmp(dev->pvid, pvid, ID_LEN))
                        break;
@@ -1868,9 +1874,12 @@ const char *dev_name(const struct device *dev)
 bool dev_cache_has_md_with_end_superblock(struct dev_types *dt)
 {
        struct device *dev;
-       struct dev_iter *iter = dev_iter_create(NULL, 0);
+       struct dev_iter *iter;
        bool ret = false;
 
+       if (!(iter = dev_iter_create(NULL, 0)))
+               return_false;
+
        while ((dev = dev_iter_get(NULL, iter)))
                if ((ret = dev_is_md_with_end_superblock(dt, dev)))
                        break;
index b5f05f29b450b343ed5a4843cbbfd0c1ebdeb82c..2e97d7215ab4e5898343fc6a4f0f50fca920a45c 100644 (file)
 
 #define return_0       do { stack; return 0; } while (0)
 #define return_NULL    do { stack; return NULL; } while (0)
+#define return_false   do { stack; return false; } while (0)
 #define return_EINVALID_CMD_LINE \
                        do { stack; return EINVALID_CMD_LINE; } while (0)
 #define return_ECMD_FAILED do { stack; return ECMD_FAILED; } while (0)
This page took 0.038315 seconds and 5 git commands to generate.