diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 31087a0812d..5b03f45372b 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -46,9 +46,9 @@ static bool arg_root_enabled = true; static bool arg_root_rw = false; static int add_cryptsetup(const char *id, const char *what, bool rw, bool require, char **device) { - _cleanup_free_ char *e = NULL, *n = NULL, *p = NULL, *d = NULL, *id_escaped = NULL, *what_escaped = NULL; + _cleanup_free_ char *e = NULL, *n = NULL, *d = NULL, *id_escaped = NULL, *what_escaped = NULL; _cleanup_fclose_ FILE *f = NULL; - char *ret; + const char *p; int r; assert(id); @@ -74,10 +74,7 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, bool requir if (!what_escaped) return log_oom(); - p = strjoin(arg_dest, "/", n); - if (!p) - return log_oom(); - + p = strjoina(arg_dest, "/", n); f = fopen(p, "wxe"); if (!f) return log_error_errno(errno, "Failed to create unit file %s: %m", p); @@ -125,11 +122,7 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, bool requir return r; } - free(p); - p = strjoin(arg_dest, "/dev-mapper-", e, ".device.d/50-job-timeout-sec-0.conf"); - if (!p) - return log_oom(); - + p = strjoina(arg_dest, "/dev-mapper-", e, ".device.d/50-job-timeout-sec-0.conf"); mkdir_parents_label(p, 0755); r = write_string_file(p, "# Automatically generated by systemd-gpt-auto-generator\n\n" @@ -139,12 +132,16 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, bool requir if (r < 0) return log_error_errno(r, "Failed to write device drop-in: %m"); - ret = strappend("/dev/mapper/", id); - if (!ret) - return log_oom(); + if (device) { + char *ret; + + ret = strappend("/dev/mapper/", id); + if (!ret) + return log_oom(); - if (device) *device = ret; + } + return 0; } @@ -337,8 +334,8 @@ static int add_automount( usec_t timeout) { _cleanup_free_ char *unit = NULL; - _cleanup_free_ char *opt, *p = NULL; _cleanup_fclose_ FILE *f = NULL; + const char *opt = "noauto", *p; int r; assert(id); @@ -346,11 +343,7 @@ static int add_automount( assert(description); if (options) - opt = strjoin(options, ",noauto"); - else - opt = strdup("noauto"); - if (!opt) - return log_oom(); + opt = strjoina(options, ",", opt); r = add_mount(id, what, @@ -367,10 +360,7 @@ static int add_automount( if (r < 0) return log_error_errno(r, "Failed to generate unit name: %m"); - p = strjoin(arg_dest, "/", unit); - if (!p) - return log_oom(); - + p = strjoina(arg_dest, "/", unit); f = fopen(p, "wxe"); if (!f) return log_error_errno(errno, "Failed to create unit file %s: %m", unit);