diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2018-04-25 09:45:28 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2018-04-25 09:45:28 +0200 |
commit | 2aa2860bc3ec70e39217795b9ceac759b4bf1735 (patch) | |
tree | 5e6500fe7cc07b46394bdba875bf0e2b68c1fcd1 /src/gpt-auto-generator | |
parent | b29f6480eca0550ba65d30fbece8dd4d4bfe666d (diff) | |
download | systemd-2aa2860bc3ec70e39217795b9ceac759b4bf1735.tar.gz |
gpt-auto-generator: use stack variables and fix minor memleak
Diffstat (limited to 'src/gpt-auto-generator')
-rw-r--r-- | src/gpt-auto-generator/gpt-auto-generator.c | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 31087a0812..5b03f45372 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); |