From dad97d24d578dbefbebb41829b0ffb9e783cac7b Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 28 Oct 2022 11:21:04 -0400 Subject: [PATCH] Revert "Handling collision between standard i/o file descriptors and newly created ones" g_unix_open_pipe tries to avoid the standard io fd range when getting pipe fds. This turns out to be a bad idea because certain buggy programs rely on it using that range. This reverts commit d9ba6150909818beb05573f54f26232063492c5b Closes: #2795 Reopens: #16 --- glib/glib-unix.c | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/glib/glib-unix.c b/glib/glib-unix.c index 4710c5116..bc152d766 100644 --- a/glib/glib-unix.c +++ b/glib/glib-unix.c @@ -108,17 +108,6 @@ g_unix_open_pipe (int *fds, ecode = pipe2 (fds, pipe2_flags); if (ecode == -1 && errno != ENOSYS) return g_unix_set_error_from_errno (error, errno); - /* Don't reassign pipes to stdin, stdout, stderr if closed meanwhile */ - else if (fds[0] < 3 || fds[1] < 3) - { - int old_fds[2] = { fds[0], fds[1] }; - gboolean result = g_unix_open_pipe (fds, flags, error); - close (old_fds[0]); - close (old_fds[1]); - - if (!result) - g_unix_set_error_from_errno (error, errno); - } else if (ecode == 0) return TRUE; /* Fall through on -ENOSYS, we must be running on an old kernel */ @@ -127,19 +116,6 @@ g_unix_open_pipe (int *fds, ecode = pipe (fds); if (ecode == -1) return g_unix_set_error_from_errno (error, errno); - /* Don't reassign pipes to stdin, stdout, stderr if closed meanwhile */ - else if (fds[0] < 3 || fds[1] < 3) - { - int old_fds[2] = { fds[0], fds[1] }; - gboolean result = g_unix_open_pipe (fds, flags, error); - close (old_fds[0]); - close (old_fds[1]); - - if (!result) - g_unix_set_error_from_errno (error, errno); - - return result; - } if (flags == 0) return TRUE;