jail: fix freeing cgroups avl
authorDaniel Golle <daniel@makrotopia.org>
Thu, 6 Aug 2020 14:34:27 +0000 (15:34 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Thu, 6 Aug 2020 15:11:22 +0000 (16:11 +0100)
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
jail/cgroups.c
jail/jail.c

index 2317472eb28a6d8296c91552748a061d534155ca..97583b3e0e53adca4d074ef78e7692fd970b1037 100644 (file)
@@ -81,6 +81,7 @@ static void cgroups_set(const char *key, const char *val)
 void cgroups_free(void)
 {
        struct cgval *valp, *tmp;
+
        avl_for_each_element_safe(&cgvals, valp, avl, tmp) {
                avl_delete(&cgvals, &valp->avl);
                free((void *)(valp->avl.key));
index 42b2d3ff1b5cd18d87c35358d30360810ebb019b..0a2f978fd9c583e7f75dd0488ff8409fa82e30df 100644 (file)
@@ -243,7 +243,7 @@ static void free_opts(bool parent) {
        char **tmp;
 
        /* we need to keep argv, envp and seccomp filter in child */
-       if (parent) {
+       if (parent) { /* parent-only */
                if (opts.ociseccomp) {
                        free(opts.ociseccomp->filter);
                        free(opts.ociseccomp);
@@ -260,9 +260,10 @@ static void free_opts(bool parent) {
                        free(*(tmp++));
 
                free(opts.envp);
+       } else { /* child-only */
                if (opts.ocibundle)
                        cgroups_free();
-       };
+       }
 
        free_rlimits();
        free_sysctl();
@@ -273,6 +274,7 @@ static void free_opts(bool parent) {
        free(opts.uidmap);
        free(opts.gidmap);
        free(opts.annotations);
+       free(opts.ocibundle);
        free_hooklist(opts.hooks.createRuntime);
        free_hooklist(opts.hooks.createContainer);
        free_hooklist(opts.hooks.startContainer);