efibootmgr: fix potential endless loop with -v

I observed the problem on a system with fairly old and, apparently,
buggy EFI implementation.  A list of boot devices had an invalid
trailing entry.  efidp_size() for that entry returned zero, which means
that the code got stuck looping on that entry.

(cherry picked from commit bf87d4a4bf)
This commit is contained in:
Andriy Gapon 2022-10-26 00:10:39 +03:00
parent 4df1b9cc2b
commit 1b92999e67

View file

@ -784,6 +784,8 @@ print_loadopt_str(uint8_t *data, size_t datalen)
*/
indent = 1;
while (dp < edp) {
if (efidp_size(dp) == 0)
break;
efidp_format_device_path(buf, sizeof(buf), dp,
(intptr_t)(void *)edp - (intptr_t)(void *)dp);
printf("%*s%s\n", indent, "", buf);