aboutsummaryrefslogtreecommitdiff
path: root/libc/bionic/spawn.cpp
Commit message (Collapse)AuthorAgeFilesLines
* allowlist new Linux close_range() system call, use it in posix_spawn()Maciej Żenczykowski2022-04-291-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | Linux kernel's close_range() system call (currently) allows: close() unshare() fcntl(F_SETFD, FD_CLOEXEC) to be performed on ranges of fds. All 3 of these are already allowed by seccomp bpf: as such this doesn't allow you to do anything you can't already do. We can't add close_range() properly to bionic because we'd need to fiddle about with ltp and it's too late to add new T API anyway, so let's just make the direct syscall() call. We'll add proper support in U. See also: https://man7.org/linux/man-pages/man2/close_range.2.html Test: TreeHugger Bug: 229913920 Signed-off-by: Maciej Żenczykowski <maze@google.com> Change-Id: I85586d544fc23bed6aee59f00bdb79ee7a8150d1 Merged-In: I85586d544fc23bed6aee59f00bdb79ee7a8150d1
* posix_spawn - implement support for POSIX_SPAWN_CLOEXEC_DEFAULTMaciej Żenczykowski2022-04-271-1/+25
| | | | | | | | | | | | | | | | This new posix_spawn attribute flag marks all file descriptors (except stdin/out/err) as close-on-exec before executing any user registered file actions (posix_spawn_file_actions_addopen/adddup2). Test: TreeHugger Bug: 229913920 Original change: https://android-review.googlesource.com/c/platform/bionic/+/1955269 Merged-In: If458100d6a253a9b0348d4e93a9a610225f89615 Change-Id: If458100d6a253a9b0348d4e93a9a610225f89615 Signed-off-by: Maciej Żenczykowski <maze@google.com> (cherry picked from commit fb66c0c345f17d740b6a2ef7755f768dd5bd96ee)
* posix_spawn: always clear O_CLOEXEC for dup'ed fds.Elliott Hughes2022-02-161-1/+11
| | | | | | | | | | dup2(2) is a no-op if the new and old fds are equal, but it's pretty clear that any useful caller in the posix_spawn(3) context wants us to clear O_CLOEXEC even if we don't actually "move" the fd. Bug: https://www.austingroupbugs.net/view.php?id=411 Test: treehugger Change-Id: I5ce1a1f9216df5afd295cc9e35b84527873e9541
* Introduce api to track fd ownership in libc.Josh Gao2018-07-191-0/+2
| | | | | | | | | | | | | Add two functions to allow objects that own a file descriptor to enforce that only they can close their file descriptor. Use them in FILE* and DIR*. Bug: http://b/110100358 Test: bionic_unit_tests Test: aosp/master boots without errors Test: treehugger Change-Id: Iecd6e8b26c62217271e0822dc3d2d7888b091a45
* Add `struct sigaction64` and `sigaction64`.Elliott Hughes2018-02-011-4/+4
| | | | | | Bug: http://b/72493232 Test: ran tests Change-Id: I47b0560a30aa33a9b1f1978dfb7f84d2e3d389b8
* Add `sigset64_t` and accompanying functions.Elliott Hughes2018-01-301-8/+29
| | | | | | | | | This doesn't address `struct sigaction` and `sigaction`. That will come later. Bug: http://b/72493232 Test: ran tests Change-Id: I4134346757ce3a4dac6feae413361cec16223386
* Fix posix_spawn signal defaulting.Elliott Hughes2017-11-291-26/+34
| | | | | | | | | | | | Add a new stress test, and fix the code to pass it. We need to ensure that we reset signal handlers for caught signals before unblocking signals in the child, we need to ensure that this happens even if you haven't passed a pthread_spawn_attr_t, and we need to ensure that this happens if you pass in an empty sigdefault set. Bug: http://b/68707996 Test: ran tests Change-Id: I348e9b17b1bdf221591da42c0ada133d98471d66
* Simplify the posix_spawn sigdefault logic.Elliott Hughes2017-11-141-11/+5
| | | | | | | | | I don't think there's any observable difference, but this is certainly simpler. Bug: http://b/68707996 Test: ran tests Change-Id: Id9e1a7d40533c90d073ebf391a72bbdfe79627de
* Fix missing includes, again.Dan Albert2017-10-131-0/+2
| | | | | | Test: mma Bug: None Change-Id: I17f07e51ebb425ebbcd2cd48e2aa173ab728c498
* Implement <spawn.h>.Elliott Hughes2017-10-111-0/+316
As described here: http://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html And here: http://man7.org/linux/man-pages/man3/posix_spawn.3.html Bug: N/A (but mentioned in my inbox since 2013) Test: ran tests Change-Id: I0b27b2919b660779e3bd8a25fb429527c16dc621