Commit graph xserver/os
Author SHA1 Message Date
Olivier Fourdan
e4b68f9248 os: Add busfault_set_jmp() for SIGBUS unwind
Allow callers to arm a sigjmp_buf on a registered mapping so the
SIGBUS handler can siglongjmp instead of remapping and retrying the
faulting instruction.

Needed when the mapping contains objects that are unsafe to resume
on after a replace.

This is preparation work for the next commit where that mechanism is
used.

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Assisted-by: AI
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2270>
(cherry picked from commit 7a0b3e2197)
2026-10-20 19:47:40 +02:00
Sergey Fedorov
0556c02cd9 os/client.c: don't depend on libdispatch on macOS
DetermineClientCmd() only used libdispatch for dispatch_once_f(), to
cache kern.argmax. libdispatch doesn't exist before macOS 10.6, so
replace it with a plain lazy init. It's only called from the main
thread (via ReserveClientIds()), so no extra synchronization is needed.
This also drops the hw/xquartz/osxcompat.h include from os/.

Signed-off-by: Sergey Fedorov <vital.had@gmail.com>
2026-10-13 15:32:39 +02:00
Sergey Fedorov
e196bd73ca os/client.c: portability fix: use generic code on macOS 10.5
Older xquartz used generic code for macOS, so use it now if no dispatch available.
See: 16f52e51a2/os/client.c

Signed-off-by: Sergey Fedorov <vital.had@gmail.com>
2026-10-13 15:32:39 +02:00
Sergey Fedorov
99f26056ed xquartz: fix regression due to unconditional usage of qos APIs
Fixes breakage introduced by b4b8617fe6

Signed-off-by: Sergey Fedorov <vital.had@gmail.com>
2026-10-13 13:04:25 +02:00
Enrico Weigelt, metux IT consult
436458b5a3 os: drop Linux abstract-socket support for the local transport
The Unix-domain socket transport optionally bound a Linux "abstract"
socket (the @/tmp/.X11-unix/Xn variant with a leading NUL in sun_path)
in addition to the classic filesystem socket. Remove that abstract
variant; on Linux the local transport now behaves exactly like on every
other platform: a single Unix-domain socket under /tmp/.X11-unix.

Reasons:

  - It is Linux-only. Abstract sockets are a Linux extension that does
    not exist on the BSDs, Solaris, macOS, Cygwin, etc., so the feature
    was already carried behind #ifdef __linux__ and only ever benefited
    one platform while the code had to be maintained for all.

  - It carries a fair amount of extra, special-case code for that single
    platform: an abstract flag threaded through set_sun_path(),
    CreateListener and ResetListener, the leading-NUL / trailing-'@'
    sun_path fixups and their bespoke namelen computation, a dedicated
    TRANS_ABSTRACT transport flag, and a second ("unix" vs "local")
    transport-table entry whose semantics flipped depending on whether
    abstract sockets were available. All of that is now gone.

  - The classic filesystem socket has to exist anyway. libX11/libxcb
    only *prefer* the abstract socket and fall back to the path socket,
    and non-abstract clients (and every non-Linux client) need the path
    socket regardless. So the abstract socket was never load-bearing:
    it was a second, parallel endpoint duplicating one we must keep.

  - It is problematic for containers. Abstract sockets live in the
    network namespace rather than the mount namespace, so they cannot be
    bind-mounted into a container/sandbox and leak across the netns
    boundary, unlike the filesystem socket which can be shared (or
    withheld) via a bind mount and constrained by filesystem
    permissions. Sandboxes (flatpak, firejail, ...) already suppress the
    abstract socket for exactly this reason.

  - It does not fit the Unix philosophy. "Everything is a file" is the
    whole point of a Unix-domain socket; an abstract socket is a name in
    an opaque kernel namespace with no filesystem presence, no path, no
    ownership and no permission bits. It exists to paper over userspace
    lifecycle issues (stale socket files, cleanup on crash) by pushing
    them into the kernel instead of solving them in userspace -- the same
    kind of "work around a userspace problem inside the kernel" design
    that got kdbus rejected [1]. Those userspace problems are already
    handled for the path socket (stat/unlink on reset, mkdir of the
    socket dir).

No client-visible behaviour changes on a normal desktop: clients that
tried the abstract socket first simply fall back to the filesystem
socket that the server has always also created.

[1] https://lkml.iu.edu/hypermail/linux/kernel/1504.3/02040.html

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-10-12 14:16:18 +02:00
Enrico Weigelt, metux IT consult
8d2974982b dix: unexport autosetDPI
This was accidentially exported. No external driver ever had a chance
to use it yet, so unexport it now.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-10-07 14:53:45 +02:00
Jeremy Huddleston Sequoia
b4b8617fe6 darwin: Set thread priorities to user interactive or user initiated as appropriate
Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
2026-09-30 19:24:05 +02:00
Peter Hutterer
7770acd009 Disable font server connections by default
At this point, allowing X Font Server connections just introduces us to
possible security issues since the code effectively trusts any font
server and few checks are in place.

Since font servers also haven't been used for ages, let's disable
them by default. Use-cases that require them will have to pass
+fontserverconnections on the commandline and/or set the corresponding
ServerFlags option.

The tests are a bit hacky: Debian builds libXfont2 with --disable-fc so
we need to cater for the case where the X server enables fontserver support
but libXfont then blocks it and we still need to treat this as success.

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2263>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-09-29 18:24:47 +02:00
kaolinite7
2b7cbdda1a Add Support for DPI Auto-Detection
This PR re-adds support for DPI Auto-Detection which was available in X.Org till 21.1, but was removed. This reverts commit 35af1299 and allows to get Auto DPI Detection back only when specified by user as:
$ X -dpi auto
2026-08-31 14:37:35 +02:00
Enrico Weigelt, metux IT consult
56be9f4320 os: fix undefined behavior in FormatInt64() for INT64_MIN
Some checks failed
Build X servers / drivers-build-ubuntu (video-siliconmotion:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sis:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sisusb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg14:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg3:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
'num * -1' is undefined behavior when num is INT64_MIN, since the
positive value (9223372036854775808) exceeds INT64_MAX.

Fix by casting to uint64_t before negation, which is well-defined
unsigned modular arithmetic and produces the correct absolute value
for all int64_t values including INT64_MIN.

Fixes: https://github.com/X11Libre/xserver/issues/3610
Fixes: 2a41522349
Reported-by: Alex <alexzk1@users.noreply.github.com>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-08-27 15:51:43 +02:00
daemonratte
760d5c2ed1 fix getrandom fallback
Some checks failed
Build X servers / drivers-build-ubuntu (video-siliconmotion:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sis:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sisusb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg14:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg3:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
The fallback used an undefined variable and was missing the header
for getrandom(). Also avoid doing pointer arithmetic on void *.

Tested with musl on real MIPS32el, MIPS64eb, PowerPC32 and PowerPC64eb hardware.

Fixes: #3034
Signed-off-by: daemonratte <daemonratte@daemonratte.net>
2026-08-26 10:01:48 +02:00
Enrico Weigelt, metux IT consult
7ae3b4f2a7 os: use stdbool's 'bool' instead of 'Bool' for local variables
Some checks failed
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-08-07 14:49:20 +02:00
Enrico Weigelt, metux IT consult
b40d0ec6fd license: add X11 OR MIT OR AGPL-3.0-or-later to Enrico Weigelt's source files
Some checks failed
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
Update SPDX-License-Identifier from MIT OR X11 (or MIT OR X11 OR AGPLv3+ variants)
to the canonical X11 OR MIT OR AGPL-3.0-or-later on 95 existing source files.
Add the triple-license header to 33 newly-identified files authored by Enrico
Weigelt that were missing SPDX headers entirely.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-29 10:02:59 +02:00
Enrico Weigelt, metux IT consult
4ebdb499dd Xext: remove the XF86-BigFont extension
Some checks failed
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
XF86-BigFont lets local clients share font-metrics arrays via SysV
shared memory (and compresses them for remote clients) -- a local-only
optimization dating back to ancient XFree86. It hasn't been built by
default for really long time.

Enabling it in our CI immediately exposed that the code has bit-rotted
on 7 non-Linux CI lanes (macOS/BSD: including a nonexistent Linux-only
header; Solaris: an ARRAY_SIZE redefinition pulled in via its system
headers; mingw32: implicit geteuid()/getegid() plus an unused variable).
Concrete evidence that this extension currently has no real users
exercising it, since none of that breakage was ever noticed.

Therefore no practical need for carrying it around any longer.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-27 18:31:44 +02:00
Enrico Weigelt, metux IT consult
d0c80c45a2 treewide: rename OsVendorFatalError() and OsVendorInit()
Some checks failed
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
There isn't any "vendor" since ancient xfree86 4.x times anymore,
but there're different DDX'es having their own init and fatal error
logic, so "ddx" is the correct prefix.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-27 17:13:54 +02:00
Enrico Weigelt, metux IT consult
9b7d25945f os: drop xstrcasestr()
Some checks failed
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
Windows is the only platform not providing strcasestr, and it's only
user is the xfree86 DDX, which only runs on Unix.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-23 14:35:08 +02:00
dongshengyuan
f8051cf079 enhance: popen-fdopen-error-handling
If fdopen() fails, close the unused pipe fd, free the pid list node,
and restore the smart scheduler signal before returning NULL.
Previously the fd would leak and the node would be added to pidlist
with a NULL fp.

Signed-off-by: dongshengyuan <545258830@qq.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2236>
2026-07-23 11:43:13 +02:00
Enrico Weigelt, metux IT consult
e25f7999e1 os: client: check calloc() result before sysctl(KERN_PROC_ARGS)
Some checks failed
Build X servers / drivers-build-ubuntu (video-siliconmotion:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sis:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sisusb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg14:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg3:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
DetermineClientCmd()'s FreeBSD/DragonFly branch passed calloc()'s
result straight to sysctl() as the output buffer, then unconditionally
strlen()/strdup()'d it, with no NULL check in between. A failed
allocation (OOM) would hand sysctl() a NULL buffer pointer and, should
that not fault on its own, fall through to strlen(NULL)/strdup(NULL).

Add the same NULL check already used for the equivalent macOS
KERN_PROCARGS2 buffer a few lines up in this same function.

Not locally compile-tested (no FreeBSD/DragonFly toolchain available
in this environment) -- mirrors the exact, already-working pattern
from the macOS branch above it; relying on this project's FreeBSD CI
lane to confirm.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-15 12:28:20 +02:00
Enrico Weigelt, metux IT consult
4016148b81 os: gate SVR4-only socket headers on HAVE_SYS_*_H, not SVR4
Some checks failed
Build X servers / drivers-build-ubuntu (video-siliconmotion:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sis:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sisusb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg14:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg3:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
<sys/filio.h>, <sys/sockio.h> and <sys/stropts.h> were included under
the grab-bag SVR4 / __SVR4 OS macro. Whether these headers exist is a
per-header question, so probe them directly:

  - conf_data gains HAVE_SYS_FILIO_H / HAVE_SYS_SOCKIO_H /
    HAVE_SYS_STROPTS_H via cc.has_header (alongside the other
    HAVE_SYS_*_H checks),
  - os/Xtranssock.c gates <sys/filio.h> on HAVE_SYS_FILIO_H,
  - os/access.c gates <sys/sockio.h> on HAVE_SYS_SOCKIO_H and
    <sys/stropts.h> on HAVE_SYS_STROPTS_H (split into independent guards
    since they are now independent probes).

<sys/stropts.h> is SVR4/Solaris-only, so its check is exactly
equivalent to the old SVR4 guard. <sys/filio.h> and <sys/sockio.h> also
exist on the BSDs, so they are now correctly included there too (they
provide the FIO*/SIOC* ioctls and are idempotent — the BSD <sys/ioctl.h>
already pulls them in), which is the intended "include it where it
exists" behaviour rather than "only on SVR4".

Verified: Linux -Dwerror=true build gets all three as #undef (none of
the headers exist there, identical to SVR4 being undefined) and links
Xvfb and Xnest cleanly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-07 13:29:44 +02:00
Enrico Weigelt, metux IT consult
32a02ab792 os: Xtranssock: brace set_sun_path()'s if bodies
Some checks failed
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
Mechanical, brace-only conversion of set_sun_path()'s previously
unbraced single-statement if bodies, per the always-brace-if/while/for
coding-style policy. No logic changes.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-07 12:00:39 +02:00
Enrico Weigelt, metux IT consult
26e24dba36 os/access.c: drop dead <sys/utsname.h> include
The `#if defined(SVR4) || defined(__GNU__)` include of <sys/utsname.h>
is unused: access.c calls neither uname() nor references struct utsname
anywhere. Host-name retrieval was long ago factored out into
xhostname() (os/xhostname.h), which owns the gethostname()/uname()
logic; the include here is a leftover. The explanatory comment above
the xhostname() call (mentioning uname()) is kept — it still documents
why xhostname is preferred over gethostname().

No feature flag needed — there is nothing to gate. Verified: Linux
-Dwerror=true build still links Xvfb and Xnest.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-02 13:21:09 +02:00
Enrico Weigelt, metux IT consult
b9d651f800 os: gate <sys/param.h> on HAVE_SYS_PARAM_H, not CSRG_BASED
Some checks failed
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
Whether <sys/param.h> is available is a header question, not an
OS-family question. Both os/connection.c and os/access.c included it
under `#ifdef CSRG_BASED` (i.e. "is this a BSD-derived system or
Darwin?") — a grab-bag OS macro standing in for the concrete fact that
actually matters. Replace it with a proper feature check.

Add HAVE_SYS_PARAM_H via cc.has_header('sys/param.h') to conf_data
(alongside the other HAVE_SYS_*_H probes) and switch both includes to
it. This is behaviour-preserving:

  - On the BSD/Darwin systems where CSRG_BASED was set, sys/param.h
    exists, so the header is still included.
  - In os/access.c the inner `#if (BSD >= 199103)` guard is unchanged:
    BSD is only defined by sys/param.h itself (on real BSD), so on other
    platforms it stays undefined and VARIABLE_IFREQ is not defined —
    exactly as before.
  - On platforms that always have sys/param.h (e.g. glibc/Linux) the
    header is now also included, which is harmless.

Verified: Linux build with -Dwerror=true configures and links Xvfb and
Xnest cleanly (no MIN/MAX or other redefinition from the widened
include).

First step of replacing the tree's grab-bag OS-family #ifdefs
(CSRG_BASED, SVR4, ...) with concrete, meson-detectable feature flags.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-02 11:42:50 +02:00
Enrico Weigelt, metux IT consult
9049e6ca59 os: drop the never-defined XTHREADS_NEEDS_BYNAMEPARAMS blocks
Some checks failed
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
XTHREADS_NEEDS_BYNAMEPARAMS is defined nowhere in the tree — not by the
meson build, not by any header. Its six `#ifdef XTHREADS_NEEDS_BYNAMEPARAMS`
blocks (in access.c, Xtranssock.c, utils.c, xdmcp.c) each only declared a
_Xget{host,serv}bynameparams buffer for the old reentrant _XGethostbyname /
_XGetservbyname wrappers. The declaration was therefore never compiled, and
the buffer is only referenced inside the equally-uncompiled pre-getaddrinfo
gethostbyname fallbacks. Pure dead code; remove it.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-01 15:50:50 +02:00
Enrico Weigelt, metux IT consult
005820f517 os: set IPv6 sin6_len to the sockaddr length, not the storage size
Some checks failed
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
SocketINETCreateListener set sin6_len = sizeof(sockname) (the
sockaddr_storage, 256 bytes) instead of the actual sockaddr_in6 length.
sin6_len is a u_int8_t, so 256 truncates to 0 — on BSD44SOCKETS/SIN6_LEN
platforms (e.g. OpenBSD) the IPv6 listener address carried a zero length.
Use namelen (= sizeof(struct sockaddr_in6)), mirroring the AF_INET branch's
sin_len = namelen. clang flagged this as -Werror=constant-conversion once
the openbsd lane was switched to -Dwerror=true.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-01 11:40:27 +02:00
Enrico Weigelt, metux IT consult
b8b994fffb os: don't declare the /proc cmdline vars on OpenBSD
DetermineClientCmd declares path/totsize/fd under
!__APPLE__ && !__DragonFly__ && !__FreeBSD__, but they are used only in the
Linux/Solaris /proc/pid/cmdline branch (#else). OpenBSD has its own
kvm_getprocs branch that doesn't touch them, so on OpenBSD (clang) they are
unused -> -Werror=unused-variable. Exclude __OpenBSD__ from the declaration
guard too, matching the branch that actually consumes them.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-07-01 11:40:27 +02:00
Enrico Weigelt, metux IT consult
404035349b os: handle snprintf() truncation explicitly in set_sun_path()
Check the snprintf() return value instead of pre-computing the combined
string length against a separate maxlen guard. The two are equivalent,
but GCC's -Wformat-truncation cannot connect the manual length check to
the snprintf() bound and warns anyway -- fatal under -Werror on newer
GCC (e.g. AlmaLinux/RHEL 10, gcc 14).

Evaluating the return value makes the truncation handling explicit and
silences the false positive, with identical behaviour: a path that does
not fit returns -1.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-30 13:34:29 +02:00
Enrico Weigelt, metux IT consult
4564f0f16f [PR #3162] os: add optional debug logging of WriteToClient() frontend calls
Some checks failed
Build X servers / drivers-build-ubuntu (video-r128:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-rendition:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-s3virge:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-savage:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-siliconmotion:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sis:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sisusb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg14:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg3:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
Add a buildtime-selectable meson option 'debug_writetoclient' that logs
every call going through the exported WriteToClient() frontend, to help
track down which (out-of-tree / not-yet-converted) callers still use the
legacy public entry point instead of dixWriteToClient().

  - none      (default): no logging, the frontend stays a plain tail call
  - caller:   log client/count plus the immediate caller (return address,
              resolved to a symbol name via dladdr() when available)
  - backtrace: log client/count plus a full xorg_backtrace() stack

The option maps to CONFIG_DEBUG_WRITETOCLIENT[_BACKTRACE] in dix-config.h.
Internal reply/event paths use dixWriteToClient() directly and are not
affected by this logging.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PR: https://github.com/X11Libre/xserver/pull/3162
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-26 23:17:09 +02:00
Enrico Weigelt, metux IT consult
3369a29359 [PR #3162] os: split WriteToClient() into exported frontend and internal dixWriteToClient()
Move the actual body of WriteToClient() into a new internal worker
dixWriteToClient() and turn WriteToClient() into a thin exported
frontend that just delegates to it.

This separates the two roles the function had: the exported, legacy
entry point kept for ABI compatibility with out-of-tree drivers/modules,
and the worker used by all in-tree reply/event paths. In-tree callers
will be moved over to dixWriteToClient() in the following commits, which
also lets the frontend be instrumented later without affecting internal
paths.

dixWriteToClient() is declared in the private os/io_priv.h but still
exported (_X_EXPORT), since in-tree modules that may be built as separate
shared objects (e.g. GLX) need to link against it.

The xi1/xi2 protocol unit tests intercept the reply path via
-Wl,-wrap,WriteToClient. As the in-tree reply path moves onto
dixWriteToClient(), retarget the linker wrap (and the WRAP_FUNCTION /
wrapped_* references) to dixWriteToClient(); this also covers calls that
still go through the WriteToClient() frontend, since it funnels into the
same worker.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PR: https://github.com/X11Libre/xserver/pull/3162
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-26 23:17:09 +02:00
Victor Lev
79ab39029d os/strlcpy, os/strlcat: add restrict qualifiers to dst and src pointers
strlcpy()/strlcat() require non-overlapping source and destination
buffers by contract, so mark the parameters restrict to make that
explicit and enable additional compiler optimizations.

Use the portable _X_RESTRICT_KYWD macro (from <X11/Xfuncproto.h>, pulled
in via os.h) rather than the bare C99 'restrict' keyword, matching the
existing convention in os/xprintf.c and include/Xprintf.h.

Signed-off-by: Victor Lev <levvictor123@gmail.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 15:45:46 +02:00
Victor Lev
8b24694693 os/strlcpy, os/strlcat: remove register keyword from local variables
register is a no-op hint in all modern C compilers and has been
ignored since at least C99. Remove it for cleaner code.

Signed-off-by: Victor Lev <levvictor123@gmail.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 15:45:46 +02:00
Enrico Weigelt, metux IT consult
4e2bcc9985 dix: add dixAnyOtherGrabbed() and unexport GrabInProgress
* the `GrabInProgress` field isn't used by any known drivers, thus
  no need to export it
* the only in-tree consumer outside of it's source file is Xext/saver.c,
  which actually just wants to know whether any *other* client already
  grabbed the server - asking the OS layer isn't the right source
  (should ask dix/dispatch.c instead)

Therefore adding a simple function for that check into dispatch.c (where
grab/ungrab is actually controlled), so we can easily make this internal
field static again.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-25 15:31:46 +02:00
Enrico Weigelt, metux IT consult
639da9e136 treewide: replace min/max macros by non-exported MIN/MAX and deprecate them
Replace public min/max macros by private MIN/MAX and deprecate them.
The few drivers still using them can trivially define them on their own.
Adding a new private header for all kind of math-ish definitions - future
commits will move more stuff there.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-25 14:06:17 +02:00
Enrico Weigelt, metux IT consult
cf377259db os: busfault: drop retval from busfault_init()
Nobody's ever looking at the return value - and in case of error,
there's not much we can do, but emit an error message.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-25 08:46:20 +02:00
itz-me-zappex
de081d4c04 dix: fix typo "InputThreadFini()" -> "InputThreadFinish()"
Signed-off-by: itz-me-zappex <85901674+itz-me-zappex@users.noreply.github.com>
2026-06-25 07:35:39 +02:00
Enrico Weigelt, metux IT consult
a738ece10f os: parentheses around macro argument symbols
For safety, add extra parantheses on each used macro argument.
In most cases not strictly necessary, but better have some strict
and automatically enforcable policy here than wasting time on
judging individual cases.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-24 15:05:16 +02:00
Enrico Weigelt, metux IT consult
876c782094 treewide: clean up includes of misc.h
adding include/ prefix to it.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-19 19:24:57 +02:00
Enrico Weigelt, metux IT consult
e77e698303 os: fix missing includes of <assert.h>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-18 16:18:12 +02:00
Enrico Weigelt, metux IT consult
b159041404 os: drop ifdef on CLIENTIDS
it's especially needed for xres, which is always enabled anyways.
no need for the extra complexity here.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-18 13:50:17 +02:00
Enrico Weigelt, metux IT consult
ea530f571c os: rename __size_assert() into __SIZE_ASSERT()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-18 12:01:35 +02:00
Enrico Weigelt, metux IT consult
55d6421b53 xkb: move it under Xext/
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-17 17:46:12 +02:00
Enrico Weigelt, metux IT consult
f7d7861371 present: move it under Xext/
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-16 19:18:39 +02:00
Enrico Weigelt, metux IT consult
e1d69b59dd Xext: xf86bigfont: move it into it's own subdir
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-16 08:27:39 +02:00
Enrico Weigelt, metux IT consult
6cbd9ee388 Xext: dpms: refactor entrypoints for DIX/DDX
Refactor the entry pointer header, add documentation and move
it to a more suitable place.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-15 16:41:30 +02:00
Enrico Weigelt, metux IT consult
cedcb83034 os: osdep.h: fix FTBS on musl
https://github.com/X11Libre/xserver/issues/2890

musl doesn't indirectly include errno.h as much as other libc's do.
In general it's a good idea to always explicitly include what's needed,
instead of relying on indirect includes.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 11:14:56 +02:00
Peter Hutterer
c7a91b33df os/access: fix off-by-one in hostname character validation range
In siHostnameCheckAddr(), the digit validation range was 0x30-0x3A, but
0x3A is the colon character (':'). The ASCII range for digits 0-9 is
0x30-0x39.

Colons in hostnames violate RFC 2396 section 3.2.2 and we're not parsing
the host:port notation here.

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2200>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-05 14:55:38 +02:00
Peter Hutterer
a9575f4b7a os/log: handle NULL string argument in vpnprintf
Since this function is called from signal handlers (e.g. OsSigHandler
processing SIGSEGV/SIGBUS), a NULL %s argument triggers a recursive fault.

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2200>

----------------------------------------------------------------------------

Modified to fit Xlibre changes.
See: https://github.com/X11Libre/xserver/pull/2794

Signed-off-by: stefan11111 <stefan11111github@gmail.com>
2026-06-05 11:11:41 +02:00
Mikhail Dmitrichenko
1d863e7e58 os: check ospoll allocation failures
ospoll_create() initializes backend-specific state immediately after
allocating the ospoll structure. Check the allocation result for each
backend before dereferencing it and return NULL on failure.

Signed-off-by: Mikhail Dmitrichenko <m.dmitrichenko222@gmail.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2217>
2026-06-03 19:10:01 +02:00
John Studnicka
b477959552 lint: Add targeted NOLINT on existing ASM
Some checks failed
Build X servers / drivers-build-ubuntu (video-nouveau:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-nv:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-omap:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-qxl:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-r128:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-rendition:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-s3virge:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-savage:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-siliconmotion:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sis:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sisusb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg14:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg3:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
Signed-off-by: John Studnicka <contact@zentec.dev>
2026-05-26 12:15:17 +02:00
Aggelos Tselios
1e0c1fa022 os: client: rename get_argmax_fptr to get_argmax_from_kern
Some checks failed
Build X servers / drivers-build-ubuntu (video-nouveau:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-nv:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-omap:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-qxl:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-r128:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-rendition:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-s3virge:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-savage:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-siliconmotion:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sis:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sisusb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg14:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg3:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
the _fptr suffix is used in other parts when they replaced apple blocks
functionality. However in this case a more descriptive name is better
(since this function can technically be reused in other places in the
future)

Signed-off-by: Aggelos Tselios <aggelostselios777@gmail.com>
2026-05-23 11:30:04 +02:00
Aggelos Tselios
ab31666079 os: client: replace apple block with proper function
Replace an apple block in DetermineClientCmd with a regular C function,
in the part responsible for fetching argmax from the kernel on Apple
systems.

Signed-off-by: Aggelos Tselios <aggelostselios777@gmail.com>
2026-05-23 11:30:04 +02:00