From 7904c5ce678a3809df5e4562989796f44197c74e Mon Sep 17 00:00:00 2001 From: Glenn Washburn Date: Tue, 8 Dec 2020 16:45:36 -0600 Subject: [PATCH] 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 Reviewed-by: Patrick Steinhardt Reviewed-by: Daniel Kiper --- grub-core/disk/luks2.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c index 7b30734aa..371e868ab 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -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) || -- 2.47.2