summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Golle2020-08-06 14:34:27 +0000
committerDaniel Golle2020-08-06 15:11:22 +0000
commitab55357dfe5bd0edac0b9556a83e69814df791b1 (patch)
tree06b47fc23ef0bf929afc006eb0b748745da91186
parent282ff0c9a610db90993d7f52cd4a19359353663c (diff)
downloadprocd-ab55357dfe5bd0edac0b9556a83e69814df791b1.tar.gz
jail: fix freeing cgroups avl
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-rw-r--r--jail/cgroups.c1
-rw-r--r--jail/jail.c6
2 files changed, 5 insertions, 2 deletions
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);