xserver/test
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Peter Hutterer be57263415 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>
2026-10-06 15:25:16 +10:00
..
bigreq
bugs Strip trailing whitespace from source files 2026-01-25 10:40:02 -08:00
damage tests: Handle -Wanalyzer-possible-null-dereference in damage/primitives.c 2026-04-04 16:19:48 +00:00
pyxtest dix: remove passive grabs referencing a device on removal 2026-10-06 15:25:16 +10:00
scripts os: drop SUN-DES-1 authentication 2026-01-25 10:39:53 -08:00
sync test: Fix xsync test 2026-01-25 10:40:01 -08:00
xi1
xi2 Use _X_FALLTHROUGH macro to silence fallthrough warnings in clang as well 2026-09-12 18:25:58 +00:00
xkb test: cover an incomplete keymap in XkbGetKbdByName 2026-10-05 08:06:06 +00:00
.gitignore
fixes.c
hashtabletest.c
input.c Fix typos 2026-03-03 06:50:01 -03:00
list.c test: remove stray semi-colons after functions 2026-01-25 10:40:01 -08:00
meson.build test: cover an incomplete keymap in XkbGetKbdByName 2026-10-05 08:06:06 +00:00
misc.c test: remove extra return 2026-01-25 10:40:01 -08:00
README
sha1.c test: add unit tests for x_sha1_* functions in os/xsha1.c 2026-01-25 10:40:02 -08:00
signal-logging.c
simple-xinit.c
string.c test: silence -Wanalyzer-null-argument warnings in strndup tests 2026-08-09 15:29:21 -07:00
test_xkb.c
tests-common.c test: fail when a child terminates abnormally 2026-09-01 05:16:18 +00:00
tests-common.h
tests.c test: cover an incomplete keymap in XkbGetKbdByName 2026-10-05 08:06:06 +00:00
tests.h test: cover an incomplete keymap in XkbGetKbdByName 2026-10-05 08:06:06 +00:00
touch.c treewide: replace xnfstrdup() calls by XNFstrdup() 2026-01-25 10:39:55 -08:00
xfree86.c
xtest.c

                        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.