kernel32: Avoid the close-on-exec race with pipe() on kernels that support pipe2().
This commit is contained in:
parent
6f68b774d7
commit
887af61219
|
@ -1304,12 +1304,18 @@ static int fork_and_exec( const char *filename, const WCHAR *cmdline, const WCHA
|
||||||
|
|
||||||
if (!env) env = GetEnvironmentStringsW();
|
if (!env) env = GetEnvironmentStringsW();
|
||||||
|
|
||||||
if (pipe(fd) == -1)
|
#ifdef HAVE_PIPE2
|
||||||
|
if (pipe2( fd, O_CLOEXEC ) == -1)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
SetLastError( ERROR_TOO_MANY_OPEN_FILES );
|
if (pipe(fd) == -1)
|
||||||
return -1;
|
{
|
||||||
|
SetLastError( ERROR_TOO_MANY_OPEN_FILES );
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
fcntl( fd[0], F_SETFD, FD_CLOEXEC );
|
||||||
|
fcntl( fd[1], F_SETFD, FD_CLOEXEC );
|
||||||
}
|
}
|
||||||
fcntl( fd[1], F_SETFD, 1 ); /* set close on exec */
|
|
||||||
|
|
||||||
if (!(flags & (CREATE_NEW_PROCESS_GROUP | CREATE_NEW_CONSOLE | DETACHED_PROCESS)))
|
if (!(flags & (CREATE_NEW_PROCESS_GROUP | CREATE_NEW_CONSOLE | DETACHED_PROCESS)))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue