Commit 887af612 authored by Alexandre Julliard's avatar Alexandre Julliard

kernel32: Avoid the close-on-exec race with pipe() on kernels that support pipe2().

parent 6f68b774
......@@ -1304,12 +1304,18 @@ static int fork_and_exec( const char *filename, const WCHAR *cmdline, const WCHA
if (!env) env = GetEnvironmentStringsW();
if (pipe(fd) == -1)
#ifdef HAVE_PIPE2
if (pipe2( fd, O_CLOEXEC ) == -1)
#endif
{
SetLastError( ERROR_TOO_MANY_OPEN_FILES );
return -1;
if (pipe(fd) == -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)))
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment