From 65343c749441322d1e65e8bb5d433b6fee8c28bf Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Tue, 6 Nov 2012 09:49:27 -0500 Subject: cryptsetup: hash=plain means don't use a hash "plain" is a semantic value that cryptsetup(8) uses to describe a plain dm-crypt volume that does not use a hash. Catch this value earlier and ensure that a NULL params.hash is passed to crypt_format to avoid passing an invalid hash type to the libcryptsetup backend. FDO bug #56593. --- src/cryptsetup/cryptsetup.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index 916509ab93..e8ba3f02a3 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -342,7 +342,12 @@ int main(int argc, char *argv[]) { opt_tries = opt_tries > 0 ? opt_tries : 3; opt_key_size = (opt_key_size > 0 ? opt_key_size : 256); - hash = opt_hash ? opt_hash : "ripemd160"; + if (opt_hash) { + /* plain isn't a real hash type. it just means "use no hash" */ + if (!streq(opt_hash, "plain")) + hash = opt_hash; + } else + hash = "ripemd160"; if (opt_cipher) { size_t l; @@ -463,7 +468,7 @@ int main(int argc, char *argv[]) { opt_keyfile_size, ¶ms); - pass_volume_key = streq(hash, "plain"); + pass_volume_key = !!hash; } if (k < 0) { -- cgit v1.2.3-54-g00ecf