Skip to content
Snippets Groups Projects
Commit c667723f authored by Tom Rini's avatar Tom Rini
Browse files

cmd/nvedit.c: Update input handling to cover overflow cases


When we have multiple messages provided, we need to be sure that we do
not exceed the length of our 'message' buffer.  In the for loop, make
sure that pos is not larger than message.  Only copy in at most however
much of the message buffer remains.  Finally, if we have not reached the
end of the message buffer, put in a space and NULL, and if we have,
ensure the buffer is now NULL termined.

Reported-by: Coverity (CID: 165116)
Signed-off-by: default avatarTom Rini <trini@konsulko.com>
parent e2e6daed
No related branches found
No related tags found
No related merge requests found
......@@ -393,15 +393,18 @@ int do_env_ask(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
sprintf(message, "Please enter '%s': ", argv[1]);
} else {
/* env_ask envname message1 ... messagen [size] */
for (i = 2, pos = 0; i < argc; i++) {
for (i = 2, pos = 0; i < argc && pos < sizeof(message); i++) {
if (pos)
message[pos++] = ' ';
strcpy(message + pos, argv[i]);
strncpy(message + pos, argv[i], sizeof(message) - pos);
pos += strlen(argv[i]);
}
message[pos++] = ' ';
message[pos] = '\0';
if (pos < sizeof(message) - 1) {
message[pos++] = ' ';
message[pos] = '\0';
} else
message[CONFIG_SYS_CBSIZE - 1] = '\0';
}
if (size >= CONFIG_SYS_CBSIZE)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment