]> source.dussan.org Git - tigervnc.git/commitdiff
Xvnc: do not use dup2() to create a file descriptor for -inetd option 1714/head
authorJan Grulich <jgrulich@redhat.com>
Mon, 8 Jan 2024 12:19:01 +0000 (13:19 +0100)
committerJan Grulich <jgrulich@redhat.com>
Mon, 8 Jan 2024 13:28:01 +0000 (14:28 +0100)
Use dup() instead to get an available file descriptor to avoid hijacking
already existing descriptor.

Fixes #1709

unix/xserver/hw/vnc/xvnc.c

index f814195938114805bfaa5a26675dc7f071b448ae..e13d09fd6bb4176d9ea88e8267bda349c1c292d7 100644 (file)
@@ -366,8 +366,10 @@ ddxProcessArgument(int argc, char *argv[], int i)
     if (strcmp(argv[i], "-inetd") == 0) {
         int nullfd;
 
-        dup2(0, 3);
-        vncInetdSock = 3;
+        if ((vncInetdSock = dup(0)) == -1)
+            FatalError
+                ("Xvnc error: failed to allocate a new file descriptor for -inetd: %s\n", strerror(errno));
+
 
         /* Avoid xserver >= 1.19's epoll-fd becoming fd 2 / stderr only to be
            replaced by /dev/null by OsInit() because the pollfd is not