From cfb20c251cb79820ddf7507f9f4a54cc3f18b121 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 2 Oct 2013 19:36:28 +0200 Subject: [PATCH] cryptsetup: fix OOM handling when parsing mount options --- src/cryptsetup/cryptsetup.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index 22b5eea..769c3e4 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -74,7 +74,7 @@ static int parse_one_option(const char *option) { t = strdup(option+7); if (!t) - return -ENOMEM; + return log_oom(); free(opt_cipher); opt_cipher = t; @@ -89,9 +89,10 @@ static int parse_one_option(const char *option) { } else if (startswith(option, "tcrypt-keyfile=")) { opt_type = CRYPT_TCRYPT; - if (path_is_absolute(option+15)) - opt_tcrypt_keyfiles = strv_append(opt_tcrypt_keyfiles, strdup(option+15)); - else + if (path_is_absolute(option+15)) { + if (strv_extend(&opt_tcrypt_keyfiles, option + 15) < 0) + return log_oom(); + } else log_error("Key file path '%s' is not absolute. Ignoring.", option+15); } else if (startswith(option, "keyfile-size=")) { @@ -113,7 +114,7 @@ static int parse_one_option(const char *option) { t = strdup(option+5); if (!t) - return -ENOMEM; + return log_oom(); free(opt_hash); opt_hash = t;