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));
|
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||||
goto posix_spawn_fail_all;
|
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;
|
break;
|
||||||
case SDL_PROCESS_STDIO_APP:
|
case SDL_PROCESS_STDIO_APP:
|
||||||
if (!CreatePipe(stdin_pipe)) {
|
if (!CreatePipe(stdin_pipe)) {
|
||||||
goto posix_spawn_fail_all;
|
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) {
|
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));
|
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||||
goto posix_spawn_fail_all;
|
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;
|
break;
|
||||||
case SDL_PROCESS_STDIO_NULL:
|
case SDL_PROCESS_STDIO_NULL:
|
||||||
if (posix_spawn_file_actions_addopen(&fa, STDIN_FILENO, "/dev/null", O_RDONLY, 0) != 0) {
|
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));
|
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||||
goto posix_spawn_fail_all;
|
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;
|
break;
|
||||||
case SDL_PROCESS_STDIO_APP:
|
case SDL_PROCESS_STDIO_APP:
|
||||||
if (!CreatePipe(stdout_pipe)) {
|
if (!CreatePipe(stdout_pipe)) {
|
||||||
goto posix_spawn_fail_all;
|
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) {
|
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));
|
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||||
goto posix_spawn_fail_all;
|
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;
|
break;
|
||||||
case SDL_PROCESS_STDIO_NULL:
|
case SDL_PROCESS_STDIO_NULL:
|
||||||
if (posix_spawn_file_actions_addopen(&fa, STDOUT_FILENO, "/dev/null", O_WRONLY, 0644) != 0) {
|
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));
|
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||||
goto posix_spawn_fail_all;
|
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;
|
break;
|
||||||
case SDL_PROCESS_STDIO_APP:
|
case SDL_PROCESS_STDIO_APP:
|
||||||
if (!CreatePipe(stderr_pipe)) {
|
if (!CreatePipe(stderr_pipe)) {
|
||||||
goto posix_spawn_fail_all;
|
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) {
|
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));
|
SDL_SetError("posix_spawn_file_actions_adddup2 failed: %s", strerror(errno));
|
||||||
goto posix_spawn_fail_all;
|
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;
|
break;
|
||||||
case SDL_PROCESS_STDIO_NULL:
|
case SDL_PROCESS_STDIO_NULL:
|
||||||
if (posix_spawn_file_actions_addopen(&fa, STDERR_FILENO, "/dev/null", O_WRONLY, 0644) != 0) {
|
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 = {
|
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[] = {
|
static const SDLTest_TestCaseReference *processTests[] = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue