mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
perf tools: Use snprintf() for root_dir path construction
get_kernel_version() in machine.c and dso__load_guest_kernel_sym() in
symbol.c use sprintf() to construct paths by prepending root_dir to
"/proc/version" and "/proc/kallsyms" respectively. Both write into
PATH_MAX stack buffers, but root_dir comes from --guestmount or KVM
configuration and is not length-checked. A root_dir at or near
PATH_MAX causes a stack buffer overflow.
Switch to snprintf() with sizeof(path) to prevent overflow.
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Fixes: a1645ce12a ("perf: 'perf kvm' tool for monitoring guest performance from host")
Cc: Zhang Yanmin <yanmin_zhang@linux.intel.com>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
d2c6069d68
commit
7b0df6f4d4
|
|
@ -1336,7 +1336,7 @@ static char *get_kernel_version(const char *root_dir)
|
|||
char *name, *tmp;
|
||||
const char *prefix = "Linux version ";
|
||||
|
||||
sprintf(version, "%s/proc/version", root_dir);
|
||||
snprintf(version, sizeof(version), "%s/proc/version", root_dir);
|
||||
file = fopen(version, "r");
|
||||
if (!file)
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -2283,7 +2283,7 @@ static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map)
|
|||
if (!kallsyms_filename)
|
||||
return -1;
|
||||
} else {
|
||||
sprintf(path, "%s/proc/kallsyms", machine->root_dir);
|
||||
snprintf(path, sizeof(path), "%s/proc/kallsyms", machine->root_dir);
|
||||
kallsyms_filename = path;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user