]> git.ipfire.org Git - thirdparty/gcc.git/commit
libiberty: Fix error return value in pex_unix_exec_child [PR113957].
authorIain Sandoe <iain@sandoe.co.uk>
Fri, 16 Feb 2024 14:42:53 +0000 (14:42 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Mon, 19 Feb 2024 20:13:30 +0000 (20:13 +0000)
commit20e57660e64eab7c9ef0f2dd25f3088835f8f44f
treecfb9ee449bfedba4541a2e2120b07e90b1441161
parent2322b6dd4a8b0b0a771a696368eefadc7be24ddc
libiberty: Fix error return value in pex_unix_exec_child [PR113957].

r14-5310-g879cf9ff45d940 introduced some new handling for spawning sub
processes.  The return value from the generic exec_child is examined
and needs to be < 0 to signal an error. However, the unix flavour of
this routine is returning the PID value set from the posix_spawn{p}.

This latter value is undefined per the manual pages for both Darwin
and Linux, and it seems Darwin, at least, sets the value to some
usually positive number (presumably the PID that would have been used
if the fork had succeeded).

The fix proposed here is to set the pid = -1 in the relevant error
paths.

PR other/113957

libiberty/ChangeLog:

* pex-unix.c (pex_unix_exec_child): Set pid = -1 in the error
paths, since that is used to signal an erroneous outcome for
the routine.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
libiberty/pex-unix.c