diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-04-25 17:54:03 +0000 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-10-09 17:48:41 -0300 |
commit | db8cbc6a7a435209dd04706cf43c3785baf2e326 (patch) | |
tree | 927479da9b3c9b8fb7d0c21b65a5b97eb3cda9cf /ChangeLog | |
parent | edcda4c08ac033f40a91cb4def2fd0fa35a760ca (diff) | |
download | glibc-db8cbc6a7a435209dd04706cf43c3785baf2e326.tar glibc-db8cbc6a7a435209dd04706cf43c3785baf2e326.tar.gz glibc-db8cbc6a7a435209dd04706cf43c3785baf2e326.tar.bz2 glibc-db8cbc6a7a435209dd04706cf43c3785baf2e326.zip |
posix: Use posix_spawn for wordexp
This patch replaces the fork+exec by posix_spawn on wordexp, which
allows a better scability on Linux and simplifies the thread
cancellation handling.
The only change which can not be implemented with posix_spawn the
/dev/null check to certify it is indeed the expected device. I am
not sure how effetive this check is since /dev/null tampering means
something very wrong with the system and this is the least of the
issues. My view is the tests is really out of the place and the
hardening provided is minimum.
If the idea is still to provide such check, I think a possibilty
would be to open /dev/null, check it, add a dup2 file action, and
close the file descriptor.
Checked on powerpc64le-linux-gnu and x86_64-linux-gnu.
* include/spawn.h (__posix_spawn_file_actions_addopen): New
prototype.
* posix/spawn_faction_addopen.c (posix_spawn_file_actions_addopen):
Add internal alias.
* posix/wordexp.c (create_environment, free_environment): New
functions.
(exec_comm_child, exec_comm): Use posix_spawn instead of fork+exec.
* posix/wordexp-test.c: Use libsupport.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -1,5 +1,14 @@ 2019-10-09 Adhemerval Zanella <adhemerval.zanella@linaro.org> + * include/spawn.h (__posix_spawn_file_actions_addopen): New + prototype. + * posix/spawn_faction_addopen.c (posix_spawn_file_actions_addopen): + Add internal alias. + * posix/wordexp.c (create_environment, free_environment): New + functions. + (exec_comm_child, exec_comm): Use posix_spawn instead of fork+exec. + * posix/wordexp-test.c: Use libsupport. + * sysdeps/unix/sysv/linux/mips/mips64/getdents64.c (__getdents64): Add small optimization for older kernel to avoid issuing __NR_getdents64 on each call and replace scratch_buffer usage with |