The last entry of bootmenu is always set for exitting the menu, and
its command is set to an empty string.

When user selects to quit the menu, bootmenu will try to run this
empty command. However run_command() with empty cmd string will
return failure, and the return value will be overridden to
BOOTMENU_RET_FAIL, not the expected BOOTMENU_RET_QUIT.

This patch adds a default success value to the cmd_ret variable, and
add make sure run_command() be called only when menu command is not
empty.

Signed-off-by: Weijie Gao <[email protected]>
---
 cmd/bootmenu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c
index 528afd221d0..b55f5579409 100644
--- a/cmd/bootmenu.c
+++ b/cmd/bootmenu.c
@@ -526,7 +526,7 @@ static void handle_uefi_bootnext(void)
  */
 static enum bootmenu_ret bootmenu_show(int uefi, int delay)
 {
-       int cmd_ret;
+       int cmd_ret = CMD_RET_SUCCESS;
        int init = 0;
        void *choice = NULL;
        char *title = NULL;
@@ -628,7 +628,7 @@ cleanup:
                printf(ANSI_CURSOR_POSITION, 1, 1);
        }
 
-       if (title && command) {
+       if (title && command && *command) {
                debug("Starting entry '%s'\n", title);
                free(title);
                if (efi_ret == EFI_SUCCESS)
-- 
2.45.2

Reply via email to