mirror of
https://github.com/clearlinux/systemd-stable.git
synced 2026-10-03 23:38:39 +00:00
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:
committed by
Zbigniew Jędrzejewski-Szmek
parent
bfea58f4bf
commit
19ef179118
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user