X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnspawn%2Fnspawn.c;h=0220ec4b255475bd5fd7d62bf069945f3b253a86;hp=c46f63ba29a4d7ab89bf9dec972e010db18e60e2;hb=ed8b7a3ee55b27a06a54d2dfa39eec5e555e005b;hpb=6b2d0e85dce8762d6d65a97c7c7ae5e81806fe3e diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index c46f63ba2..0220ec4b2 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -380,7 +380,7 @@ static int setup_resolv_conf(const char *dest) { } static int setup_boot_id(const char *dest) { - char *from = NULL, *to = NULL; + char _cleanup_free_ *from = NULL, *to = NULL; sd_id128_t rnd; char as_uuid[37]; int r; @@ -391,21 +391,14 @@ static int setup_boot_id(const char *dest) { * the container gets a new one */ from = strappend(dest, "/dev/proc-sys-kernel-random-boot-id"); - if (!from) { - r = log_oom(); - goto finish; - } - to = strappend(dest, "/proc/sys/kernel/random/boot_id"); - if (!to) { - r = log_oom(); - goto finish; - } + if (!from || !to) + return log_oom(); r = sd_id128_randomize(&rnd); if (r < 0) { log_error("Failed to generate random boot id: %s", strerror(-r)); - goto finish; + return r; } snprintf(as_uuid, sizeof(as_uuid), @@ -416,7 +409,7 @@ static int setup_boot_id(const char *dest) { r = write_one_line_file(from, as_uuid); if (r < 0) { log_error("Failed to write boot id: %s", strerror(-r)); - goto finish; + return r; } if (mount(from, to, "bind", MS_BIND, NULL) < 0) { @@ -426,11 +419,6 @@ static int setup_boot_id(const char *dest) { mount(from, to, "bind", MS_BIND|MS_REMOUNT|MS_RDONLY, NULL); unlink(from); - -finish: - free(from); - free(to); - return r; } @@ -455,18 +443,13 @@ static int copy_devnodes(const char *dest) { NULSTR_FOREACH(d, devnodes) { struct stat st; - char *from = NULL, *to = NULL; + char _cleanup_free_ *from = NULL, *to = NULL; asprintf(&from, "/dev/%s", d); asprintf(&to, "%s/dev/%s", dest, d); if (!from || !to) { - log_error("Failed to allocate devnode path"); - - free(from); - free(to); - - from = to = NULL; + log_oom(); if (r == 0) r = -ENOMEM; @@ -484,7 +467,7 @@ static int copy_devnodes(const char *dest) { } else if (!S_ISCHR(st.st_mode) && !S_ISBLK(st.st_mode)) { - log_error("%s is not a char or block device, cannot copy.", from); + log_error("%s is not a char or block device, cannot copy", from); if (r == 0) r = -EIO; @@ -494,9 +477,6 @@ static int copy_devnodes(const char *dest) { if (r == 0) r = -errno; } - - free(from); - free(to); } umask(u); @@ -506,7 +486,7 @@ static int copy_devnodes(const char *dest) { static int setup_dev_console(const char *dest, const char *console) { struct stat st; - char *to = NULL; + char _cleanup_free_ *to = NULL; int r; mode_t u; @@ -557,14 +537,13 @@ static int setup_dev_console(const char *dest, const char *console) { } finish: - free(to); umask(u); return r; } static int setup_kmsg(const char *dest, int kmsg_socket) { - char *from = NULL, *to = NULL; + char _cleanup_free_ *from = NULL, *to = NULL; int r, fd, k; mode_t u; union { @@ -650,8 +629,6 @@ static int setup_kmsg(const char *dest, int kmsg_socket) { unlink(from); finish: - free(from); - free(to); umask(u); return r;