fs: binfmt_elf_efpic: don't use missing interpreter's properties
authorMax Filippov <jcmvbkbc@gmail.com>
Thu, 18 Jan 2024 15:06:37 +0000 (07:06 -0800)
committerKees Cook <keescook@chromium.org>
Mon, 5 Feb 2024 16:15:11 +0000 (08:15 -0800)
commit15fd1dc3dadb4268207fa6797e753541aca09a2a
tree14667efb91703d10527a30e809354723b321d6f1
parent41bccc98fb7931d63d03f326a746ac4d429c1dd3
fs: binfmt_elf_efpic: don't use missing interpreter's properties

Static FDPIC executable may get an executable stack even when it has
non-executable GNU_STACK segment. This happens when STACK segment has rw
permissions, but does not specify stack size. In that case FDPIC loader
uses permissions of the interpreter's stack, and for static executables
with no interpreter it results in choosing the arch-default permissions
for the stack.

Fix that by using the interpreter's properties only when the interpreter
is actually used.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Link: https://lore.kernel.org/r/20240118150637.660461-1-jcmvbkbc@gmail.com
Signed-off-by: Kees Cook <keescook@chromium.org>
fs/binfmt_elf_fdpic.c