[systemd-devel] [PATCH 2/3] Fix keysize handling in cryptsetup (bits vs. bytes)

Lennart Poettering lennart at poettering.net
Mon Mar 24 17:10:37 PDT 2014


On Wed, 12.02.14 23:55, David Härdeman (david at hardeman.nu) wrote:

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

This doesn't apply anymore :-(

Could you rebase please?

> ---
>  src/cryptsetup/cryptsetup.c |    8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
> index f72cf9f..e7e8066 100644
> --- a/src/cryptsetup/cryptsetup.c
> +++ b/src/cryptsetup/cryptsetup.c
> @@ -414,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
> @@ -577,7 +577,11 @@ int main(int argc, char *argv[]) {
>                  else
>                          until = 0;
>  
> -                opt_key_size = (opt_key_size > 0 ? opt_key_size : 256);
> +                if (opt_key_size % 8) {
> +                        log_warning("Key size invalid (not a multiple of 8).");
> +                        goto finish;
> +                }
> +                opt_key_size = (opt_key_size > 0 ? opt_key_size : 256) / 8;

I'd really prefer if we devide here by 8 as early as we parse it, so
that we never get confused by this. i.e. move this to parse_one_option()?

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list