xserver/test
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Peter Hutterer 2822958bbf xkb: allocate names->keys to MAP_LENGTH in XkbAllocNames
Commit a3171732d ("xkb: Always use MAP_LENGTH keymap size") converted
most XKB allocation functions to use MAP_LENGTH (256) instead of
max_key_code + 1. It also removed the per-array reallocarray() calls in
XkbChangeKeycodeRange(), replacing them with a memset up to MAP_LENGTH.
However, XkbAllocNames() was missed and still allocates names->keys to
max_key_code + 1.

When a keycodes component with max_key_code < 255 is loaded (e.g.
sun(type6) with max_key_code=132) and then a SetMap request extends
maxKeyCode to 255, XkbChangeKeycodeRange() memsets names->keys from
max_key_code to MAP_LENGTH-1, writing past the undersized allocation.

Fix by allocating names->keys to MAP_LENGTH, consistent with all other
keymap arrays after a3171732d.

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

ZDI-CAN-31941

CVE-2026-93520

Fixes: a3171732da ("xkb: Always use MAP_LENGTH keymap size")

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>
(cherry picked from commit b941a473e0)
2026-10-20 19:54:36 +02:00
..
bigreq test/bigreq: check write() return in request-length 2026-07-01 11:40:27 +02:00
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-16 14:08:52 +02:00
pyxtest xkb: allocate names->keys to MAP_LENGTH in XkbAllocNames 2026-10-20 19:54:36 +02:00
scripts .github: use go-x11proto test suite in the CI 2026-06-25 20:16:15 +02:00
sync test: fix <assert.h> includes 2026-06-18 10:13:25 +02:00
xi1 [PR #3162] os: split WriteToClient() into exported frontend and internal dixWriteToClient() 2026-06-26 23:17:09 +02:00
xi2 Xi: test XIQueryDevice values for relative scroll valuators 2026-10-05 20:27:19 +02:00
.gitignore tests: Convert test/ to single binary 2017-01-12 15:01:36 -05:00
ddc-tests.c xfree86: ddc: parse CTA-861-G HDR static metadata + colorimetry data blocks 2026-08-24 13:50:42 +02:00
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 test: parentheses around macro argument symbols 2026-06-24 14:13:52 +02:00
list.c test: add assert()s to fix analyzer warnings 2025-06-12 16:35:00 +02:00
list_zeroinit.c license: add X11 OR MIT OR AGPL-3.0-or-later to Enrico Weigelt's source files 2026-07-29 10:02:59 +02:00
meson.build xfree86: ddc: parse CTA-861-G HDR static metadata + colorimetry data blocks 2026-08-24 13:50:42 +02:00
misc.c test: parentheses around macro argument symbols 2026-06-24 14:13:52 +02:00
README test: Fix typo and drop documentation references to glib. 2015-09-23 10:48:12 -04:00
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-04 15:04:46 +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: silence -Wanalyzer-null-argument warnings in strndup tests 2026-09-30 11:51:09 +02:00
test_xkb.c treewide: clean up includes of misc.h 2026-06-19 19:24:57 +02:00
tests-common.c Revert "test: fail when a child terminates abnormally" 2026-10-05 14:15:20 +02: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 xfree86: ddc: parse CTA-861-G HDR static metadata + colorimetry data blocks 2026-08-24 13:50:42 +02:00
tests.h xfree86: ddc: parse CTA-861-G HDR static metadata + colorimetry data blocks 2026-08-24 13:50:42 +02: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.