Enrico Weigelt, metux IT consult
00843efafb
Xext: drop disable flag for GE extension
...
There's really no practical use for disabling GEEext, would just
cause the Xserver misbehaviour (eg. missing byte swapping)
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1812 >
2025-02-26 13:34:19 +00:00
Olivier Fourdan
c285798984
sync: Apply changes last in SyncChangeAlarmAttributes()
...
SyncChangeAlarmAttributes() would apply the various changes while
checking for errors.
If one of the changes triggers an error, the changes for the trigger,
counter or delta value would remain, possibly leading to inconsistent
changes.
Postpone the actual changes until we're sure nothing else can go wrong.
Related to CVE-2025-26601, ZDI-CAN-25870
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828 >
2025-02-25 16:11:58 +01:00
Olivier Fourdan
8cbc90c881
sync: Do not fail SyncAddTriggerToSyncObject()
...
We do not want to return a failure at the very last step in
SyncInitTrigger() after having all changes applied.
SyncAddTriggerToSyncObject() must not fail on memory allocation, if the
allocation of the SyncTriggerList fails, trigger a FatalError() instead.
Related to CVE-2025-26601, ZDI-CAN-25870
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828 >
2025-02-25 11:43:01 +01:00
Olivier Fourdan
f52cea2f93
sync: Check values before applying changes
...
In SyncInitTrigger(), we would set the CheckTrigger function before
validating the counter value.
As a result, if the counter value overflowed, we would leave the
function SyncInitTrigger() with the CheckTrigger applied but without
updating the trigger object.
To avoid that issue, move the portion of code checking for the trigger
check value before updating the CheckTrigger function.
Related to CVE-2025-26601, ZDI-CAN-25870
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828 >
2025-02-25 11:43:01 +01:00
Olivier Fourdan
16a1242d0f
sync: Do not let sync objects uninitialized
...
When changing an alarm, the change mask values are evaluated one after
the other, changing the trigger values as requested and eventually,
SyncInitTrigger() is called.
SyncInitTrigger() will evaluate the XSyncCACounter first and may free
the existing sync object.
Other changes are then evaluated and may trigger an error and an early
return, not adding the new sync object.
This can be used to cause a use after free when the alarm eventually
triggers.
To avoid the issue, delete the existing sync object as late as possible
only once we are sure that no further error will cause an early exit.
CVE-2025-26601, ZDI-CAN-25870
This vulnerability was discovered by:
Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com >
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828 >
2025-02-25 11:43:01 +01:00
Enrico Weigelt, metux IT consult
a955b83848
Xext: dpms: need to include geext.h
...
It's calling GERegisterExtension(), which is defined in geext.h
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1810 >
2025-02-24 20:19:55 +00:00
Enrico Weigelt, metux IT consult
80593ab279
misc.h: move out MAXEXTENSIONS to geext.c
...
The only user of it is geext.c, so no need to have that define
in a public include file.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1810 >
2025-02-24 20:19:55 +00:00
Enrico Weigelt, metux IT consult
3f469acb96
panoramix: don't install panoramiX.h and panoramiXsrv.h
...
Not used by any drivers/modules, so no need to keep them public.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1815 >
2025-02-24 20:06:30 +00:00
Enrico Weigelt, metux IT consult
de0aed0543
misc.h: move out checked_int64_(add|subtract)
...
These inline functions are used only in exactly one place,
so no need to keep them in a public header.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1808 >
2025-02-23 18:08:45 +00:00
Enrico Weigelt, metux IT consult
90bc995016
Xext: geext: move geeint.h stuff into geext.c
...
Everything in here only used by geext.c, so no need to keep
a separate header file for that.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
658f1b34ee
Xext: geext.h: fix missing include of Xfuncproto.h
...
Needed for _X_EXPORT.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
20d4c40df4
Xext: geext.h: don't include <dix-config.h>
...
Really no need to ever include it from here.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
a7600ac884
Xext: geext: move struct _GEExtension into geext.c
...
Not used anywhere outside geext implementation itself,
so shouldn't be public at all.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
896937298b
Xext: geext: unexport GEExtensions[]
...
This field isn't used by anybody outside, nor should it be accessed
directly. So better make it local.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
6fa340c578
Xext: geext: drop unused GEInitEvent()
...
This function isn't called by anybody, so no need to keep it.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
480a7e4b11
Xext: geext: drop unused GEV() macro
...
Not used anywhere, so no need to keep it around any longer.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
ae7bbd36df
Xext: geext: drop unused GEEXT() macro
...
Not used by anybody, so no need to keep it around any longer.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
b865f44f5e
Xext: geext: drop unused GEEXTIDX() macro
...
Not used anywhere, so no need to keep it around any longer.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
1006a37f7d
Xext: geext: drop unused GEMaskIsSet() macro
...
Not used anywhere, so no need to keep it around any longer.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
c1d49e19b9
Xext: geext: drop unused GECLIENT() macro
...
Not used anywhere, so no need to keep it around any longer.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
01ad88b8c8
Xext: geext: drop unused GEIsType() macro
...
Not used anywhere, so no need to keep it around any longer.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
bdb5d4867a
Xext: geext: drop unused GEEventFill() macro
...
It's not used anywhere, so no need to keep it around any longer.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1811 >
2025-02-23 17:53:25 +00:00
Enrico Weigelt, metux IT consult
e4e3b69626
Xext: geext: fix regression in SProcGEQueryVersion()
...
Commit 36dd28129b had an ugly typo
(probably broke on rebase - shame on myself) causing SProcGEQueryVersion()
calling itself recursively. Obviously, ProcGEQueryVersion() needs
to be called instead.
Fixes: 36dd28129b
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1817 >
2025-02-23 17:25:29 +00:00
Enrico Weigelt, metux IT consult
c6b223459c
os: unexport ResetCurrentRequest()
...
Not used by any external modules, so no need to keep it in public API.
Since it's used by DRI, still needs the _X_EXPORT flag, as long as DRI
is a dynamically loaded module.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1790 >
2025-02-18 10:53:45 +00:00
Enrico Weigelt, metux IT consult
ba665948f6
os: unexport WriteFdToClient()
...
Not used by any modules, so no need to keep it exported.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1790 >
2025-02-18 10:53:44 +00:00
Enrico Weigelt, metux IT consult
c6b8207342
os: unexport AuthorizationIDOfClient()
...
Not used by any modules, so no need to keep it exported.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1790 >
2025-02-18 10:53:44 +00:00
Enrico Weigelt, metux IT consult
1f27d3d653
os: unexport ClientIsLocal()
...
Not used by any modules, so no need to keep it exported.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1790 >
2025-02-18 10:53:44 +00:00
Enrico Weigelt, metux IT consult
346d5f5c35
os: move BUG_*() macros to own private header
...
These macros aren't used by any external modules, so no need
to keep them public. Moving them into private header.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1804 >
2025-02-17 19:32:48 +00:00
Enrico Weigelt, metux IT consult
f4d878086e
Xext: selinux: use static reply struct init on declaration
...
Make the code a bit easier to read by using initialization of the reply
structs, at the point of declaration. Most of them aren't written to later,
just passed into WriteReplyToClient(). Also dropping some useless zero
assignments (struct initializers automatically zero-out unmentioned fields).
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1795 >
2025-02-17 18:58:10 +00:00
Enrico Weigelt, metux IT consult
c0f3b5bcef
Xext: shm: use dixDestroyPixmap() instead of direct driver call
...
Direct calls to ScreenRec->DestroyPixmap() blocks cleaning up the wrapping
jungle, so use the proper dix function instead.
See: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1754
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1711 >
2025-02-12 17:48:30 +01:00
Enrico Weigelt, metux IT consult
7ce19233bc
Xext: saver: use dixDestroyPixmap() instead of direct driver call
...
Direct calls to ScreenRec->DestroyPixmap() blocks cleaning up the wrapping
jungle, so use the proper dix function instead.
See: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1754
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1711 >
2025-02-12 17:48:30 +01:00
Enrico Weigelt, metux IT consult
356e18dcc6
os: move out extension disable flags to corresponing extensions
...
The OS abstraction isn't really the right place for those flags,
they are're probably better off in their corresponding extensions.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1519 >
2025-02-07 12:00:53 +01:00
Enrico Weigelt, metux IT consult
8539f35818
Revert "xv: unexport XvScreenRec and XvScreenPtr"
...
This reverts commit 58a2fb8b6f .
Needed by xf86-video-intel driver. Didn't get noticed, because we don't
have this driver in our CI yet.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1772 >
2025-02-07 10:08:41 +01:00
Enrico Weigelt, metux IT consult
37dd2897d4
Xext: saver: consolidate (non-)xinerama versions
...
We can make it a bit simpler by doing the request header
checking only once.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1591 >
2025-02-06 23:56:51 +00:00
Enrico Weigelt, metux IT consult
8236ef3b56
Xext: saver: use explicit switch/case for dispatching
...
It's more robust / easier understandable programming style to use explicit
switch statements, case'ing on the constants defined in the protocol header,
instead of implicitly via a some opaque call table. It's also done this
way in the other extensions, so making the code a bit more consistent.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1591 >
2025-02-06 23:56:51 +00:00
Enrico Weigelt, metux IT consult
40469a9d51
Xext: saver: skip unneeded zero init and zero-swapping
...
When using struct initializers, all fields not set explicitly are zero.
Also no need to swap fields that are known to be zero.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1591 >
2025-02-06 23:56:51 +00:00
Enrico Weigelt, metux IT consult
fdb8c8ea41
Xext: saver: fix missing swap in QueryVersion reply
...
The `majorVersion` and `minorVersion` fields are CARD16, thus need to be swapped.
OTOH, the lengths field is zero anyways, so no need to swap it.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1591 >
2025-02-06 23:56:51 +00:00
Enrico Weigelt, metux IT consult
a33639f975
xvmc: move over protocol version defines into xvmc.c
...
These are exclusively used in one source file, so no need to keep them
in a global header.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1693 >
2025-02-06 23:29:10 +00:00
Enrico Weigelt, metux IT consult
ef62929f58
treewide: NULL-protect ScreenRec->DestroyPixmap() calls
...
Right now, we're assuming that even when deep nesting involved, the proc
vector is always set to a valid function. One the one hand it requires
extra dummy procs in some cases, OTOH it's making upcoming refactoring
of the code flow unnecessarily complex.
The big plot (of subsequent commits) is splitting out the extension's
(and possibly subsystem's) special logic out of the wrapping chain and
let them be executed independently from the DDX/drivers - when applicable
even only when the pixmap is really destroyed (not just unref'ed).
(At some later point, it might even become be actually a valid situation
that DestroyPixmap vector really being NULL.)
See: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1754
See: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1755
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1709 >
2025-02-06 23:02:06 +00:00
Enrico Weigelt, metux IT consult
dc9a998b96
Xext: xv: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:52 +00:00
Enrico Weigelt, metux IT consult
753e6c44ba
Xext: xtest: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:52 +00:00
Enrico Weigelt, metux IT consult
0c87f9b1da
Xext: xcmisc: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:52 +00:00
Enrico Weigelt, metux IT consult
9a3daf908c
Xext: vidmode: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:52 +00:00
Enrico Weigelt, metux IT consult
3bb15b3e04
Xext: sync: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:52 +00:00
Enrico Weigelt, metux IT consult
c8c42490b7
Xext: shm: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:52 +00:00
Enrico Weigelt, metux IT consult
a7bdfdb3b5
Xext: shape: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:52 +00:00
Enrico Weigelt, metux IT consult
07131dccc5
Xext: saver: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:52 +00:00
Enrico Weigelt, metux IT consult
515992b046
Xext: panoramiX: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:51 +00:00
Enrico Weigelt, metux IT consult
98dbd817f6
Xext: dpms: drop now obsolete swap procs
...
Several SProc's have become no-ops, just calling the actual Proc's,
so we can get rid of them entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:51 +00:00
Enrico Weigelt, metux IT consult
54d4dd619c
Xext: xv: drop swapping request length fields
...
The request struct's length fields aren't used anymore - we have the
client->req_len field instead, which also is bigreq-compatible.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net >
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1639 >
2025-02-06 22:28:51 +00:00