dup3: don't set FD_CLOEXEC on failure on kernels without dup3 syscall
authorRich Felker <dalias@aerifal.cx>
Tue, 28 Feb 2023 20:44:46 +0000 (15:44 -0500)
committerRich Felker <dalias@aerifal.cx>
Tue, 28 Feb 2023 20:44:46 +0000 (15:44 -0500)
commit3281047cfca0f3848d0613e3c0d19d41b0531564
tree92a91bd746e35c5bc9a7f59db9d1d73c89fa50af
parentc99b7daafdbf1e2415bf408e67ca7813e7ddeedf
dup3: don't set FD_CLOEXEC on failure on kernels without dup3 syscall

this is the best-effort fallback path for kernels that can't actually
support the dup3 functionality. it was setting FD_CLOEXEC flag on the
target fd (new) even if the dup2 operation failed. normally that
shouldn't happen under correct usage, but it's possible if the source
fd is not open or intentionally invalid (e.g. -1).
src/unistd/dup3.c