From: Jan Alexander Steffens Date: Mon, 18 Dec 2017 13:47:18 +0000 (+0100) Subject: cryptsetup-generator: Don't mistake NULL input as OOM (#7688) X-Git-Tag: v237~206 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=aff0b1fa7bf2ca60fd5ffdf7ea25184d576cf61d;p=thirdparty%2Fsystemd.git cryptsetup-generator: Don't mistake NULL input as OOM (#7688) Since systemd v236, several Arch users complained that systemd-cryptsetup-generator exits with an OOM error and that it prevents the boot from continuing. Investigating the diff of cryptsetup-generator between v235 and v236 I noticed that create_disk allowed for the `password` and `filtered` variables to be NULL (they're handled with `strempty()`) but not their `*_escaped` versions, and returned OOM errors in those cases. Fix this by checking that the input string is non-NULL before deciding that `specifier_escape` had an OOM error. I could not test this fix myself, but some users have reported success. Downstream bug: https://bugs.archlinux.org/task/56733 --- diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 531edc68474..b41faed6ad4 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -107,7 +107,7 @@ static int create_disk( return log_error_errno(r, "Failed to generate unit name: %m"); password_escaped = specifier_escape(password); - if (!password_escaped) + if (password && !password_escaped) return log_oom(); r = generator_open_unit_file(arg_dest, NULL, n, &f); @@ -177,7 +177,7 @@ static int create_disk( return r; filtered_escaped = specifier_escape(filtered); - if (!filtered_escaped) + if (filtered && !filtered_escaped) return log_oom(); fprintf(f,