mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-22 04:38:30 +00:00
Don't close file descriptors already handled by AddFileDescriptorCloseActions()
Fixes https://github.com/libsdl-org/SDL/issues/10997
This commit is contained in:
parent
5f5379dc99
commit
3b3c4a79b6
2 changed files with 1 additions and 37 deletions
|
@ -219,27 +219,15 @@ bool SDL_SYS_CreateProcessWithProperties(SDL_Process *process, SDL_PropertiesID
|
|||
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_addclose(&fa, fd) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_addclose failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
break;
|
||||
case SDL_PROCESS_STDIO_APP:
|
||||
if (!CreatePipe(stdin_pipe)) {
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_addclose(&fa, stdin_pipe[WRITE_END]) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_addclose failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_adddup2(&fa, stdin_pipe[READ_END], STDIN_FILENO) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_addclose(&fa, stdin_pipe[READ_END]) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_addclose failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
break;
|
||||
case SDL_PROCESS_STDIO_NULL:
|
||||
if (posix_spawn_file_actions_addopen(&fa, STDIN_FILENO, "/dev/null", O_RDONLY, 0) != 0) {
|
||||
|
@ -261,27 +249,15 @@ bool SDL_SYS_CreateProcessWithProperties(SDL_Process *process, SDL_PropertiesID
|
|||
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_addclose(&fa, fd) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_addclose failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
break;
|
||||
case SDL_PROCESS_STDIO_APP:
|
||||
if (!CreatePipe(stdout_pipe)) {
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_addclose(&fa, stdout_pipe[READ_END]) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_addclose failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_adddup2(&fa, stdout_pipe[WRITE_END], STDOUT_FILENO) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_addclose(&fa, stdout_pipe[WRITE_END]) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_addclose failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
break;
|
||||
case SDL_PROCESS_STDIO_NULL:
|
||||
if (posix_spawn_file_actions_addopen(&fa, STDOUT_FILENO, "/dev/null", O_WRONLY, 0644) != 0) {
|
||||
|
@ -309,27 +285,15 @@ bool SDL_SYS_CreateProcessWithProperties(SDL_Process *process, SDL_PropertiesID
|
|||
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_addclose(&fa, fd) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_addclose failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
break;
|
||||
case SDL_PROCESS_STDIO_APP:
|
||||
if (!CreatePipe(stderr_pipe)) {
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_addclose(&fa, stderr_pipe[READ_END]) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_addclose failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_adddup2(&fa, stderr_pipe[WRITE_END], STDERR_FILENO) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
if (posix_spawn_file_actions_addclose(&fa, stderr_pipe[WRITE_END]) != 0) {
|
||||
SDL_SetError("posix_spawn_file_actions_addclose failed: %s", strerror(errno));
|
||||
goto posix_spawn_fail_all;
|
||||
}
|
||||
break;
|
||||
case SDL_PROCESS_STDIO_NULL:
|
||||
if (posix_spawn_file_actions_addopen(&fa, STDERR_FILENO, "/dev/null", O_WRONLY, 0644) != 0) {
|
||||
|
|
|
@ -1010,7 +1010,7 @@ static const SDLTest_TestCaseReference processTestBatBadButVulnerability = {
|
|||
};
|
||||
|
||||
static const SDLTest_TestCaseReference processTestFileRedirection = {
|
||||
process_testFileRedirection, "process_testFileRedirection", "Test redirection from/to files", TEST_DISABLED
|
||||
process_testFileRedirection, "process_testFileRedirection", "Test redirection from/to files", TEST_ENABLED
|
||||
};
|
||||
|
||||
static const SDLTest_TestCaseReference *processTests[] = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue