mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-06-07 09:58:20 +02:00
Add screensaver protocol builders for SetAttributes, UnsetAttributes, and ForceScreenSaver, then add a regression test that reproduces the CreateSaverWindow use-after-free. The test sequence: 1. SetAttributes(root, 100x100, mask=0) - creates screen private with attr 2. ForceScreenSaver(Active) - creates the saver window 3. UnsetAttributes(root) - clears pPriv->attr to NULL 4. ForceScreenSaver(Active) - re-enters CreateSaverWindow Without the fix, step 4 triggers CheckScreenPrivate which finds all fields empty (attr=NULL, events=NULL, hasWindow=FALSE, installedMap=None), frees pPriv, and sets the screen private to NULL. The function then dereferences the freed pPriv->attr pointer, causing a use-after-free. Assisted-by: Claude:claude-opus-4-6 Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2228> |
||
|---|---|---|
| .. | ||
| bigreq | ||
| bugs | ||
| damage | ||
| pyxtest | ||
| scripts | ||
| sync | ||
| xi1 | ||
| xi2 | ||
| .gitignore | ||
| fixes.c | ||
| hashtabletest.c | ||
| input.c | ||
| list.c | ||
| meson.build | ||
| misc.c | ||
| README | ||
| sha1.c | ||
| signal-logging.c | ||
| simple-xinit.c | ||
| string.c | ||
| test_xkb.c | ||
| tests-common.c | ||
| tests-common.h | ||
| tests.c | ||
| tests.h | ||
| touch.c | ||
| 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.