diff options
| author | Christian Brauner <brauner@kernel.org> | 2026-07-21 13:20:45 +0200 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-07-21 13:22:34 +0200 |
| commit | 3349ef6a366a61d631f6a263d12cea240957719d (patch) | |
| tree | 2671c8c48d3485f041c844f45b48422ffc6c10e7 /tools/perf/scripts/python/bin | |
| parent | 16cc4f5c1c4b9e45eca7f7deefa5410a292db599 (diff) | |
binfmt_elf_fdpic: only honour the first PT_INTERP
The program header scan handles PT_INTERP from a switch nested in the
scan loop, so its break leaves the switch and not the loop. A binary
carrying more than one PT_INTERP runs the case again and overwrites both
interpreter_name and interpreter. The previous name allocation leaks and
so does the previous interpreter reference, along with the write denial
open_exec() took on it. The denial is never released, so the file stays
unwritable for as long as the system runs.
An unprivileged caller reaches this with a crafted binary and repeats it
at will. binfmt_elf stops at the first PT_INTERP. Do the same here.
The flaw dates back to the driver's introduction in the pre-git history
tree introduced in v2.6.11 by 91808d6ebe39 ("[PATCH] FRV: Add FDPIC ELF
binary format driver").
Link: https://patch.msgid.link/20260721-gezittert-medium-kreide-b41fc1f0277e@brauner
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Cc: stable@vger.kernel.org
Reviewed-by: Jori Koolstra <jkoolstra@xs4all.nl>
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/bin')
0 files changed, 0 insertions, 0 deletions
