mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-27 18:43:12 -04:00
perf machine: Check snprintf truncation for guest kallsyms path
machines__create_guest_kernel_maps() builds the guest kallsyms path
with snprintf() without checking the return value. A truncated path
could pass the access() check if a prefix directory happens to contain
a file named "kallsyms", leading to the wrong file being used for
symbol resolution.
Check for truncation and skip the directory.
Fixes: a1645ce12a ("perf: 'perf kvm' tool for monitoring guest performance from host")
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
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>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
committed by
Namhyung Kim
parent
f53bf58dcd
commit
d04ef71492
@@ -1269,9 +1269,14 @@ int machines__create_guest_kernel_maps(struct machines *machines)
|
||||
free(namelist[i]);
|
||||
continue;
|
||||
}
|
||||
snprintf(path, sizeof(path), "%s/%s/proc/kallsyms",
|
||||
symbol_conf.guestmount,
|
||||
namelist[i]->d_name);
|
||||
if (snprintf(path, sizeof(path), "%s/%s/proc/kallsyms",
|
||||
symbol_conf.guestmount,
|
||||
namelist[i]->d_name) >= (int)sizeof(path)) {
|
||||
pr_debug("Guest kallsyms path too long for %s. Skipping.\n",
|
||||
namelist[i]->d_name);
|
||||
free(namelist[i]);
|
||||
continue;
|
||||
}
|
||||
if (access(path, R_OK)) {
|
||||
pr_debug("Can't access file %s\n", path);
|
||||
free(namelist[i]);
|
||||
|
||||
Reference in New Issue
Block a user