]> git.proxmox.com Git - mirror_lxc.git/commitdiff
conf: prevent UAF in lxc_clear_limits()
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 26 Mar 2021 15:42:57 +0000 (16:42 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 26 Mar 2021 15:42:57 +0000 (16:42 +0100)
Link: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32532
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/conf.c

index d309e244339b9aeb6f26832257d61fdd10db4650..c15a87658d2458d25f0781d603d1debd4675d812 100644 (file)
@@ -3742,7 +3742,7 @@ int lxc_clear_limits(struct lxc_conf *c, const char *key)
        else if (strnequal(key, "lxc.prlimit.", STRLITERALLEN("lxc.prlimit.")))
                k = key + STRLITERALLEN("lxc.prlimit.");
        else
-               return -1;
+               return ret_errno(EINVAL);
 
        lxc_list_for_each_safe (it, &c->limits, next) {
                struct lxc_limit *lim = it->elem;
@@ -3751,11 +3751,14 @@ int lxc_clear_limits(struct lxc_conf *c, const char *key)
                        continue;
 
                lxc_list_del(it);
-               free(lim->resource);
+
+               free_disarm(lim->resource);
                free(lim);
-               free(it);
        }
 
+       if (all)
+               lxc_list_init(&c->limits);
+
        return 0;
 }