grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 04/10] luks2: grub_cryptodisk_t->total_length is the max n


From: Patrick Steinhardt
Subject: Re: [PATCH v2 04/10] luks2: grub_cryptodisk_t->total_length is the max number of device native sectors
Date: Fri, 9 Oct 2020 11:45:59 +0200

On Sat, Oct 03, 2020 at 05:55:28PM -0500, Glenn Washburn wrote:
> The total_length field is named confusingly because length usually refers to
> bytes, whereas in this case its really the total number of sectors on the
> device. Also counter-intuitively, grub_disk_get_size returns the total
> number of device native sectors sectors. We need to convert the sectors from
                          ^~~~~~~~~~~~~~~

Nit: there's a duplicate word here.

Patrick

> the size of the underlying device to the cryptodisk sector size. And
> segment.size is in bytes which need to be converted to cryptodisk sectors.
> 
> Also, removed an empty statement.
> 
> Signed-off-by: Glenn Washburn <development@efficientek.com>
> ---
>  grub-core/disk/luks2.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c
> index db251cce0..9f7d6e12b 100644
> --- a/grub-core/disk/luks2.c
> +++ b/grub-core/disk/luks2.c
> @@ -424,7 +424,7 @@ luks2_decrypt_key (grub_uint8_t *out_key,
>    grub_uint8_t salt[GRUB_CRYPTODISK_MAX_KEYLEN];
>    grub_uint8_t *split_key = NULL;
>    grub_size_t saltlen = sizeof (salt);
> -  char cipher[32], *p;;
> +  char cipher[32], *p;
>    const gcry_md_spec_t *hash;
>    gcry_err_code_t gcry_ret;
>    grub_err_t ret;
> @@ -611,9 +611,10 @@ luks2_recover_key (grub_disk_t disk,
>        crypt->log_sector_size = sizeof (unsigned int) * 8
>               - __builtin_clz ((unsigned int) segment.sector_size) - 1;
>        if (grub_strcmp (segment.size, "dynamic") == 0)
> -     crypt->total_length = grub_disk_get_size (disk) - crypt->offset;
> +     crypt->total_length = (grub_disk_get_size (disk) >> 
> (crypt->log_sector_size - disk->log_sector_size))
> +                            - crypt->offset;
>        else
> -     crypt->total_length = grub_strtoull (segment.size, NULL, 10);
> +     crypt->total_length = grub_strtoull (segment.size, NULL, 10) >> 
> crypt->log_sector_size;
>  
>        ret = luks2_decrypt_key (candidate_key, disk, crypt, &keyslot,
>                              (const grub_uint8_t *) passphrase, grub_strlen 
> (passphrase));
> -- 
> 2.27.0
> 

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]