Commit Graph

20789 Commits

Author SHA1 Message Date
Mike Gelfand 5e98d8c571 .gitlab-ci: only look for files when validating man pages
Build directory may sometimes contain directories ending with a period
and a digit, e.g. in my case

* ./meson-private/cmake_xshmfence/CMakeFiles/4.0.3
* ./meson-private/__CMake_compiler_info__/CMakeFiles/4.0.3

Since man pages are files, filter out the rest.

Signed-off-by: Mike Gelfand <mikedld@mikedld.com>
2025-06-27 13:35:34 +02:00
Mike Gelfand bc8518f8f8 .github: drop sudo for prerequisites builds
Files aren't being installed into privileged directories as part of the
build but instead into $X11_PREFIX which resides in current user's home
directory.

Change the cache key to avoid reusing old cache entries, which would
lead to permission errors.

Signed-off-by: Mike Gelfand <mikedld@mikedld.com>
2025-06-27 13:34:40 +02:00
Mike Gelfand 705d1ce679 .github: export MACHINE the right way
Otherwise, paths constructed on "build xserver sdk" step aren't valid.

Signed-off-by: Mike Gelfand <mikedld@mikedld.com>
2025-06-27 13:13:54 +02:00
Icenowy Zheng 3e1c2d5456 glamor: Fix dual blend on GLES3
The EXT_blend_func_extended extension on ESSL always requires explicit
request to allow two FS out variables because of limitations of the ESSL
language, which is mentioned as the No.6 issue of the extension's
specification.

Fix this by adding the extension request.

The original behavior on GLES3 is slightly against the specification of
GL_EXT_blend_func_extended extension, however Mesa and older version of
PowerVR closed drivers will just ignore this issue. Newest PowerVR
closed driver will bail out on this problem, so it deems a fix now.

Fixes: ee107cd491 ("glamor: support GLES3 shaders")
Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1750>
2025-06-26 15:30:56 +02:00
b-aaz 3079488484 dix: generate-atoms: Changed BASH to POSIX SH for portability.
BASH is not preinstalled on many systems.
Also added -r and IFS= to the read command.

Signed-off-by; b-aaz <b-aazbsd.proton.me>
2025-06-25 10:53:36 +02:00
Enrico Weigelt, metux IT consult f5ea9069e1 release 25.0.0.1
minor bugfix release

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-24 17:46:26 +02:00
Enrico Weigelt, metux IT consult e91cfc890f randr: fix memleak in provider property update
If a device property is going to be updated, but failing due
the new value being too big, the buffer isn't freed.

Also compacting the logic for this into small inline function.

Fixes: 948630fa42
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-24 16:06:38 +02:00
Enrico Weigelt, metux IT consult ada105a5d2 xorg-server.pc.in: fix source URL
Source URL in .pc input was still linking to old dead xorg.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-23 16:55:43 +02:00
Enrico Weigelt, metux IT consult 828f9a1b7f xfree86: man: fix git URL
fix the git URL to point to Xlibre repository.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-23 16:50:19 +02:00
Enrico Weigelt, metux IT consult f7516e6234 meson_options: fix mailing list address
The meson_options allow setting some `builder` mail address, and default
was still pointing to old, dead xorg.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-23 16:50:19 +02:00
Herman Semenov 604582d179 glx: fix correct sizeof GL unsigned int
Signed-off-by: Herman Semenov <GermanAizek@yandex.ru>
2025-06-23 16:18:47 +02:00
Enrico Weigelt, metux IT consult 4e1515f793 meson.build: fix release date variable
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-23 15:42:47 +02:00
stefan11111 0746e6841a xfree86: compat: fix Ones for compilers where __builtin_popcountl is missing
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-06-23 14:14:48 +02:00
Enrico Weigelt, metux IT consult 3f5e4b1d97 xfree86: provide xf86DisableGeneralHandler() for Nvidia driver
The proprietary NVidia driver want's to call an internal function for reasons
unknown to us. Adding a little wrapper for it, that's also printing out some
warning message in the log.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-23 11:09:45 +02:00
Enrico Weigelt, metux IT consult 40dc3b6419 Xlibre release 25.0.0.0
Summer solstice 2025.
Initial release of Xlibre Xserver.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-21 11:51:45 +02:00
Enrico Weigelt, metux IT consult ebc0c6263f README.md: add driver release tags
Since Alan Coopersmith (Sun/Oracle) currently attempting to sneak in subtle
incompatibilities between Xlibre and Xorg drivers, it's time to set some
ad hoc release tags of all the unreleased stuff, which are prefixed "xlibre-"
and document them in the readme.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-20 19:24:24 +02:00
Enrico Weigelt, metux IT consult fca07a761c xfree86: export xf86FlipPixels() but keep it internal
Needed by the int10 module, so has to be in the symbol table.
But still not supposed to be used by out-of-tree drivers.

Reported-by: stefan11111 <stefan11111@shitposting.expert>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-20 18:36:29 +02:00
Enrico Weigelt, metux IT consult e523724d5e xfree86: export xf86ModeStatusToString() but keep it internal
Needed by the int10 module, so has to be in the symbol table.
But still not supposed to be used by out-of-tree drivers.

Reported-by: stefan11111 <stefan11111@shitposting.expert>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-20 18:36:29 +02:00
Enrico Weigelt, metux IT consult 13595b1801 xfree86: export OsBlockSignals() but keep it internal
Needed by the int10 module, so has to be in the symbol table.
But still not supposed to be used by out-of-tree drivers.

Reported-by: stefan11111 <stefan11111@shitposting.expert>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-20 18:36:29 +02:00
Enrico Weigelt, metux IT consult 905329940a xfree86: export OsReleaseSignals() but keep it internal
Needed by the int10 module, so has to be in the symbol table.
But still not supposed to be used by out-of-tree drivers.

Reported-by: stefan11111 <stefan11111@shitposting.expert>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-20 18:36:29 +02:00
Enrico Weigelt, metux IT consult 711359b75c xfree86: export xf86FindScreenForEntity() but keep it internal
Needed by the int10 module, so has to be in the symbol table.
But still not supposed to be used by out-of-tree drivers.

Reported-by: stefan11111 <stefan11111@shitposting.expert>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-20 18:36:29 +02:00
Enrico Weigelt, metux IT consult f5777ff1dc xfree86: export xf86IsEntityPrimary() but keep it internal
Needed by the int10 module, so has to be in the symbol table.
But still not supposed to be used by out-of-tree drivers.

Reported-by: stefan11111 <stefan11111@shitposting.expert>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-20 18:36:29 +02:00
Enrico Weigelt, metux IT consult 66547c7971 xfree86: provide xf86EnableGeneralHandler() for Nvidia driver
The proprietary NVidia driver want's to call an internal function for reasons
unknown to us. Adding a little wrapper for it, that's also printing out some
warning message in the log.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-20 18:35:59 +02:00
dec05eba 5342d0c380 xkb: fix XkbGetKbdByName returning incorrect data
This is a regression first caused by 182404fde6
that sends back the old xkb data instead of the new one.
This causes a mismatch in the data and size calculations between the
XkbComputeGetMapReplySize that is called above that calculates the size
of the reply and XkbAssembleMap that sets the data for the reply.

Without this fix this error is seen when running setxkbmap fr:
"Error loading new keyboard description".

Fixes setxkbmap error described in #180

Signed-off-by: dec05eba <dec05eba@protonmail.com>
2025-06-20 10:17:10 +02:00
itz-me-zappex 9adf08960e README.md: Update info about VT switching and add workaround for NVIDIA.
Signed-off-by: itz-me-zappex <85901674+itz-me-zappex@users.noreply.github.com>
2025-06-19 16:32:04 +02:00
Steven Van Dorp 2ef1e7728e ephyr: fix checking the same expression twice
Probably was a copy-paste error.
Intention is to check if the string is valid
(i.e. not null and length isn't 0).

fixes: #179

Signed-off-by: Steven Van Dorp <steven@vandorp.lu>
2025-06-19 13:57:57 +02:00
dec05eba 4267785e6f xres: fix XResQueryClientIds always returning 0 clients
XaceHookClientAccess added in 098008879b
has incorrect condition in ConstructClientIds.

This fixes #182

Signed-off-by: dec05eba <dec05eba@protonmail.com>
2025-06-19 11:29:24 +02:00
Enrico Weigelt, metux IT consult fe4bc433a4 sdk: reinstate COMPOSITE symbol
Composite extension is always enabled for pretty long time now, but some
drivers (eg. xf86-video-intel) still relying on this symbol being set,
otherwise assuming to run w/o composite and doing crazy things.

Fixes: d708b28adc
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-19 11:21:31 +02:00
rendick ca5fb14d05 dix: delete unused PropertyStateRec structure to debloat codebase
Removed unused 'PropertyStateRec' structure from dix/property.c

Signed-off-by: rendick <rendick123@proton.me>
2025-06-18 21:26:40 +02:00
Olivier Fourdan 899afa4c10 os: Check for integer overflow on BigRequest length
Check for another possible integer overflow once we get a complete xReq
with BigRequest.

Related to CVE-2025-49176

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Suggested-by: Peter Harris <pharris2@rocketsoftware.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2028>
2025-06-18 17:51:36 +02:00
Steven Van Dorp b393d5fc02 ephyr: Add -host-grab to set custom grab shortcut
Allows for calling Xephyr with `-host-grab [keys]` to customize the
keyboard shortcut for grabbing/releasing keyboard and mouse input.
Fully backwards compatible:
Omitting `-host-grab` defaults to ctrl+shift.
`-no-host-grab` acts the same as before.

Closes: #134

Signed-off-by: Steven Van Dorp <steven@vandorp.lu>
2025-06-18 13:23:58 +02:00
Duje Mihanović 61accf16e2 Revert "xfree86: unexport xf86PostButtonEventM()"
This reverts commit e16424212e.

The xf86-input-wacom driver requires this function.

Signed-off-by: Duje Mihanović <duje@dujemihanovic.xyz>
2025-06-17 20:47:17 +02:00
Enrico Weigelt, metux IT consult f5d4657d0d meson.build: add deprecation warning on HAL
When HAL is enabled, print out a warning that it's deprecated and
might be removed soon.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-17 20:41:48 +02:00
Enrico Weigelt, metux IT consult 99992bc2f6 meson_options: set default for HAL integration to false
This should be a deliberate decision of the user/distro. Just the presense
of some of its libraries in the build environment doesn't automatically
mean the user/distro actually wants it to be used.

HAL is pretty much obsolete, so we're considering to drop it entirely.
Anybody who's still needs it should call out loud now.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-17 20:41:48 +02:00
Enrico Weigelt, metux IT consult dba86284c8 meson_options: set default value for systemd support to false
a) the automatic detection logic is broken: it automatically enables it
   when kms+udev enabled and dbus is found.
b) it should be a deliberate decision whether to enable it or not,
   eg. just having (pieces of) systemd libraries present on the build
   machine doesn't automatically mean the user/distro actually wants
   it to be used.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-17 20:41:48 +02:00
Enrico Weigelt, metux IT consult 49f5056b45 .github: run pipeline on pull requests
Also run the pipeline on pull requests, so nothing utterly broken
can easily slip in.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-17 20:33:00 +02:00
Enrico Weigelt, metux IT consult 36a24ef23c .github: drop -Dxwayland=false
Xwayland had been dropped, so no need to switch it off explicitly
anymore.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-17 20:33:00 +02:00
Olivier Fourdan 923837e2c9 xfree86: Check for RandR provider functions
Changing XRandR provider properties if the driver has set no provider
function such as the modesetting driver will cause a NULL pointer
dereference and a crash of the Xorg server.

Related to CVE-2025-49180

This issue was discovered by Nils Emmerich <nemmerich@ernw.de> and
reported by Julian Suleder via ERNW Vulnerability Disclosure.

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/2024>
2025-06-17 20:01:25 +02:00
Olivier Fourdan 948630fa42 randr: Check for overflow in RRChangeProviderProperty()
A client might send a request causing an integer overflow when computing
the total size to allocate in RRChangeProviderProperty().

To avoid the issue, check that total length in bytes won't exceed the
maximum integer value.

CVE-2025-49180

This issue was discovered by Nils Emmerich <nemmerich@ernw.de> and
reported by Julian Suleder via ERNW Vulnerability Disclosure.

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/2024>
2025-06-17 20:01:25 +02:00
Olivier Fourdan da5f8d197f record: Check for overflow in RecordSanityCheckRegisterClients()
The RecordSanityCheckRegisterClients() checks for the request length,
but does not check for integer overflow.

A client might send a very large value for either the number of clients
or the number of protocol ranges that will cause an integer overflow in
the request length computation, defeating the check for request length.

To avoid the issue, explicitly check the number of clients against the
limit of clients (which is much lower than an maximum integer value) and
the number of protocol ranges (multiplied by the record length) do not
exceed the maximum integer value.

This way, we ensure that the final computation for the request length
will not overflow the maximum integer limit.

CVE-2025-49179

This issue was discovered by Nils Emmerich <nemmerich@ernw.de> and
reported by Julian Suleder via ERNW Vulnerability Disclosure.

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/2024>
2025-06-17 20:01:25 +02:00
Olivier Fourdan 0d6af5a542 os: Account for bytes to ignore when sharing input buffer
When reading requests from the clients, the input buffer might be shared
and used between different clients.

If a given client sends a full request with non-zero bytes to ignore,
the bytes to ignore may still be non-zero even though the request is
full, in which case the buffer could be shared with another client who's
request will not be processed because of those bytes to ignore, leading
to a possible hang of the other client request.

To avoid the issue, make sure we have zero bytes to ignore left in the
input request when sharing the input buffer with another client.

CVE-2025-49178

This issue was discovered by Nils Emmerich <nemmerich@ernw.de> and
reported by Julian Suleder via ERNW Vulnerability Disclosure.

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/2024>
2025-06-17 20:01:25 +02:00
Olivier Fourdan a1e44d3c4f xfixes: Check request length for SetClientDisconnectMode
The handler of XFixesSetClientDisconnectMode does not check the client
request length.

A client could send a shorter request and read data from a former
request.

Fix the issue by checking the request size matches.

CVE-2025-49177

This issue was discovered by Nils Emmerich <nemmerich@ernw.de> and
reported by Julian Suleder via ERNW Vulnerability Disclosure.

Fixes: e167299f6 - xfixes: Add ClientDisconnectMode
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/2024>
2025-06-17 20:01:25 +02:00
Olivier Fourdan 3151e489e4 os: Do not overflow the integer size with BigRequest
The BigRequest extension allows requests larger than the 16-bit length
limit.

It uses integers for the request length and checks for the size not to
exceed the maxBigRequestSize limit, but does so after translating the
length to integer by multiplying the given size in bytes by 4.

In doing so, it might overflow the integer size limit before actually
checking for the overflow, defeating the purpose of the test.

To avoid the issue, make sure to check that the request size does not
overflow the maxBigRequestSize limit prior to any conversion.

The caller Dispatch() function however expects the return value to be in
bytes, so we cannot just return the converted value in case of error, as
that would also overflow the integer size.

To preserve the existing API, we use a negative value for the X11 error
code BadLength as the function only return positive values, 0 or -1 and
update the caller Dispatch() function to take that case into account to
return the error code to the offending client.

CVE-2025-49176

This issue was discovered by Nils Emmerich <nemmerich@ernw.de> and
reported by Julian Suleder via ERNW Vulnerability Disclosure.

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2024>
2025-06-17 20:01:25 +02:00
Enrico Weigelt, metux IT consult c430c829d5 render: fix CVE-2025-49175
Protect against clients sending a series of zero cursors.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-17 20:01:25 +02:00
dasha_uwu b418203339 README.md: fix drivers list
Signed-off-by: dasha_uwu <dasha@linuxping.win>
2025-06-17 19:57:24 +02:00
Enrico Weigelt, metux IT consult fd02fc0b04 .github: workflow for building Xservers and some drivers
Add a github workflow that builds the Xservers on Linux and also
runs build-test of several common drivers against xorg sdk.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-17 19:45:34 +02:00
Enrico Weigelt, metux IT consult 4939439952 dix: drop PropertyStateCallback
This callback only had been added for Xwayland, which is gone now,
so we don't need it anymore. For property filtering (eg. security
extensions), we have PropertyFilterCallback.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-17 12:51:36 +02:00
Enrico Weigelt, metux IT consult c8b81fdbc5 drop Xwayland
It always had it's own lifecycle (not been part of Xorg releases),
doesn't make sense to maintain a competing implementation that we
won't use anyways.

Once that's gone, we can also drop few things in core/dix that had
been added just for xwayland only.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-17 12:51:36 +02:00
Hermann Semenov d042e5a667 os: fix missing NULL check for vpnprintf()
Protect from NULL parameter to %s directive.

See also: https://github.com/X11Libre/xserver/issues/36

Signed-off-by: Herman Semenov <GermanAizek@yandex.ru>
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-16 20:28:01 +02:00
stefan11111 fa7cc111e7 xfree86: compat: add missing symbols needed by the proprietary nvidia drivers
Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
2025-06-16 20:07:18 +02:00