mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-21 06:49:35 +00:00
disk/luks2: Continue trying all keyslots even if there are some failures
luks2_get_keyslot() can fail for a variety of reasons that do not necessarily mean the next keyslot should not be tried (e.g. a new kdf type). So always try the next slot. This will make GRUB more resilient to non-spec json data that 3rd party systems may add. We do not care if some of the keyslots are unusable, only if there is at least one that is. Signed-off-by: Glenn Washburn <development@efficientek.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
1 parent
294c0501e9
commit
a768876c0d
1 file changed
+9
-1
@@ -610,7 +610,15 @@ luks2_recover_key (grub_disk_t source,
|
|||||||
grub_errno = GRUB_ERR_NONE;
|
grub_errno = GRUB_ERR_NONE;
|
||||||
ret = luks2_get_keyslot (&keyslot, &digest, &segment, json, json_idx);
|
ret = luks2_get_keyslot (&keyslot, &digest, &segment, json, json_idx);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err;
|
{
|
||||||
|
/*
|
||||||
|
* luks2_get_keyslot() can fail for a variety of reasons that do not
|
||||||
|
* necessarily mean the next keyslot should not be tried (e.g. a new
|
||||||
|
* kdf type). So always try the next slot.
|
||||||
|
*/
|
||||||
|
grub_dprintf ("luks2", "Failed to get keyslot %" PRIuGRUB_UINT64_T "\n", keyslot.idx);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (grub_errno != GRUB_ERR_NONE)
|
if (grub_errno != GRUB_ERR_NONE)
|
||||||
grub_dprintf ("luks2", "Ignoring unhandled error %d from luks2_get_keyslot\n", grub_errno);
|
grub_dprintf ("luks2", "Ignoring unhandled error %d from luks2_get_keyslot\n", grub_errno);
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user