mirror of
https://xff.cz/git/u-boot/
synced 2025-09-30 15:01:27 +02:00
efi_loader: fix 'efidebug bootorder'
* don't copy GUIDs for no reason * shorten print format strings by using variable names * don't use the run-time table to access exported functions * check the result of malloc() (fixes Coverity CID 300331) Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
@@ -852,8 +852,7 @@ static int do_efi_boot_dump(cmd_tbl_t *cmdtp, int flag,
|
|||||||
*/
|
*/
|
||||||
static int show_efi_boot_order(void)
|
static int show_efi_boot_order(void)
|
||||||
{
|
{
|
||||||
efi_guid_t guid;
|
u16 *bootorder;
|
||||||
u16 *bootorder = NULL;
|
|
||||||
efi_uintn_t size;
|
efi_uintn_t size;
|
||||||
int num, i;
|
int num, i;
|
||||||
char var_name[9];
|
char var_name[9];
|
||||||
@@ -864,20 +863,25 @@ static int show_efi_boot_order(void)
|
|||||||
size_t label_len16, label_len;
|
size_t label_len16, label_len;
|
||||||
efi_status_t ret;
|
efi_status_t ret;
|
||||||
|
|
||||||
guid = efi_global_variable_guid;
|
|
||||||
size = 0;
|
size = 0;
|
||||||
ret = EFI_CALL(RT->get_variable(L"BootOrder", &guid, NULL, &size,
|
ret = EFI_CALL(RT->get_variable(L"BootOrder", &efi_global_variable_guid,
|
||||||
NULL));
|
NULL, &size, NULL));
|
||||||
if (ret == EFI_BUFFER_TOO_SMALL) {
|
if (ret != EFI_BUFFER_TOO_SMALL) {
|
||||||
bootorder = malloc(size);
|
|
||||||
ret = EFI_CALL(RT->get_variable(L"BootOrder", &guid, NULL,
|
|
||||||
&size, bootorder));
|
|
||||||
}
|
|
||||||
if (ret == EFI_NOT_FOUND) {
|
if (ret == EFI_NOT_FOUND) {
|
||||||
printf("BootOrder not defined\n");
|
printf("BootOrder not defined\n");
|
||||||
ret = CMD_RET_SUCCESS;
|
return CMD_RET_SUCCESS;
|
||||||
goto out;
|
} else {
|
||||||
} else if (ret != EFI_SUCCESS) {
|
return CMD_RET_FAILURE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bootorder = malloc(size);
|
||||||
|
if (!bootorder) {
|
||||||
|
printf("ERROR: Out of memory\n");
|
||||||
|
return CMD_RET_FAILURE;
|
||||||
|
}
|
||||||
|
ret = EFI_CALL(efi_get_variable(L"BootOrder", &efi_global_variable_guid,
|
||||||
|
NULL, &size, bootorder));
|
||||||
|
if (ret != EFI_SUCCESS) {
|
||||||
ret = CMD_RET_FAILURE;
|
ret = CMD_RET_FAILURE;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@@ -889,11 +893,11 @@ static int show_efi_boot_order(void)
|
|||||||
utf8_utf16_strncpy(&p16, var_name, 9);
|
utf8_utf16_strncpy(&p16, var_name, 9);
|
||||||
|
|
||||||
size = 0;
|
size = 0;
|
||||||
ret = EFI_CALL(RT->get_variable(var_name16, &guid, NULL, &size,
|
ret = EFI_CALL(efi_get_variable(var_name16,
|
||||||
NULL));
|
&efi_global_variable_guid, NULL,
|
||||||
|
&size, NULL));
|
||||||
if (ret != EFI_BUFFER_TOO_SMALL) {
|
if (ret != EFI_BUFFER_TOO_SMALL) {
|
||||||
printf("%2d: Boot%04X: (not defined)\n",
|
printf("%2d: %s: (not defined)\n", i + 1, var_name);
|
||||||
i + 1, bootorder[i]);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -902,8 +906,9 @@ static int show_efi_boot_order(void)
|
|||||||
ret = CMD_RET_FAILURE;
|
ret = CMD_RET_FAILURE;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
ret = EFI_CALL(RT->get_variable(var_name16, &guid, NULL, &size,
|
ret = EFI_CALL(efi_get_variable(var_name16,
|
||||||
data));
|
&efi_global_variable_guid, NULL,
|
||||||
|
&size, data));
|
||||||
if (ret != EFI_SUCCESS) {
|
if (ret != EFI_SUCCESS) {
|
||||||
free(data);
|
free(data);
|
||||||
ret = CMD_RET_FAILURE;
|
ret = CMD_RET_FAILURE;
|
||||||
@@ -922,7 +927,7 @@ static int show_efi_boot_order(void)
|
|||||||
}
|
}
|
||||||
p = label;
|
p = label;
|
||||||
utf16_utf8_strncpy(&p, lo.label, label_len16);
|
utf16_utf8_strncpy(&p, lo.label, label_len16);
|
||||||
printf("%2d: Boot%04X: %s\n", i + 1, bootorder[i], label);
|
printf("%2d: %s: %s\n", i + 1, var_name, label);
|
||||||
free(label);
|
free(label);
|
||||||
|
|
||||||
free(data);
|
free(data);
|
||||||
|
Reference in New Issue
Block a user