1b5975d6bSopenharmony_ciFrom dad97d24d578dbefbebb41829b0ffb9e783cac7b Mon Sep 17 00:00:00 2001
2b5975d6bSopenharmony_ciFrom: Ray Strode <rstrode@redhat.com>
3b5975d6bSopenharmony_ciDate: Fri, 28 Oct 2022 11:21:04 -0400
4b5975d6bSopenharmony_ciSubject: [PATCH] Revert "Handling collision between standard i/o file
5b5975d6bSopenharmony_ci descriptors and newly created ones"
6b5975d6bSopenharmony_ci
7b5975d6bSopenharmony_cig_unix_open_pipe tries to avoid the standard io fd range
8b5975d6bSopenharmony_ciwhen getting pipe fds. This turns out to be a bad idea because
9b5975d6bSopenharmony_cicertain buggy programs rely on it using that range.
10b5975d6bSopenharmony_ci
11b5975d6bSopenharmony_ciThis reverts commit d9ba6150909818beb05573f54f26232063492c5b
12b5975d6bSopenharmony_ci
13b5975d6bSopenharmony_ciCloses: #2795
14b5975d6bSopenharmony_ciReopens: #16
15b5975d6bSopenharmony_ci
16b5975d6bSopenharmony_ciConflict:NA
17b5975d6bSopenharmony_ciReference:https://gitlab.gnome.org/GNOME/glib/-/commit/dad97d24d578dbefbebb41829b0ffb9e783cac7b
18b5975d6bSopenharmony_ci
19b5975d6bSopenharmony_ci---
20b5975d6bSopenharmony_ci glib/glib-unix.c | 24 ------------------------
21b5975d6bSopenharmony_ci 1 file changed, 24 deletions(-)
22b5975d6bSopenharmony_ci
23b5975d6bSopenharmony_cidiff --git a/glib/glib-unix.c b/glib/glib-unix.c
24b5975d6bSopenharmony_ciindex 4710c51168..bc152d7663 100644
25b5975d6bSopenharmony_ci--- a/glib/glib-unix.c
26b5975d6bSopenharmony_ci+++ b/glib/glib-unix.c
27b5975d6bSopenharmony_ci@@ -108,17 +108,6 @@ g_unix_open_pipe (int     *fds,
28b5975d6bSopenharmony_ci     ecode = pipe2 (fds, pipe2_flags);
29b5975d6bSopenharmony_ci     if (ecode == -1 && errno != ENOSYS)
30b5975d6bSopenharmony_ci       return g_unix_set_error_from_errno (error, errno);
31b5975d6bSopenharmony_ci-    /* Don't reassign pipes to stdin, stdout, stderr if closed meanwhile */
32b5975d6bSopenharmony_ci-    else if (fds[0] < 3 || fds[1] < 3)
33b5975d6bSopenharmony_ci-      {
34b5975d6bSopenharmony_ci-        int old_fds[2] = { fds[0], fds[1] };
35b5975d6bSopenharmony_ci-        gboolean result = g_unix_open_pipe (fds, flags, error);
36b5975d6bSopenharmony_ci-        close (old_fds[0]);
37b5975d6bSopenharmony_ci-        close (old_fds[1]);
38b5975d6bSopenharmony_ci-
39b5975d6bSopenharmony_ci-        if (!result)
40b5975d6bSopenharmony_ci-          g_unix_set_error_from_errno (error, errno);
41b5975d6bSopenharmony_ci-      }
42b5975d6bSopenharmony_ci     else if (ecode == 0)
43b5975d6bSopenharmony_ci       return TRUE;
44b5975d6bSopenharmony_ci     /* Fall through on -ENOSYS, we must be running on an old kernel */
45b5975d6bSopenharmony_ci@@ -127,19 +116,6 @@ g_unix_open_pipe (int     *fds,
46b5975d6bSopenharmony_ci   ecode = pipe (fds);
47b5975d6bSopenharmony_ci   if (ecode == -1)
48b5975d6bSopenharmony_ci     return g_unix_set_error_from_errno (error, errno);
49b5975d6bSopenharmony_ci-  /* Don't reassign pipes to stdin, stdout, stderr if closed meanwhile */
50b5975d6bSopenharmony_ci-  else if (fds[0] < 3 || fds[1] < 3)
51b5975d6bSopenharmony_ci-    {
52b5975d6bSopenharmony_ci-      int old_fds[2] = { fds[0], fds[1] };
53b5975d6bSopenharmony_ci-      gboolean result = g_unix_open_pipe (fds, flags, error);
54b5975d6bSopenharmony_ci-      close (old_fds[0]);
55b5975d6bSopenharmony_ci-      close (old_fds[1]);
56b5975d6bSopenharmony_ci-
57b5975d6bSopenharmony_ci-      if (!result)
58b5975d6bSopenharmony_ci-        g_unix_set_error_from_errno (error, errno);
59b5975d6bSopenharmony_ci-
60b5975d6bSopenharmony_ci-      return result;
61b5975d6bSopenharmony_ci-    }
62b5975d6bSopenharmony_ci 
63b5975d6bSopenharmony_ci   if (flags == 0)
64b5975d6bSopenharmony_ci     return TRUE;
65b5975d6bSopenharmony_ci-- 
66b5975d6bSopenharmony_ciGitLab
67b5975d6bSopenharmony_ci
68