diff options
author | Neil Armstrong <neil.armstrong@linaro.org> | 2024-03-20 09:46:11 +0100 |
---|---|---|
committer | Neil Armstrong <neil.armstrong@linaro.org> | 2024-03-25 09:16:19 +0100 |
commit | d54f87f09a36ac20154955297b7c999b368b0443 (patch) | |
tree | 5a943e4734d28d61aba8bd1e97be8c3eeaba59a2 /board/amlogic/q200/q200.c | |
parent | 65d5c367b00cb392bda560c3da1834979adcf137 (diff) |
board: amlogic: fix buffler overflow in seria, mac & usid read
While meson_sm_read_efuse() doesn't overflow, the string is not
zero terminated and env_set*() will buffer overflow and add random
characters to environment.
Acked-by: Viacheslav Bocharov <adeep@lexina.in>
Link: https://lore.kernel.org/r/20240320-u-boot-fix-p200-serial-v2-1-972be646a301@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Diffstat (limited to 'board/amlogic/q200/q200.c')
-rw-r--r-- | board/amlogic/q200/q200.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/board/amlogic/q200/q200.c b/board/amlogic/q200/q200.c index 3aa6d8f200..47f1566a9d 100644 --- a/board/amlogic/q200/q200.c +++ b/board/amlogic/q200/q200.c @@ -22,13 +22,14 @@ int misc_init_r(void) { - u8 mac_addr[EFUSE_MAC_SIZE]; - char serial[EFUSE_SN_SIZE]; + u8 mac_addr[EFUSE_MAC_SIZE + 1]; + char serial[EFUSE_SN_SIZE + 1]; ssize_t len; if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, mac_addr, EFUSE_MAC_SIZE); + mac_addr[len] = '\0'; if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) eth_env_set_enetaddr("ethaddr", mac_addr); else @@ -38,6 +39,7 @@ int misc_init_r(void) if (!env_get("serial#")) { len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, EFUSE_SN_SIZE); + serial[len] = '\0'; if (len == EFUSE_SN_SIZE) env_set("serial#", serial); } |