[Bug libc/23264] posix_spawnp wrongly executes ENOEXEC in non compat mode
cvs-commit at gcc dot gnu.org
sourceware-bugzilla@sourceware.org
Fri Jun 8 20:31:00 GMT 2018
https://sourceware.org/bugzilla/show_bug.cgi?id=23264
--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 283d98512272a12cb84e7798c23edbdf1adb287d (commit)
from 67c0579669ba1fc265d770252fab31babf887329 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=283d98512272a12cb84e7798c23edbdf1adb287d
commit 283d98512272a12cb84e7798c23edbdf1adb287d
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date: Wed Jun 6 14:07:34 2018 -0300
posix: Fix posix_spawnp to not execute invalid binaries in non compat mode
(BZ#23264)
Current posix_spawnp implementation wrongly tries to execute invalid
binaries (for instance script without shebang) as a shell script in
non compat mode. It was a regression introduced by
9ff72da471a509a8c19791efe469f47fa6977410 when __spawni started to use
__execvpe instead of __execve (glibc __execvpe try to execute ENOEXEC
as shell script regardless).
This patch fixes it by using an internal symbol (__execvpex) with the
faulty semantic (since compat mode is handled by spawni.c itself).
It was reported by Daniel Drake on libc-help [1].
Checked on x86_64-linux-gnu and i686-linux-gnu.
[BZ #23264]
* include/unistd.h (__execvpex): New prototype.
* posix/Makefile (tests): Add tst-spawn4.
(tests-internal): Add tst-spawn4-compat.
* posix/execvpe.c (__execvpe_common, __execvpex): New functions.
* posix/tst-spawn4-compat.c: New file.
* posix/tst-spawn4.c: Likewise.
* sysdeps/unix/sysv/linux/spawni.c (__spawni): Do not interpret invalid
binaries as shell scripts.
* sysdeps/posix/spawni.c (__spawni): Likewise.
[1] https://sourceware.org/ml/libc-help/2018-06/msg00012.html
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 13 ++++
include/unistd.h | 2 +
posix/Makefile | 4 +-
posix/execvpe.c | 26 ++++++--
posix/tst-spawn4-compat.c | 77 ++++++++++++++++++++++++++
signal/tst-sigaction.c => posix/tst-spawn4.c | 54 +++++++++---------
sysdeps/posix/spawni.c | 4 +-
sysdeps/unix/sysv/linux/spawni.c | 4 +-
8 files changed, 146 insertions(+), 38 deletions(-)
create mode 100644 posix/tst-spawn4-compat.c
copy signal/tst-sigaction.c => posix/tst-spawn4.c (51%)
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Glibc-bugs
mailing list