xserver/test
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Peter Hutterer 8304192c3c dix: remove passive grabs referencing a device on removal
Passive grabs (GrabRec) store raw DeviceIntPtr values for both the
grabbed device and the modifier device without any lifetime management.
When a device is removed via XIRemoveMaster, CloseDevice() frees the
device struct, but leaves dangling pointers in grab->modifierDevice
for any grab that used this device.

Subsequent pointer events trigger CheckPassiveGrab() which dereferences
the dangling modifierDevice pointer for XI grabs (the CORE and XI2 paths
reassign it, but the XI path does not).

This vulnerability was discovered by:
  Anonymous working with TrendAI Zero Day Initiative

ZDI-CAN-31832

CVE-2026-93516

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2341>
(cherry picked from commit be57263415)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2026-10-20 19:53:06 +02:00
..
bigreq
bugs tests: enable CI for both GLES2 and GLES3 variants 2023-10-09 17:25:28 +00:00
damage tests: plug leak of results in compute_expected_damage() 2026-04-21 12:19:39 +02:00
info test/info: run display-info tests serialised to avoid display-number race 2026-10-19 16:39:15 +02:00
pyxtest dix: remove passive grabs referencing a device on removal 2026-10-20 19:53:06 +02:00
scripts dix: drop DE_RESET and associated cmdline args 2025-11-18 18:22:25 +01:00
sync test: fix <assert.h> includes 2026-06-18 10:13:25 +02:00
xi1 test: fix <assert.h> includes 2026-06-18 10:13:25 +02:00
xi2 Xi: byte-swap DeviceChanged valuator and scroll data 2026-10-03 19:02:23 +02:00
.gitignore
fixes.c test: fix <assert.h> includes 2026-06-18 10:13:25 +02:00
hashtabletest.c test: fix <assert.h> includes 2026-06-18 10:13:25 +02:00
input.c treewide: clean up includes of misc.h 2026-06-19 19:24:57 +02:00
list.c test: add assert()s to fix analyzer warnings 2025-06-12 16:35:00 +02:00
meson.build test: add pytest-based test suite 2026-06-08 14:00:03 +02:00
misc.c treewide: clean up includes of misc.h 2026-06-19 19:24:57 +02:00
README
sha1.c test: add unit tests for x_sha1_* functions in os/xsha1. 2025-12-12 14:28:18 +01:00
signal-logging.c test: Fix locale-dependent assertion in signal-logging test 2026-10-05 17:03:00 +02:00
simple-xinit.c test: simple-xinit: fix warning on unused result of write() 2025-12-09 20:01:44 +01:00
string.c test: add assert()s to fix analyzer warnings 2025-06-12 16:35:00 +02:00
test_xkb.c treewide: clean up includes of misc.h 2026-06-19 19:24:57 +02:00
tests-common.c test: switch the unit tests to something resembling a test suite 2024-01-30 00:15:10 +00:00
tests-common.h test: switch the unit tests to something resembling a test suite 2024-01-30 00:15:10 +00:00
tests.c test: add unit tests for x_sha1_* functions in os/xsha1. 2025-12-12 14:28:18 +01:00
tests.h test: add unit tests for x_sha1_* functions in os/xsha1. 2025-12-12 14:28:18 +01:00
touch.c test: fix <assert.h> includes 2026-06-18 10:13:25 +02:00
xfree86.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
xtest.c test: xtest.c: fix missing include of <assert.h> 2026-06-18 15:54:22 +02:00

                        X server test suite

This suite contains a set of tests to verify the behaviour of functions used
internally to the server.

= How it works =
Through some automake abuse, we link the test programs with the same static
libraries as the Xorg binary. The test suites can then call various functions
and verify their behaviour - without the need to start the server or connect
clients.

This testing only works for functions that do not rely on a particular state
of the X server. Unless the test suite replicates the expected state, which
may be difficult.

= How to run the tests =
Run "make check" in the test directory. This will compile the tests and execute
them in the order specified in the TESTS variable in test/Makefile.am.

Each set of tests related to a subsystem are available as a binary that can be
executed directly. For example, run "xkb" to perform some xkb-related tests.

== Adding a new test ==
When adding a new test, ensure that you add a short description of what the
test does and what the expected outcome is.