xserver/test
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Peter Hutterer bae088ccbd xkb: fix CheckKeySyms overwriting request-range symsPerKey entries
CheckKeySyms() has two loops: the first processes keys in the SetMap
request range, the second fills in any missing keys from the existing
map.

The indexing between the two was inconsistent: the first loop
uses a zero-based index + req->firstKeySym, the second loop used it just
as zero-based index.

Example:
   req->firstKeySym = 50
   req->nKeySyms = 10

  i goes from 0 to 10,
  loop 1 checks [50, 60), changes the width but finishes with i at 10.
  loop 2 then runs over [10, 255(, copying the old keymap width

The second loop overwrites the new widths with the width of the
existing keymap. The subsequent SetKeySyms worked on the new width
and may write fewer actions than the map width.

A subsequent XkbGetMap request would then read XkbKeyNumActions()
entries (derived from the new wider key_sym_map.width) from the shorter
action allocation, causing an out-of-bounds heap read. The overread
bytes would be copied into the GetMap reply and sent back to the client,
producing a bounded heap information disclosure.

This vulnerability was discovered by:
  WONJOON HWANG (@joon1337) working with TrendAI Zero Day Initiative

ZDI-CAN-32408

CVE-2026-93524

Assisted-by: Claude:claude-opus-4-6
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2341>
(cherry picked from commit cea71d0273)

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
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: fix CheckKeySyms overwriting request-range symsPerKey entries 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
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
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.