autoboot: fix illegal memory access when stop key and delay key are empty
authorYuezhang.Mo@sony.com <Yuezhang.Mo@sony.com>
Fri, 15 Jan 2021 03:11:49 +0000 (03:11 +0000)
committerTom Rini <trini@konsulko.com>
Wed, 27 Jan 2021 22:07:48 +0000 (17:07 -0500)
If both stop key and delay key are empty, the length of these
keys is 0. The subtraction operation will cause the u_int type
variable to overflow, will cause illegal memory access in key
input loop.

This commit fixes this bug by using int type instead of u_init.
Acked-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
common/autoboot.c

index ddb6246..b025fd9 100644 (file)
@@ -164,9 +164,9 @@ static int passwd_abort_key(uint64_t etime)
        };
 
        char presskey[MAX_DELAY_STOP_STR];
-       u_int presskey_len = 0;
-       u_int presskey_max = 0;
-       u_int i;
+       int presskey_len = 0;
+       int presskey_max = 0;
+       int i;
 
 #  ifdef CONFIG_AUTOBOOT_DELAY_STR
        if (delaykey[0].str == NULL)