On Wed, Jul 29, 2020 at 04:50:22PM -0500, [email protected] wrote: > From: Glenn Washburn <[email protected]> > > Signed-off-by: Glenn Washburn <[email protected]> > --- > grub-core/disk/luks2.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c > index 44a73d2b8..48600db68 100644 > --- a/grub-core/disk/luks2.c > +++ b/grub-core/disk/luks2.c > @@ -277,34 +277,34 @@ luks2_get_keyslot (grub_luks2_keyslot_t *k, > grub_luks2_digest_t *d, grub_luks2_s > return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not get digests"); > for (j = 0; j < size; j++) > { > - if (grub_json_getchild (&digest, &digests, i) || > + if (grub_json_getchild (&digest, &digests, j) || > 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); > + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse digest > %"PRIuGRUB_SIZE, j); > > if ((d->keyslots & (1 << idx))) > break; > } > if (j == size) > - return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No digest for keyslot > %"PRIuGRUB_SIZE); > + return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No digest for keyslot > %"PRIuGRUB_SIZE, i);
These look correct to me.
> /* Get segment that matches the digest. */
> if (grub_json_getvalue (&segments, root, "segments") ||
> grub_json_getsize (&size, &segments))
> return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not get segments");
> - for (j = 0; j < size; j++)
> + for (i = j, j = 0; j < size; j++)
Why do we reassign `i = j` here? I think it's to fix the "No segment for
digest" message below which previously referred to the wrong digest,
right? I think we should just stop using `i` and `j` here. If we renamed
them `keyslot_index` and `digest_index`, respectively, and only use `i`
as a loop variable, then the code would be much easier to read.
> {
> - if (grub_json_getchild (&segment, &segments, i) ||
> + if (grub_json_getchild (&segment, &segments, j) ||
> grub_json_getuint64 (&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);
> + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse segment
> %"PRIuGRUB_SIZE, j);
>
> if ((d->segments & (1 << idx)))
> break;
> }
> if (j == size)
> - return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No segment for digest
> %"PRIuGRUB_SIZE);
> + return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No segment for digest
> %"PRIuGRUB_SIZE, i);
>
> return GRUB_ERR_NONE;
> }
> --
> 2.25.1
>
signature.asc
Description: PGP signature
_______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
