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