diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2026-06-11 01:29:34 +0300 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2026-06-17 14:25:14 +0300 |
| commit | 2a3716544359d4312c81b0fa909a13301186da17 (patch) | |
| tree | cecd69c6c381f87ce20b9800d6a0841a80036a1a /scripts/Makefile.thinlto | |
| parent | 081b387c7397498c583b1ba7c2fdaf4c6da6b538 (diff) | |
| download | linux-2a3716544359d4312c81b0fa909a13301186da17.tar.xz | |
perf symbols: Validate p_filesz before use in filename__read_build_id()
filename__read_build_id() stores ELF p_filesz in a ssize_t variable.
A crafted 32-bit ELF with p_filesz = 0xFFFFFFFF produces ssize_t value
-1. The comparison `p_filesz > buf_size` evaluates false because signed
-1 is less than any non-negative buf_size, so the realloc is skipped and
buf remains NULL.
The subsequent read(fd, NULL, -1) returns -1, which equals p_filesz,
passing the error check. read_build_id() then dereferences the NULL
buffer.
Add an explicit check for p_filesz <= 0 before using the value,
catching both zero-length and sign-wrapped negative sizes from crafted
ELF files.
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Fixes: ba0b7081f7a521d7 ("perf symbol-minimal: Fix ehdr reading in filename__read_build_id")
Reviewed-by: Ian Rogers <irogers@google.com>
Cc: Ian Rogers <irogers@google.com>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
