luks2: Make sure all fields of output argument in luks2_parse_digest() are written to

We should assume that the output argument "out" is uninitialized and could
have random data. So, make sure to initialize the segments and keyslots bit
fields because potentially not all bits of those fields are written to.
Otherwise, the digest could say it belongs to keyslots and segments that it
does not.

Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Patrick Steinhardt <ps@pks.im>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Glenn Washburn 2020-12-08 16:45:36 -06:00 committed by Daniel Kiper
parent fe902c3f4c
commit 7904c5ce67

View File

@ -230,6 +230,7 @@ luks2_parse_digest (grub_luks2_digest_t *out, const grub_json_t *digest)
return grub_error (GRUB_ERR_BAD_ARGUMENT,
"Digest references no segments");
out->segments = 0;
for (i = 0; i < size; i++)
{
if (grub_json_getchild (&o, &segments, i) ||
@ -242,6 +243,7 @@ luks2_parse_digest (grub_luks2_digest_t *out, const grub_json_t *digest)
return grub_error (GRUB_ERR_BAD_ARGUMENT,
"Digest references no keyslots");
out->keyslots = 0;
for (i = 0; i < size; i++)
{
if (grub_json_getchild (&o, &keyslots, i) ||