From: Daniel Golle Date: Thu, 6 Aug 2020 14:34:27 +0000 (+0100) Subject: jail: fix freeing cgroups avl X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=ab55357dfe5bd0edac0b9556a83e69814df791b1;p=project%2Fprocd.git jail: fix freeing cgroups avl Signed-off-by: Daniel Golle --- diff --git a/jail/cgroups.c b/jail/cgroups.c index 2317472..97583b3 100644 --- a/jail/cgroups.c +++ b/jail/cgroups.c @@ -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)); diff --git a/jail/jail.c b/jail/jail.c index 42b2d3f..0a2f978 100644 --- a/jail/jail.c +++ b/jail/jail.c @@ -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);