From: Christian Brauner Date: Sat, 9 Feb 2019 10:57:07 +0000 (+0100) Subject: lxc-init: use cleanup macros X-Git-Tag: lxc-3.2.0~142^2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3cf7d8c2b80b6264e1830d41cc9fe84336641688;p=thirdparty%2Flxc.git lxc-init: use cleanup macros Signed-off-by: Christian Brauner --- diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am index ef19df9e0..35b805393 100644 --- a/src/lxc/Makefile.am +++ b/src/lxc/Makefile.am @@ -363,6 +363,7 @@ init_lxc_SOURCES = cmd/lxc_init.c \ compiler.h \ error.h \ initutils.c initutils.h \ + memory_utils.h \ parse.c parse.h \ raw_syscalls.c raw_syscalls.h \ string_utils.c string_utils.h @@ -411,6 +412,7 @@ init_lxc_static_SOURCES = cmd/lxc_init.c \ file_utils.c file_utils.h \ log.c log.h \ macro.h \ + memory_utils.h \ namespace.c namespace.h \ string_utils.c string_utils.h diff --git a/src/lxc/cmd/lxc_init.c b/src/lxc/cmd/lxc_init.c index d9ba40b8d..aca14d64b 100644 --- a/src/lxc/cmd/lxc_init.c +++ b/src/lxc/cmd/lxc_init.c @@ -47,6 +47,7 @@ #include "config.h" #include "error.h" #include "initutils.h" +#include "memory_utils.h" #include "parse.h" #include "raw_syscalls.h" #include "string_utils.h" @@ -100,10 +101,10 @@ static struct arguments my_args = { static void prevent_forking(void) { - FILE *f; - size_t len = 0; - char *line = NULL; + __do_free char *line = NULL; + __do_fclose FILE *f = NULL; char path[PATH_MAX]; + size_t len = 0; f = fopen("/proc/self/cgroup", "r"); if (!f) @@ -138,14 +139,14 @@ static void prevent_forking(void) if (ret < 0 || (size_t)ret >= sizeof(path)) { if (my_args.quiet) fprintf(stderr, "Failed to create string\n"); - goto on_error; + return; } fd = open(path, O_WRONLY); if (fd < 0) { if (my_args.quiet) fprintf(stderr, "Failed to open \"%s\"\n", path); - goto on_error; + return; } ret = write(fd, "1", 1); @@ -153,17 +154,13 @@ static void prevent_forking(void) fprintf(stderr, "Failed to write to \"%s\"\n", path); close(fd); - break; + return; } - -on_error: - free(line); - fclose(f); } static void kill_children(pid_t pid) { - FILE *f; + __do_fclose FILE *f = NULL; char path[PATH_MAX]; int ret; @@ -187,15 +184,12 @@ static void kill_children(pid_t pid) if (fscanf(f, "%d ", &find_pid) != 1) { if (my_args.quiet) fprintf(stderr, "Failed to retrieve pid\n"); - fclose(f); return; } (void)kill_children(find_pid); (void)kill(find_pid, SIGKILL); } - - fclose(f); } static void remove_self(void)