[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v8 06/18] luks2: Add idx member to struct grub_luks2_keyslot/
From: |
Patrick Steinhardt |
Subject: |
Re: [PATCH v8 06/18] luks2: Add idx member to struct grub_luks2_keyslot/segment/digest |
Date: |
Sat, 12 Dec 2020 09:07:58 +0100 |
On Tue, Dec 08, 2020 at 04:45:37PM -0600, Glenn Washburn wrote:
> This allows code using these structs to know the named key associated with
> these json data structures. In the future we can use these to provide better
> error messages to the user.
>
> Get rid of idx local variable in luks2_get_keyslot() which was overloaded to
> be used for both keyslot and segment slot keys.
>
> Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Patrick Steinhardt <ps@pks.im>
> ---
> grub-core/disk/luks2.c | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c
> index 9b19d35c1..67b1823d3 100644
> --- a/grub-core/disk/luks2.c
> +++ b/grub-core/disk/luks2.c
> @@ -65,6 +65,8 @@ typedef struct grub_luks2_header grub_luks2_header_t;
>
> struct grub_luks2_keyslot
> {
> + /* The integer key to the associative array of keyslots */
> + grub_uint64_t idx;
> grub_int64_t key_size;
> grub_int64_t priority;
> struct
> @@ -103,6 +105,7 @@ typedef struct grub_luks2_keyslot grub_luks2_keyslot_t;
>
> struct grub_luks2_segment
> {
> + grub_uint64_t idx;
> grub_uint64_t offset;
> const char *size;
> const char *encryption;
> @@ -112,6 +115,7 @@ typedef struct grub_luks2_segment grub_luks2_segment_t;
>
> struct grub_luks2_digest
> {
> + grub_uint64_t idx;
> /* Both keyslots and segments are interpreted as bitfields here */
> grub_uint64_t keyslots;
> grub_uint64_t segments;
> @@ -261,12 +265,11 @@ luks2_get_keyslot (grub_luks2_keyslot_t *k,
> grub_luks2_digest_t *d, grub_luks2_s
> {
> grub_json_t keyslots, keyslot, digests, digest, segments, segment;
> grub_size_t i, size;
> - grub_uint64_t idx;
>
> /* Get nth keyslot */
> if (grub_json_getvalue (&keyslots, root, "keyslots") ||
> grub_json_getchild (&keyslot, &keyslots, keyslot_idx) ||
> - grub_json_getuint64 (&idx, &keyslot, NULL) ||
> + grub_json_getuint64 (&k->idx, &keyslot, NULL) ||
> grub_json_getchild (&keyslot, &keyslot, 0) ||
> luks2_parse_keyslot (k, &keyslot))
> return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse keyslot
> %"PRIuGRUB_SIZE, keyslot_idx);
> @@ -278,11 +281,12 @@ luks2_get_keyslot (grub_luks2_keyslot_t *k,
> grub_luks2_digest_t *d, grub_luks2_s
> for (i = 0; i < size; i++)
> {
> if (grub_json_getchild (&digest, &digests, i) ||
> + grub_json_getuint64 (&d->idx, &digest, NULL) ||
> grub_json_getchild (&digest, &digest, 0) ||
> luks2_parse_digest (d, &digest))
> return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse digest
> %"PRIuGRUB_SIZE, i);
>
> - if ((d->keyslots & (1 << idx)))
> + if ((d->keyslots & (1 << k->idx)))
> break;
> }
> if (i == size)
> @@ -295,12 +299,12 @@ luks2_get_keyslot (grub_luks2_keyslot_t *k,
> grub_luks2_digest_t *d, grub_luks2_s
> for (i = 0; i < size; i++)
> {
> if (grub_json_getchild (&segment, &segments, i) ||
> - grub_json_getuint64 (&idx, &segment, NULL) ||
> + grub_json_getuint64 (&s->idx, &segment, NULL) ||
> grub_json_getchild (&segment, &segment, 0) ||
> luks2_parse_segment (s, &segment))
> return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse segment
> %"PRIuGRUB_SIZE, i);
>
> - if ((d->segments & (1 << idx)))
> + if ((d->segments & (1 << s->idx)))
> break;
> }
> if (i == size)
> --
> 2.27.0
>
signature.asc
Description: PGP signature
- [PATCH v8 11/18] cryptodisk: Add macros GRUB_TYPE_U_MAX/MIN(type) to replace literals, (continued)
- [PATCH v8 11/18] cryptodisk: Add macros GRUB_TYPE_U_MAX/MIN(type) to replace literals, Glenn Washburn, 2020/12/08
- [PATCH v8 12/18] luks2: grub_cryptodisk_t->total_sectors is the max number of device native sectors, Glenn Washburn, 2020/12/08
- [PATCH v8 05/18] luks2: Make sure all fields of output argument in luks2_parse_digest() are written to, Glenn Washburn, 2020/12/08
- [PATCH v8 13/18] cryptodisk: Properly handle non-512 byte sized sectors, Glenn Washburn, 2020/12/08
- [PATCH v8 06/18] luks2: Add idx member to struct grub_luks2_keyslot/segment/digest, Glenn Washburn, 2020/12/08
- [PATCH v8 17/18] misc: Add grub_log2ull macro for calculating log base 2 of 64-bit integers, Glenn Washburn, 2020/12/08
- [PATCH v8 02/18] misc: Add parentheses around ALIGN_UP and ALIGN_DOWN arguments, Glenn Washburn, 2020/12/08
- [PATCH v8 09/18] luks2: Add string "index" to user strings using a json index., Glenn Washburn, 2020/12/08
- [PATCH v8 10/18] cryptodisk: Add macro GRUB_TYPE_BITS() to replace some literals, Glenn Washburn, 2020/12/08
- [PATCH v8 14/18] luks2: Better error handling when setting up the cryptodisk, Glenn Washburn, 2020/12/08