From: Jan Grulich Date: Mon, 8 Jan 2024 12:19:01 +0000 (+0100) Subject: Xvnc: do not use dup2() to create a file descriptor for -inetd option X-Git-Tag: v1.13.90~33 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F1714%2Fhead;p=tigervnc.git Xvnc: do not use dup2() to create a file descriptor for -inetd option Use dup() instead to get an available file descriptor to avoid hijacking already existing descriptor. Fixes #1709 --- diff --git a/unix/xserver/hw/vnc/xvnc.c b/unix/xserver/hw/vnc/xvnc.c index f8141959..e13d09fd 100644 --- a/unix/xserver/hw/vnc/xvnc.c +++ b/unix/xserver/hw/vnc/xvnc.c @@ -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