]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
perf tools: Use snprintf() in dso__read_running_kernel_build_id()
authorArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 8 Jun 2026 10:04:25 +0000 (07:04 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 10 Jun 2026 21:56:01 +0000 (18:56 -0300)
dso__read_running_kernel_build_id() uses sprintf() to format a sysfs
path from machine->root_dir into a PATH_MAX buffer.  If root_dir is
close to PATH_MAX in length, appending "/sys/kernel/notes" (18 bytes)
overflows the stack buffer.

Switch to snprintf() with sizeof(path) to prevent the overflow.

Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Fixes: cdd059d731eeb466 ("perf tools: Move dso_* related functions into dso object")
Cc: Jiri Olsa <jolsa@kernel.org>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/dso.c

index 6a34717c9f31f18d60c1d7ced50a1b89d3233758..5d017975873817ecfdbc4e966bbca63f214327dc 100644 (file)
@@ -1779,7 +1779,7 @@ void dso__read_running_kernel_build_id(struct dso *dso, struct machine *machine)
 
        if (machine__is_default_guest(machine))
                return;
-       sprintf(path, "%s/sys/kernel/notes", machine->root_dir);
+       snprintf(path, sizeof(path), "%s/sys/kernel/notes", machine->root_dir);
        sysfs__read_build_id(path, &bid);
        dso__set_build_id(dso, &bid);
 }