From: Rich Felker Date: Sun, 3 Feb 2013 22:09:47 +0000 (-0500) Subject: fix unsigned comparison bug in posix_spawn X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=commitdiff_plain;h=4862864fc1a6d162b297db09c216b136db83d7dd;hp=fb6b159d9ec7cf1e037daa974eeeacf3c8b3b3f1 fix unsigned comparison bug in posix_spawn read should never return anything but 0 or sizeof ec here, but if it does, we want to treat any other return as "success". then the caller will get back the pid and is responsible for waiting on it when it immediately exits. --- diff --git a/src/process/posix_spawn.c b/src/process/posix_spawn.c index c55907d3..dd450129 100644 --- a/src/process/posix_spawn.c +++ b/src/process/posix_spawn.c @@ -152,7 +152,7 @@ int __posix_spawnx(pid_t *restrict res, const char *restrict path, close(args.p[1]); if (pid > 0) { - if (read(args.p[0], &ec, sizeof ec) < sizeof ec) ec = 0; + if (read(args.p[0], &ec, sizeof ec) != sizeof ec) ec = 0; else waitpid(pid, &(int){0}, 0); } else { ec = -pid;