diff options
| author | Daniel Golle | 2020-08-06 14:34:27 +0000 |
|---|---|---|
| committer | Daniel Golle | 2020-08-06 15:11:22 +0000 |
| commit | ab55357dfe5bd0edac0b9556a83e69814df791b1 (patch) | |
| tree | 06b47fc23ef0bf929afc006eb0b748745da91186 | |
| parent | 282ff0c9a610db90993d7f52cd4a19359353663c (diff) | |
| download | procd-ab55357dfe5bd0edac0b9556a83e69814df791b1.tar.gz | |
jail: fix freeing cgroups avl
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
| -rw-r--r-- | jail/cgroups.c | 1 | ||||
| -rw-r--r-- | jail/jail.c | 6 |
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); |