cmd: efidebug: fix a failure of "boot rm" sub-command
authorAKASHI Takahiro <takahiro.akashi@linaro.org>
Fri, 28 Feb 2020 00:05:04 +0000 (09:05 +0900)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Wed, 11 Mar 2020 07:23:05 +0000 (08:23 +0100)
There is a wrong usage of utf8_utf16_strncpy() in "boot rm" command, and
then it will end up with a failure of this command due to a wrong
value of an interim variable ("var_name16").

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
cmd/efidebug.c

index 21dfd44fcc94f9b2a67af660aadb9e1890b21bb6..056ebb10832960ef032e58afb9741bad46aca7bf 100644 (file)
@@ -649,7 +649,7 @@ static int do_efi_boot_rm(cmd_tbl_t *cmdtp, int flag,
        int id, i;
        char *endp;
        char var_name[9];
-       u16 var_name16[9];
+       u16 var_name16[9], *p;
        efi_status_t ret;
 
        if (argc == 1)
@@ -662,7 +662,8 @@ static int do_efi_boot_rm(cmd_tbl_t *cmdtp, int flag,
                        return CMD_RET_FAILURE;
 
                sprintf(var_name, "Boot%04X", id);
-               utf8_utf16_strncpy((u16 **)&var_name16, var_name, 9);
+               p = var_name16;
+               utf8_utf16_strncpy(&p, var_name, 9);
 
                ret = EFI_CALL(RT->set_variable(var_name16, &guid, 0, 0, NULL));
                if (ret) {