Commit graph xserver/test
Author SHA1 Message Date
Peter Hutterer
dc9c2f802f test/pyxtest: add test for ScreenSaverFreeAttr stale pPriv code path
Add TestScreenSaverFreeAttr which exercises the ScreenSaverFreeAttr
code path by setting attributes, activating the screen saver, then
closing the client connection (triggering resource cleanup).

While ScreenSaverFreeAttr currently does not dereference pPriv after
CheckScreenPrivate, this test verifies the code path is safe and
would catch regressions if future code changes introduced a stale
pointer dereference (same pattern as ZDI-CAN-30168).

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2228>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
0bce5476c4 test/pyxtest: add test for font alias stack overflow (ZDI-CAN-30136)
Add ListFonts, SetFontPath, and GetFontPath protocol builders to
proto/x11.py and a regression test that reproduces the
doListFontsAndAliases stack buffer overflow.

The test creates a temporary font directory with a fonts.alias file
containing an alias whose target name is 400 bytes -- exceeding the
old XLFDMAXFONTNAMELEN of 256 but under libXfont2's MAXFONTNAMELEN of
1024. It prepends this directory to the font path via SetFontPath, then
sends ListFonts matching the alias name. Without the fix, the server
would copy the oversized resolved name into a 256-byte stack buffer,
causing a stack buffer overflow.

ZDI-CAN-30136

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2228>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
2d4a997067 test/pyxtest: add test for XKB mapWidths stack OOB write (ZDI-CAN-30161)
Add a regression test that reproduces the mapWidths stack buffer overflow
in CheckKeyTypes.

The test sends two XkbSetMap requests: first with firstType=0, nTypes=255,
ResizeTypes to expand the type table to 255 entries, then with
firstType=255, nTypes=10, ResizeTypes. The second request passes the
firstType > num_types check (255 > 255 is false) and computes
nMaps = 255 + 10 = 265. Without the fix, the loop would write
mapWidths[255..264], overflowing 9 bytes past the 256-element stack
buffer into adjacent stack variables.

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2228>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
37f3461924 test/pyxtest: add test for XKB num_levels stack overflow (ZDI-CAN-30160)
Add a regression test that reproduces the XKB num_levels stack overflow.

The test sends an XkbSetMap request with XkbSetMapResizeTypes that includes
a non-canonical key type with numLevels=255, exceeding XkbMaxShiftLevel
(63). Without the fix, this type would be accepted and stored in the
server's type table. A subsequent ChangeKeyboardMapping would trigger
XkbUpdateKeyTypesFromCore -> XkbKeyTypesForCoreSymbols, where the
oversized num_levels is used as groupsWidth, causing indices into the
tsyms[252] stack buffer to reach up to 1019 and overflow.

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2228>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
83d6455813 test/pyxtest: add test for ScreenSaver CreateSaverWindow UAF (ZDI-CAN-30168)
Add screensaver protocol builders for SetAttributes, UnsetAttributes, and
ForceScreenSaver, then add a regression test that reproduces the
CreateSaverWindow use-after-free.

The test sequence:
1. SetAttributes(root, 100x100, mask=0) - creates screen private with attr
2. ForceScreenSaver(Active) - creates the saver window
3. UnsetAttributes(root) - clears pPriv->attr to NULL
4. ForceScreenSaver(Active) - re-enters CreateSaverWindow

Without the fix, step 4 triggers CheckScreenPrivate which finds all fields
empty (attr=NULL, events=NULL, hasWindow=FALSE, installedMap=None), frees
pPriv, and sets the screen private to NULL. The function then dereferences
the freed pPriv->attr pointer, causing a use-after-free.

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2228>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
369b5f51b4 test/pyxtest: add test for SyncChangeCounter trigger list UAF (ZDI-CAN-30164)
Add a regression test that reproduces the SyncChangeCounter use-after-free.

The test creates a counter (value=0) and issues SyncAwait with two
conditions on the same counter, both waiting for value >= 1. A second
client then calls SetCounter to set the value to 100. SyncChangeCounter
iterates triggers; the first fires and FreeAwait frees all sibling trigger
list nodes via SyncDeleteTriggerFromSyncObject. Without the fix, the saved
pnext pointer would dangle, and the next iteration would dereference freed
heap memory.

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2228>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
f2331c651c test/pyxtest: add tests for miSyncDestroyFence/FreeCounter (ZDI-CAN-30159/30163)
Add SYNC extension protocol builders (proto/sync.py) and a regression test
that reproduces the miSyncDestroyFence and FreeCounter use-after-free.

The first test creates a fence and issues AwaitFence with the same fence ID
listed twice, creating two trigger list nodes pointing into one
SyncAwaitUnion. A second client then destroys the fence. Without the fix,
miSyncDestroyFence would invoke CounterDestroyed before saving the next
pointer, and the first callback would free the SyncAwaitUnion while the
second trigger list node still referenced it.

The second test creates a counter (value=0) and issues SyncAwait with two
conditions on the same counter, both waiting for value >= 1. Since the
counter is 0, Client A blocks. A second client then destroys the counter.
Without the fix, FreeCounter would invoke CounterDestroyed before saving
the next pointer in the trigger list, and the first callback would free
the SyncAwaitUnion while the second trigger node still referenced it.

ZDI-CAN-30163 (FreeCounter)
ZDI-CAN-30159 (miSyncDestroyFence)

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2228>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
663c20362e test/pyxtest: add test for GLX ChangeDrawableAttributes OOB read (ZDI-CAN-30165)
Add GLX extension protocol builders (proto/glx.py) and a regression test
that reproduces the reversed length check in ChangeDrawableAttributes.

The test creates a GLX context on the root visual, binds it with
MakeCurrent (which auto-creates a GLXDrawable), then sends a
ChangeDrawableAttributes request with length=3 (12 bytes) but
numAttribs=2100. Without the fix, the reversed comparison operator (<
instead of >) would let this undersized request pass validation, and
DoChangeDrawableAttributes would iterate 2100 attribute pairs, reading
far past the 12-byte request buffer.

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2228>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
15cc6dfd4f pyxtest: rework the request handling to avoid to_bytes() invocations
xclient.send_request() should just take a Request object and handle
to_bytes with the right byte order. This avoids typos/copy-paste errors
in tests when the byte order changes between tests.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2216>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
745f380825 pyxtest: replace numerical error values with BadValue, etc.
Let's use human-readable variables for this.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2216>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
cf0e00596d pyxtest: document the --display option in the README
Fixes: 4d79ddd0b4 ("pyxtest: add --display for running a test against a manually started server")
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2216>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
3c21f34eeb pyxtest: fix the vidmode SwitchToModeRequest test
This test was missing SetClientVersion(2) so the reply was a the old 0.x
protocol (and the 36 byte GetModeLine reply). Update so it runs for both
versions now.

Fixes: acbc46e708 ("pyxtest: add tests for the byteswapping patches")
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2213>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
4fd0b129f4 pyxtest: require root to run the test as Xorg
This is the easiest way to notify users that it just won't run as-is.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2213>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
86b984599a pyxtest: fix xorg invocations when running from the build dir
We need a proper module tree set up so let's do this via symlinks during
the setup phase and then start the server with that as module path.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2213>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
f912223245 pyxtest: add test for present notify array byte-swap fix
The test sends a PresentPixmap request with a notify entry from a
byte-swapped client. Without the fix, the window ID in the notify
is not swapped, causing dixLookupWindow to fail with BadWindow.
With the fix, the window ID is correctly interpreted.

See 925edb6c9e ("present: Fix missing byte swaps in sproc_present_pixmap()")

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2212>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
da5ab48186 pyxtest: add test cases for the recent XKB fixes
See https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2208

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2211>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
c9f7077a77 pyxtest: add --display for running a test against a manually started server
This makes it much easier to debug an individual test since we can now
start an X server via valgrind/gdb/whatever and have the test client
connect to that server.

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2187>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
6adaaf4317 pyxtest: add tests for XI property data byte-swap fix
Add tests for commit b243ef9bc2 ("Xi: Swap property data in
SProcXChangeDeviceProperty/SProcXIChangeProperty").

Both tests set a format=32 property from a byte-swapped client and
read it back, verifying the values round-trip correctly. Without the
property data swap, the stored values have the wrong byte order.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2187>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
bf37a8e785 pyxtest: add tests for the byteswapping patches
Not a full list since not all can easily be tested but hey, better than
nothing.
See https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2181

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2187>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
c2e2bf8095 pyxtest: add test cases for the Screensaver extension CVEs of the last years
Commit 6c4c530107 ("Xext: Fix out of bounds access in SProcScreenSaverSuspend()")

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2187>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
998435a4c8 byxtest: add test cases for the RECORD extension CVEs of the last years
Commit 2902b78535 ("Fix XRecordRegisterClients() Integer underflow")

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2187>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
ffdd1830e1 pyxtest: add test cases for the various XKB CVEs from the last few years
Commit 446ff2d317 ("Check SetMap request length carefully.")
Commit 6907b6ea2b ("xkb: add request length validation for XkbSetGeometry")
Commit 4cd8533210 ("xkb: Fix buffer overflow in _XkbSetCompatMap()")
Commit f7cd1276bb ("Correct bounds checking in XkbSetNames()")

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2187>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
cac197605d pyxtest: add test cases for the RandR extension CVEs of the last years
Commit 541ab2ecd4 ("Xi/randr: fix handling of PropModeAppend/Prepend")
Commit 14f480010a ("randr: avoid integer truncation in length check of ProcRRChange*Property")

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2187>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
659f759239 pyxtest: add tests for XI property and passive grab CVEs
Commit 541ab2ecd4 ("Xi/randr: fix handling of PropModeAppend/Prepend")
Commit 8f454b793e ("Xi: avoid integer truncation in length check of ProcXIChangeProperty")
Commit 51eb63b0ee ("Xi: disallow passive grabs with a detail > 255")

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2187>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Peter Hutterer
0eabe641f1 test: add pytest-based test suite
This test suite is primarily aimed at reproducing the various CVE issues
we've had over the years that require custom crafted protocol requests.
It may also be useful for other testing.

Wrapped in python because pytest is a powerful test suite runner and
writing custom buffers is easy.

The architecture is so that we fork off an X server (one or more of
Xvfb, Xwayland, Xorg) and then run our test clients against that to
check whether we get the right reply, or crash the server, or whether
valgrind complains about something (valgrind is started automatically
for tests that are marked as such).

Tests can be run manually via pytest or via meson test.

Assisted-by: Claude:claude-claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2187>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-06-08 14:00:03 +02:00
Alan Coopersmith
6b500a23eb tests: plug leak of results in compute_expected_damage()
Reported in #1817:
xwayland-24.1.6/redhat-linux-build/../test/damage/primitives.c:68:43:
 warning[-Wanalyzer-malloc-leak]: leak of ‘get_image(setup, *setup.d)’

Fixes: 89901e14d ("test: Add the start of a testsuite for damage.")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2167>
2026-04-21 12:19:39 +02:00
Diego Viola
01e3bbf4c8 Fix typos
Some checks failed
Build X servers / xserver-build-ubuntu (push) Has been cancelled
Build X servers / drivers-build-ubuntu (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-cygwin (push) Has been cancelled
Build X servers / Check Signed-Off-By (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
Signed-off-by: Diego Viola <diego.viola@gmail.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2134>
2026-04-19 12:32:26 +02:00
stefan11111
e6a0fa4b0c Treewide: Fix typos
Signed-off-by: Diego Viola <diego.viola@gmail.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2134>

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

This commit is the result of `git apply commit.diff --reject`
applied on e8f4522312

67c82078fe does not
apply to Xlibre

Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2026-03-16 13:11:07 +01:00
Enrico Weigelt, metux IT consult
58e80dc78a mi: move over public SDK headers to include/
Some checks are pending
delete old workflow runs / delete_old_workflow_runs_branches (wip/logging) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/logging_submitted_1) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/maint-xnest) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/marshal) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/matrix-test) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/meson) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/misc.h) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/mpbt) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/netbsd) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/no-libsystemd) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/optional-pci) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/os-unexport) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/pciaccess) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/pedantic) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/pixmap-lifecycle) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/reallocarray) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/requests) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/screenproc) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/screenproc-wrap) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/swap0) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/swapping) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/swapping_new) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/warn-conv) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/win32_2) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xcb-marshal) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xf86_platform_bus_newabi) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xf86bigfont) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xi-properties) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xnest-render) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xnest-shm) (push) Waiting to run
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-02-12 16:21:38 +01:00
Enrico Weigelt, metux IT consult
ac568d017d test: drop unncessary include of dix-config.h from headers
This header needs to be included at the top of source files,
should not be done from other headers.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-02-10 13:23:59 +01:00
Enrico Weigelt, metux IT consult
5a7fb205a1 xkb: rename xkbgeom.h to xkbgeom_priv.h
Some checks are pending
delete old workflow runs / delete_old_workflow_runs_branches (wip/logging_submitted_1) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/maint-xnest) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/marshal) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/matrix-test) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/meson) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/misc.h) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/mpbt) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/netbsd) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/no-libsystemd) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/optional-pci) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/os-unexport) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/pciaccess) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/pedantic) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/pixmap-lifecycle) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/reallocarray) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/requests) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/screenproc) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/screenproc-wrap) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/swap0) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/swapping) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/swapping_new) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/warn-conv) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/win32_2) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xcb-marshal) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xf86_platform_bus_newabi) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xf86bigfont) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xi-properties) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xnest-render) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xnest-rootless) (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs_branches (wip/xnest-shm) (push) Waiting to run
Our naming convention for headers is that private ones (not exported,
ie. not part of xf86 sdk) shall be suffixed by "_priv.h".

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-01-20 12:45:01 +01:00
Alan Coopersmith
2fe12aa2b0 test: add unit tests for x_sha1_* functions in os/xsha1.
Simple confirmation of known values, not exhaustive testing.

Tested with SHA-1 implementations from:
 - libcrypto (OpenSSL 3)
 - libgcrypt
 - libnettle
 - Solaris libmd

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2066>
2025-12-12 14:28:18 +01:00
Enrico Weigelt, metux IT consult
21fbe9394b test: fix tautological constant out of range warning
>  ../test/misc.c:172:5: warning: result of comparison of constant 4611686018427387903 with expression of type 'CARD32' (aka 'unsigned int') is always true [-Wtautological-constant-out-of-range-compare]
>     172 |     REQUEST_FIXED_SIZE(req, SIZE_MAX);
>         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   ../include/dix.h:88:25: note: expanded from macro 'REQUEST_FIXED_SIZE'
>      88 |             (((n) >> 2) >= client->req_len) ||                         \
>         |              ~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~

We don't really need SIZE_MAX (platform specific) for this job, just a big
enough number.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-11 20:36:09 +01:00
Enrico Weigelt, metux IT consult
d7a3c8901e test: fix signess warning
> ../test/xi2/protocol-xiwarppointer.c:169:24: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
>     169 | request.dst_x = -1 << 16;
>         | ~~ ^
> ../test/xi2/protocol-xiwarppointer.c:182:24: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
>     182 | request.dst_y = -1 << 16;
>         | ~~ ^

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-11 20:14:39 +01:00
Enrico Weigelt, metux IT consult
1786c8c406 test: simple-xinit: fix warning on unused result of write()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-09 20:01:44 +01:00
Enrico Weigelt, metux IT consult
220089822b test: consistenly name reply structs "reply" instead of "rep"
Preparation for future use of generic reply assembly macros.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-12-04 17:41:15 +01:00
Mike Gelfand
64e4ded9fb test: move include guards up to wrap the whole file
See: https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html
Signed-off-by: Mike Gelfand <mikedld@mikedld.com>
2025-11-21 15:20:11 +01:00
Enrico Weigelt, metux IT consult
f27e12c918 dix: drop DE_RESET and associated cmdline args
Drop the -reset flag, so Xserver now either simply continues (w/o going
through internal reset) when last client disconnected or terminates
when -terminate is given.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-11-18 18:22:25 +01:00
Enrico Weigelt, metux IT consult
ea5fade41c test: simple-xinit: ignore compiler warning on write()
Some checks are pending
Build X servers / xserver-build-ubuntu (push) Waiting to run
Build X servers / drivers-build-ubuntu (push) Waiting to run
Build X servers / xserver-build-mingw32-ubuntu (push) Waiting to run
Build X servers / xserver-build-macos (push) Waiting to run
Build X servers / xserver-build-freebsd (push) Waiting to run
Build X servers / xserver-build-dragonflybsd (push) Waiting to run
Build X servers / Release pushed tag (push) Blocked by required conditions
check PRs for merge conflicts / notify (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs (push) Waiting to run
delete old workflow runs / purge_deleted_branch_workflows (push) Waiting to run
This warning doesn't matter in this case:

> ../test/simple-xinit.c: In function ‘handle_sigchld’:
> ../test/simple-xinit.c:69:5: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
>    69 |     write(server_displayfd, server_dead, strlen(server_dead));
>       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In order to allow building w/ -Werror, it should be suppressed.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-11-06 11:24:15 +01:00
Enrico Weigelt, metux IT consult
d7eac08a22 Xi: inline SProcXISelectEvents() and SProcXIGetSelectedEvents()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-10-30 09:44:41 +01:00
Enrico Weigelt, metux IT consult
0fbb681fce treewide: use helper dixGetScreenPtr() for retrieving ScreenPtr's
Instead of directly accessing the global screenInfo.screens[] array,
let everybody go through a little inline helper. This one also checks
for array bounds - if the screen doesn't exist, return NULL.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-10-30 09:44:24 +01:00
Enrico Weigelt, metux IT consult
8d46c06965 Xi: inline SProcXIQueryPointer()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-10-29 10:57:52 +01:00
Enrico Weigelt, metux IT consult
e125d9badb Xi: inline SProcXIWarpPointer()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-10-29 10:56:57 +01:00
Enrico Weigelt, metux IT consult
8051613229 Xi: inline SProcXIQueryVersion()
Some checks are pending
Build X servers / xserver-build-ubuntu (push) Waiting to run
Build X servers / drivers-build-ubuntu (push) Waiting to run
Build X servers / xserver-build-mingw32-ubuntu (push) Waiting to run
Build X servers / xserver-build-macos (push) Waiting to run
Build X servers / xserver-build-freebsd (push) Waiting to run
Build X servers / xserver-build-dragonflybsd (push) Waiting to run
Build X servers / Release pushed tag (push) Blocked by required conditions
check PRs for merge conflicts / notify (push) Waiting to run
delete old workflow runs / delete_old_workflow_runs (push) Waiting to run
delete old workflow runs / purge_deleted_branch_workflows (push) Waiting to run
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-10-26 13:59:05 +01:00
Enrico Weigelt, metux IT consult
7d9fb7b4a0 Xi: inline SProcXIPassiveGrabDevice() and SProcXIPassiveUngrabDevice()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-10-26 13:58:17 +01:00
Enrico Weigelt, metux IT consult
25818f04c3 Xi: inline SProcXIGetClientPointer() and SProcXISetClientPointer()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-10-26 13:56:58 +01:00
Enrico Weigelt, metux IT consult
175dbe3661 Xi: inline SProcXIQueryDevice()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-29 11:19:10 +02:00
Enrico Weigelt, metux IT consult
4fa442b6eb Xi: inline SProcXChangeDeviceControl()
No need to have a hole bunch of extra functions, if we can just easily
inline the few relevant lines.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-24 11:39:51 +02:00
Enrico Weigelt, metux IT consult
358f76f2ad treewide: fix misleading firstScreen variable naming to masterScreen
Some checks are pending
Build X servers / xserver-build-ubuntu (push) Waiting to run
Build X servers / drivers-build-ubuntu (push) Waiting to run
Build X servers / xserver-build-mingw32-ubuntu (push) Waiting to run
Build X servers / xserver-build-macos (push) Waiting to run
Build X servers / xserver-build-freebsd (push) Waiting to run
Build X servers / Release pushed tag (push) Blocked by required conditions
check PRs for merge conflicts / notify (push) Waiting to run
Follow-up on renaming dixGetFirstScreenPtr() to dixGetMasterScreen():
also rename the target variables for correct technical terminology.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 11:44:05 +02:00
Enrico Weigelt, metux IT consult
b0ffa7b286 treewide: rename dixGetFirstScreenPtr() to dixGetMasterScreen() for correct semantics
In Xinerama/Panoramix configuration there's one screen that's having special
meaning - it's used for simulating as the frontend for all client operations:
the clients (should) only talk to that screen, while panoramix subsystem is
proxying those operations to all the other screens (with certain changed
applied, eg. coordinate transformations).

Historically, this screen happens to be the first one in the system (some of
it's proc's are hooked up in order to achieve desired behaviour). That's why it
used to be accessed via screenInfo.screens[0] - that already had been encapsulated
into a tiny helper `dixGetFirstScreen()`.

a) the correct terminus technicus for a situation where one device (or SW entity)
   entirely controlling others is a master-slave-relationship: the controlling
   device/entity is `master`, the controlled ones are `slave` (to that specific
   master).

b) the term "first screen" is inacurate and misleading here: what the caller's are
   actually interest in isn't the first entry in the screen array, but the screen
   that's controlling the others. With upcoming refactoring of the Xinerama/Panoramix
   subsystem, this might well be a different array index than 0.

c) the term `default` also wouldn't match: `default` implies there's a real practical
   choice, and such value applies when no explicit choice has been made. But in this
   case, it practically doesn't make sense (except perhaps for debugging purpose)
   for a client to use any different screen.

Therefore fixing the function name to the correct technical terminology.
(for sake of patch readability, renaming corresponding variables is left to
subsequent patches).

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-09-12 11:44:05 +02:00