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