xserver/test
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Peter Hutterer 0d1b1b0bad xkb: NULL text pointer after free in _CheckSetDoodad error path
_CheckSetDoodad() allocates doodad->text.text via _GetCountedString()
and then attempts to allocate doodad->text.font. If the font string
allocation fails (e.g. because the font string length extends past
the request boundary), the error handler frees doodad->text.text but
does not NULL the pointer. The doodad was already added to the geometry
by XkbAddGeomDoodad() before the string allocations, so when
XkbFreeGeometry() runs cleanup, _XkbClearDoodad() frees the same
dangling pointer again, resulting in a double-free.

NULL the pointer after freeing it to prevent the double-free.

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

ZDI-CAN-31221

CVE-2026-88812

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2341>
2026-10-06 14:32:11 +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 xkb: NULL text pointer after free in _CheckSetDoodad error path 2026-10-06 14:32:11 +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 test: use a dbg() macro for the test output 2024-01-30 00:15:10 +00:00
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 test: switch the unit tests to something resembling a test suite 2024-01-30 00:15:10 +00:00
hashtabletest.c test: use a dbg() macro for the test output 2024-01-30 00:15:10 +00:00
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 test: specify non-negative log verbosity for the siglogging test 2024-01-30 00:15:10 +00:00
simple-xinit.c test: simple-xinit: add _X_NORETURN 2026-01-19 12:32:23 -08:00
string.c test: silence -Wanalyzer-null-argument warnings in strndup tests 2026-08-09 15:29:21 -07:00
test_xkb.c xkb: drop defining XKBSRV_NEED_FILE_FUNCS 2026-01-19 12:32:18 -08:00
tests-common.c test: fail when a child terminates abnormally 2026-09-01 05:16:18 +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: 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 test: switch the unit tests to something resembling a test suite 2024-01-30 00:15:10 +00:00
xtest.c test: switch the unit tests to something resembling a test suite 2024-01-30 00:15:10 +00: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.