]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lxccontainer: improve add_to_array()
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 27 Aug 2021 13:59:39 +0000 (15:59 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 27 Aug 2021 13:59:39 +0000 (15:59 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/lxccontainer.c

index a4168f7773cbf48e7fc39bdb4b7a156dc0e08ccc..0ac5abdc5ca2989a1eb4b0f4dc1988fa2d1db108 100644 (file)
@@ -2260,21 +2260,24 @@ static inline int container_cmp(struct lxc_container **first,
 
 static bool add_to_array(char ***names, char *cname, int pos)
 {
-       char **newnames = (char**)realloc(*names, (pos+1) * sizeof(char *));
-       if (!newnames) {
-               ERROR("Out of memory");
-               return false;
-       }
+       __do_free char *dup_cname = NULL;
+       char **newnames;
 
-       *names = newnames;
-       newnames[pos] = strdup(cname);
-       if (!newnames[pos])
+       dup_cname = strdup(cname);
+       if (!dup_cname)
                return false;
 
+       newnames = realloc(*names, (pos + 1) * sizeof(char *));
+       if (!newnames)
+               return ret_set_errno(false, ENOMEM);
+
+       newnames[pos] = move_ptr(dup_cname);
+
        /* Sort the array as we will use binary search on it. */
        qsort(newnames, pos + 1, sizeof(char *),
              (int (*)(const void *, const void *))string_cmp);
 
+       *names = newnames;
        return true;
 }