mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
tracing: Replace multiple deprecated strncpy with memcpy
strncpy() is deprecated for use on NUL-terminated destination strings [1] and as such we should prefer more robust and less ambiguous string interfaces. String copy operations involving manual pointer offset and length calculations followed by explicit NUL-byte assignments are best changed to either strscpy or memcpy. strscpy is not a drop-in replacement as @len would need a one subtracted from it to avoid truncating the source string. To not sabotage readability of the current code, use memcpy (retaining the manual NUL assignment) as this unambiguously describes the desired behavior. Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings [1] Link: https://github.com/KSPP/linux/issues/90 [2] Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: linux-hardening@vger.kernel.org Link: https://lore.kernel.org/20241014-strncpy-kernel-trace-trace_events_filter-c-v2-1-d821e81e371e@google.com Reviewed-by: Kees Cook <kees@kernel.org> Signed-off-by: Justin Stitt <justinstitt@google.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
2c33155ef6
commit
77a1326f64
@ -1616,7 +1616,7 @@ static int parse_pred(const char *str, void *data,
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
strncpy(num_buf, str + s, len);
|
||||
memcpy(num_buf, str + s, len);
|
||||
num_buf[len] = 0;
|
||||
|
||||
ret = kstrtoul(num_buf, 0, &ip);
|
||||
@ -1694,7 +1694,7 @@ static int parse_pred(const char *str, void *data,
|
||||
if (!pred->regex)
|
||||
goto err_mem;
|
||||
pred->regex->len = len;
|
||||
strncpy(pred->regex->pattern, str + s, len);
|
||||
memcpy(pred->regex->pattern, str + s, len);
|
||||
pred->regex->pattern[len] = 0;
|
||||
|
||||
} else if (!strncmp(str + i, "CPUS", 4)) {
|
||||
@ -1859,7 +1859,7 @@ static int parse_pred(const char *str, void *data,
|
||||
if (!pred->regex)
|
||||
goto err_mem;
|
||||
pred->regex->len = len;
|
||||
strncpy(pred->regex->pattern, str + s, len);
|
||||
memcpy(pred->regex->pattern, str + s, len);
|
||||
pred->regex->pattern[len] = 0;
|
||||
|
||||
filter_build_regex(pred);
|
||||
@ -1919,7 +1919,7 @@ static int parse_pred(const char *str, void *data,
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
strncpy(num_buf, str + s, len);
|
||||
memcpy(num_buf, str + s, len);
|
||||
num_buf[len] = 0;
|
||||
|
||||
/* Make sure it is a value */
|
||||
|
Loading…
Reference in New Issue
Block a user