Re: [PATCH v8 12/18] luks2: grub_cryptodisk_t->total_sectors is the max number of device native sectors

2020-12-12 Thread Patrick Steinhardt
On Tue, Dec 08, 2020 at 04:45:43PM -0600, Glenn Washburn wrote:
> We need to convert the sectors from the size of the underlying device to the
> cryptodisk sector size; segment.size is in bytes which need to be converted
> to cryptodisk sectors as well.
> 
> Also, removed an empty statement.
> 
> Signed-off-by: Glenn Washburn 
> Reviewed-by: Daniel Kiper 

Reviewed-by: Patrick Steinhardt 

> ---
>  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 ebf03e77b..429a4cfa1 100644
> --- a/grub-core/disk/luks2.c
> +++ b/grub-core/disk/luks2.c
> @@ -429,7 +429,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;
> @@ -615,9 +615,10 @@ luks2_recover_key (grub_disk_t source,
>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_sectors = grub_disk_get_size (source) - 
> crypt->offset_sectors;
> + crypt->total_sectors = (grub_disk_get_size (source) >> 
> (crypt->log_sector_size - source->log_sector_size))
> +- crypt->offset_sectors;
>else
> - crypt->total_sectors = grub_strtoull (segment.size, NULL, 10);
> + crypt->total_sectors = grub_strtoull (segment.size, NULL, 10) >> 
> crypt->log_sector_size;
>  
>ret = luks2_decrypt_key (candidate_key, source, crypt, &keyslot,
>  (const grub_uint8_t *) passphrase, grub_strlen 
> (passphrase));
> -- 
> 2.27.0
> 


signature.asc
Description: PGP signature
___
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel


[PATCH v8 12/18] luks2: grub_cryptodisk_t->total_sectors is the max number of device native sectors

2020-12-08 Thread Glenn Washburn
We need to convert the sectors from the size of the underlying device to the
cryptodisk sector size; segment.size is in bytes which need to be converted
to cryptodisk sectors as well.

Also, removed an empty statement.

Signed-off-by: Glenn Washburn 
Reviewed-by: Daniel Kiper 
---
 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 ebf03e77b..429a4cfa1 100644
--- a/grub-core/disk/luks2.c
+++ b/grub-core/disk/luks2.c
@@ -429,7 +429,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;
@@ -615,9 +615,10 @@ luks2_recover_key (grub_disk_t source,
   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_sectors = grub_disk_get_size (source) - 
crypt->offset_sectors;
+   crypt->total_sectors = (grub_disk_get_size (source) >> 
(crypt->log_sector_size - source->log_sector_size))
+  - crypt->offset_sectors;
   else
-   crypt->total_sectors = grub_strtoull (segment.size, NULL, 10);
+   crypt->total_sectors = grub_strtoull (segment.size, NULL, 10) >> 
crypt->log_sector_size;
 
   ret = luks2_decrypt_key (candidate_key, source, crypt, &keyslot,
   (const grub_uint8_t *) passphrase, grub_strlen 
(passphrase));
-- 
2.27.0


___
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel