]> git.baikalelectronics.ru Git - kernel.git/commit
binfmt_elf: Do not move brk for INTERP-less ET_EXEC
authorKees Cook <keescook@chromium.org>
Thu, 26 Sep 2019 17:15:25 +0000 (10:15 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 26 Sep 2019 18:38:55 +0000 (11:38 -0700)
commitc6b7d770e440df927367f21252bd3218dabaec6d
treedfaa5fd5e0da06616250e8c0c915eac6dbbd8a2b
parentd17bd8b7f14fe7050f10f0dba8dc074f6bc1c949
binfmt_elf: Do not move brk for INTERP-less ET_EXEC

When brk was moved for binaries without an interpreter, it should have
been limited to ET_DYN only. In other words, the special case was an
ET_DYN that lacks an INTERP, not just an executable that lacks INTERP.
The bug manifested for giant static executables, where the brk would end
up in the middle of the text area on 32-bit architectures.

Reported-and-tested-by: Richard Kojedzinszky <richard@kojedz.in>
Fixes: 1781e93913a5 ("binfmt_elf: move brk out of mmap when doing direct loader exec")
Cc: stable@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/binfmt_elf.c