From 8977784afee870e107f639ace7a4b5cd57cfaeb6 Mon Sep 17 00:00:00 2001 From: Flavio Ceolin Date: Tue, 12 Dec 2023 10:20:45 -0800 Subject: [PATCH] settings: shell: Fix possible buffer overflow Checks the size of the given string before copying it to internal buffer. Signed-off-by: Flavio Ceolin --- subsys/settings/src/settings_shell.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/subsys/settings/src/settings_shell.c b/subsys/settings/src/settings_shell.c index e8132eeeb49fc4..bef6b23c2b5963 100644 --- a/subsys/settings/src/settings_shell.c +++ b/subsys/settings/src/settings_shell.c @@ -182,6 +182,11 @@ static int cmd_write(const struct shell *shell_ptr, size_t argc, char *argv[]) break; case SETTINGS_VALUE_STRING: buffer_len = strlen(argv[argc - 1]) + 1; + if (buffer_len > sizeof(buffer)) { + shell_error(shell_ptr, "%s is bigger than shell's buffer", argv[argc - 1]); + return -EINVAL; + } + memcpy(buffer, argv[argc - 1], buffer_len); break; }