From: Christian Brauner Date: Fri, 27 Aug 2021 13:59:39 +0000 (+0200) Subject: lxccontainer: improve add_to_array() X-Git-Tag: lxc-5.0.0~97^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=587fc64e6ed3d7ba874baebc5a6f5c4e9157896a;p=thirdparty%2Flxc.git lxccontainer: improve add_to_array() Signed-off-by: Christian Brauner --- diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index a4168f777..0ac5abdc5 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -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; }