mirror of
https://github.com/torvalds/linux.git
synced 2026-01-24 23:16:46 +00:00
kdb: Replace deprecated strcpy() with memmove() in vkdb_printf()
strcpy() is deprecated and its behavior is undefined when the source and
destination buffers overlap. Use memmove() instead to avoid any
undefined behavior.
Adjust comments for clarity.
Link: https://github.com/KSPP/linux/issues/88
Fixes: 5d5314d679 ("kdb: core for kgdb back end (1 of 2)")
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Daniel Thompson (RISCstar) <danielt@kernel.org>
This commit is contained in:
committed by
Daniel Thompson (RISCstar)
parent
d4be3238d9
commit
8790cc2940
@@ -714,8 +714,8 @@ int vkdb_printf(enum kdb_msgsrc src, const char *fmt, va_list ap)
|
||||
* it, depending on the results of the search.
|
||||
*/
|
||||
cp++; /* to byte after the newline */
|
||||
replaced_byte = *cp; /* remember what/where it was */
|
||||
cphold = cp;
|
||||
replaced_byte = *cp; /* remember what it was */
|
||||
cphold = cp; /* remember where it was */
|
||||
*cp = '\0'; /* end the string for our search */
|
||||
|
||||
/*
|
||||
@@ -732,8 +732,9 @@ int vkdb_printf(enum kdb_msgsrc src, const char *fmt, va_list ap)
|
||||
* Shift the buffer left.
|
||||
*/
|
||||
*cphold = replaced_byte;
|
||||
strcpy(kdb_buffer, cphold);
|
||||
len = strlen(kdb_buffer);
|
||||
len = strlen(cphold);
|
||||
/* Use memmove() because the buffers overlap */
|
||||
memmove(kdb_buffer, cphold, len + 1);
|
||||
next_avail = kdb_buffer + len;
|
||||
size_avail = sizeof(kdb_buffer) - len;
|
||||
goto kdb_print_out;
|
||||
@@ -872,8 +873,9 @@ kdb_printit:
|
||||
*/
|
||||
if (kdb_grepping_flag && !suspend_grep) {
|
||||
*cphold = replaced_byte;
|
||||
strcpy(kdb_buffer, cphold);
|
||||
len = strlen(kdb_buffer);
|
||||
len = strlen(cphold);
|
||||
/* Use memmove() because the buffers overlap */
|
||||
memmove(kdb_buffer, cphold, len + 1);
|
||||
next_avail = kdb_buffer + len;
|
||||
size_avail = sizeof(kdb_buffer) - len;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user