Fix keysize handling in cryptsetup (bits vs. bytes)

The command line key-size is in bits but the libcryptsetup API expects bytes.

Note that the modulo 8 check is in the original cryptsetup binary as well, so
it's no new limitation.

(v2: changed the point at which the /= 8 is performed, rebased, removed tabs)

(cherry picked from commit 6131a78b4d)

Conflicts:
	src/cryptsetup/cryptsetup.c
This commit is contained in:
David Härdeman
2014-06-07 18:20:18 -04:00
committed by Zbigniew Jędrzejewski-Szmek
parent bfea58f4bf
commit 19ef179118
+9 -2
View File
@@ -88,6 +88,13 @@ static int parse_one_option(const char *option) {
return 0;
}
if (opt_key_size % 8) {
log_error("size= not a multiple of 8, ignoring.");
return 0;
}
opt_key_size /= 8;
} else if (startswith(option, "key-slot=")) {
opt_type = CRYPT_LUKS1;
@@ -407,7 +414,7 @@ static int attach_luks_or_plain(struct crypt_device *cd,
/* for CRYPT_PLAIN limit reads
* from keyfile to key length, and
* ignore keyfile-size */
opt_keyfile_size = opt_key_size / 8;
opt_keyfile_size = opt_key_size;
/* In contrast to what the name
* crypt_setup() might suggest this
@@ -570,7 +577,7 @@ int main(int argc, char *argv[]) {
else
until = 0;
opt_key_size = (opt_key_size > 0 ? opt_key_size : 256);
opt_key_size = (opt_key_size > 0 ? opt_key_size : (256 / 8));
if (key_file) {
struct stat st;