xserver/os
Twaik Yont 59673c0503 os: use close-on-exec for X server socket to prevent fd leaks
In most typical Linux X servers (like Xvfb, Xephyr, or Xwayland),
no child process outlives the server, so this issue rarely arises.
However, in embedded X servers (based on Xvfb or Kdrive) or in
custom Xorg modules, the server might launch a long-running command
with regular fork+exec calls. If the X server crashes or exits while
that command is still running (for example, it spawns a tombstone
generator or any process that hangs or turns to zombie), the file
descriptor associated with the abstract socket can remain open in the
child process. This leads to the kernel refusing to allow another X
server to bind the same socket until the child process terminates
(because there is no explicit way to unlink abstract socket, unlike
Unix socket). By marking the file descriptor as close-on-exec, we
ensure it is automatically closed in child processes, preserving the
ability of a new X server process to bind the socket immediately.

Signed-off-by: Twaik Yont <9674930+twaik@users.noreply.github.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1906>
(cherry picked from commit 5568b0f83f)
2026-01-25 10:40:02 -08:00
..
.gitignore dix and os: gitignore dix.O and os.O 2011-09-23 17:14:47 -07:00
access.c os: if getaddrinfo() is available, use it, even if IPv6 support is disabled 2026-01-25 10:39:58 -08:00
auth.c os: drop SUN-DES-1 authentication 2026-01-25 10:39:53 -08:00
backtrace.c os: backtrace: Fix -Wincompatible-pointer-types compiler error on 32-bit targets 2026-01-25 10:40:00 -08:00
busfault.c include: move busfault.h out of public include dir 2026-01-19 12:32:26 -08:00
busfault.h os: fix missing include of misc.h in busfault.h 2026-01-19 12:48:30 -08:00
client.c Return NULL in *cmdname if the client argv or argv[0] is NULL 2026-01-25 10:39:56 -08:00
connection.c os: use close-on-exec for X server socket to prevent fd leaks 2026-01-25 10:40:02 -08:00
inputthread.c os, shm: fcntl()'s third argument is integer, not pointer 2020-12-18 09:36:30 -05:00
io.c os: Check for integer overflow on BigRequest length 2026-01-25 10:40:02 -08:00
log.c os: let vpnprintf() accept %X 2026-01-25 10:40:01 -08:00
meson.build os: drop SUN-DES-1 authentication 2026-01-25 10:39:53 -08:00
mitauth.c os: Use memcpy() instead of memmove() when buffers are known not to overlap 2022-08-29 21:10:51 +00:00
oscolor.c os: unexport OsLookupColor() 2026-01-19 12:47:57 -08:00
osdep.h dix: Use __builtin_popcountl if available to replace Ones() 2026-01-25 10:39:57 -08:00
osinit.c os/osinit: fix build when execinfo.h is missing 2026-01-25 10:40:00 -08:00
ospoll.c os: move xserver_poll.h into os/ directory 2026-01-25 10:39:54 -08:00
ospoll.h os: Add ospoll interface [v2] 2016-07-21 15:04:47 -04:00
reallocarray.c Import reallocarray() from OpenBSD 2015-04-21 16:57:08 -07:00
strcasecmp.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
strcasestr.c os: fix mising prototype / include on WIN32 builds 2026-01-19 12:32:19 -08:00
strlcat.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
strlcpy.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
strndup.c os: Ensure <dix-config.h> is included in strndup.c 2013-02-14 09:20:46 -08:00
timingsafe_memcmp.c timingsafe_memcmp: Fix meson build 2017-05-10 10:56:16 -04:00
utils.c os: remove unused definition of BUGADDRESS 2026-01-25 10:40:01 -08:00
WaitFor.c os: NextDPMSTimeout: mark intentional fallthroughs in switch 2026-01-25 10:39:57 -08:00
xdmauth.c os: Use memcpy() instead of memmove() when buffers are known not to overlap 2022-08-29 21:10:51 +00:00
xdmcp.c os: if getaddrinfo() is available, use it, even if IPv6 support is disabled 2026-01-25 10:39:58 -08:00
xprintf.c Remove "All rights reserved" from Oracle copyright notices 2023-02-25 09:40:41 -08:00
xserver_poll.c os: move xserver_poll.h into os/ directory 2026-01-25 10:39:54 -08:00
xserver_poll.h os: move xserver_poll.h into os/ directory 2026-01-25 10:39:54 -08:00
xsha1.c include: move xsha1.h to os/ 2026-01-19 12:32:20 -08:00
xsha1.h include: move xsha1.h to os/ 2026-01-19 12:32:20 -08:00
xstrans.c Clean up a couple of warnings in os/ 2013-10-31 16:58:12 -07:00