SHA256
1
0
forked from pool/cryptsetup
cryptsetup/cryptsetup-1.0.7-eofpw.diff

43 lines
1.3 KiB
Diff
Raw Normal View History

From 6b92a27195e21e9d96ce2f324c3da593a01a7ae0 Mon Sep 17 00:00:00 2001
From: Ludwig Nussel <ludwig.nussel@suse.de>
Date: Tue, 29 Sep 2009 11:09:31 +0200
Subject: [PATCH] Fail if piped input is broken.
---
ChangeLog | 1 +
lib/utils.c | 13 ++++++++++---
2 files changed, 11 insertions(+), 3 deletions(-)
Index: cryptsetup-1.0.7/lib/utils.c
===================================================================
--- cryptsetup-1.0.7.orig/lib/utils.c
+++ cryptsetup-1.0.7/lib/utils.c
@@ -361,6 +361,7 @@ int get_key(char *prompt, char **key, un
char *pass = NULL;
int newline_stop;
int read_horizon;
+ int regular_file = 0;
if(key_file && !strcmp(key_file, "-")) {
/* Allow binary reading from stdin */
@@ -435,6 +436,8 @@ int get_key(char *prompt, char **key, un
// goto out_err;
fprintf(stderr,"Warning: exhausting read requested, but key file is not a regular file, function might never return.\n");
}
+ else
+ regular_file = 1;
}
buflen = 0;
for(i = 0; read_horizon == 0 || i < read_horizon; i++) {
@@ -452,6 +455,10 @@ int get_key(char *prompt, char **key, un
}
if(key_file)
close(fd);
+ /* Fail if piped input dies reading nothing */
+ if(!i && !regular_file) {
+ goto out_err;
+ }
pass[i] = 0;
*key = pass;
*passLen = i;