Commit graph

18341 commits

Author SHA1 Message Date
Enrico Weigelt, metux IT consult
306ea6123f xfree86: parser: drop HAS_NO_UIDS
It's only locally defined when WIN32 is defined, so we can use this directly.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1278>
(cherry picked from commit ff6b196d1d)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
095d90579a xwayland: drop duplicate _X_EXPORT
These are already defined in glamor.h

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1274>
(cherry picked from commit e439c9c8d7)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
37a10a4754 dix: drop duplicate _X_EXPORT
These are already defined in privates.h

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1274>
(cherry picked from commit 489485ea7d)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
fdeafcba0b miext: sync: drop duplicate _X_EXPORT from .c sources
There are already defined in misyncshm.h / misyncfd.h.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1274>
(cherry picked from commit 6e90c5430a)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
34f5c4c8af randr: drop duplicate _X_EXPORT from .c source
It's already defined in randrstr.h

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1274>
(cherry picked from commit 25c0f8d98a)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
66a82a0ce0 Xi: drop duplicate _X_EXPORT from .c source
These are already defined in exevents.h.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1274>
(cherry picked from commit 13a756d0b5)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
1400c43d05 xace: drop duplicate export of XaceHooks from .c source
it's already defined in xace.h.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1274>
(cherry picked from commit cc0e7fadc7)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
8e95be8dde glamor: drop duplicate _X_EXPORT from .c source
These are already defined in glamor.h

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1274>
(cherry picked from commit e343a52fcf)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
977bed5187 xkb: drop duplicate _X_EXPORT from .c source
It's already defined in input.h, and that's where it belongs.
(we see from the header, which symbols belong to the module api)

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1274>
(cherry picked from commit 86ea30733f)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
8e9f6da0ab glamor: glamor_debug.h: drop unused AbortServer() declaration
This really looks like a leftover from b861aad8e2.

In any case, if that function shall become part of extension/driver API,
it should be declared with _X_EXPORT in some suitable header file - locally
declaring extern really isn't a good idea and just an invitation for subtle bugs.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1265>
(cherry picked from commit 113ffdf85c)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
b4e729e10b xfree86: drop unneeded wrapper xf86PrivsElevated()
It's just a dumb wrapper around PrivsElevated(), and also just called in few
places, while others call PrivsElevated() directly - thus not needed and
can be dropped.

Note that it's also not called by drivers, so the export was unnecessary.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1324>
(cherry picked from commit 4705fa933a)
2026-01-19 12:32:19 -08:00
Peter Hutterer
ff7af01b74 CI: replace the dist script with invocations of the meson-build script
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1317>
(cherry picked from commit 96b9bbe9fa)
2026-01-19 12:32:19 -08:00
Peter Hutterer
e282e921df CI: switch the mingw cross-compile job to use the meson build script too
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1317>
(cherry picked from commit cd6840f18e)
2026-01-19 12:32:19 -08:00
Peter Hutterer
cf709197f7 CI: switch to the meson-build.sh helper script
This script does the same thing but has a few more toggles than our
custom script which means we can set everything we need in the
gitlab-ci.yml file and have it DTRT.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1317>
(cherry picked from commit ce2f24c510)
2026-01-19 12:32:19 -08:00
Peter Hutterer
49c771b812 CI: use MESON_BUILDDIR for the build directory
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1317>
(cherry picked from commit 0ab32a7587)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
d711c6380e os: drop unused GetAccessControl()
This function isn't used anywhere, not even in (known) modules/drivers.
So we can remove it.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1343>
(cherry picked from commit 0f37f6fb4c)
2026-01-19 12:32:19 -08:00
Enrico Weigelt, metux IT consult
501a25fc6d dbe: drop obsolete NEED_DBE_PROTOCOL
this symbol isn't used anymore ... can't even find it's use in git history.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1339>
(cherry picked from commit 074f4857b0)
2026-01-19 12:32:19 -08:00
Michel Dänzer
961d72684b ci: Create check-merge-request job only in MR pipelines
It can't work as intended in other pipelines.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1338>
(cherry picked from commit 1b625044dc)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
8c872eda63 dix: dixutils: make workQueue pointer dix-private
The workQueue pointer is currently declared extern, so that WaitForSomething()
can check wether we've got something in the queue and call ProcessWorkQueue()
then.

But that's trivial to simplify: just let ProcessWorkQueue() return early if
workQueue == NULL. Gives us a better isolation of internal stuff as well as
ProcessWorkQueue() protecting itself from possible segfault.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1310>
(cherry picked from commit af9f70013a)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
428ba194bd factor out X_REGISTRY_RESOURCE and X_REGISTRY_REQUEST to meson.build
there are several feautures depending on LookupResourceName() et al,
so set these symbole inside meson.build, instead of #define'ing them
conditionally in registry.h

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1262>
(cherry picked from commit 834acc88fb)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
becbc492b5 dix: unexport party_like_its_1989 (retro mode)
The retro mode is still used, so keep it. But the flag variable really
doesn't need to be part of public API.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1273>
(cherry picked from commit 84a196e707)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
7e33ef8fa7 xwayland: fix int size mismatch
GCC reports:

[1/2] Compiling C object hw/xwayland/Xwayland.p/xwayland.c.o
../hw/xwayland/xwayland.c: In function ‘try_raising_nofile_limit’:
../hw/xwayland/xwayland.c:161:72: warning: format ‘%li’ expects argument of type ‘long int’, but argument 4 has type ‘rlim_t’ {aka ‘long long unsigned int’} [-Wformat=]
  161 |     LogMessageVerb(X_INFO, 3, "Raising the file descriptors limit to %li\n",
      |                                                                      ~~^
      |                                                                        |
      |                                                                        long int
      |                                                                      %lli
  162 |                    rlim.rlim_max);
      |                    ~~~~~~~~~~~~~
      |                        |
      |                        rlim_t {aka long long unsigned int}

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1257>
(cherry picked from commit 7a37e5df12)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
3a6e24618f modesetting: fix int size mismatch
GCC repors:

../hw/xfree86/drivers/modesetting/drmmode_display.c:4135:49: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 5 has type ‘uint64_t’ {aka ‘long long unsigned int’} [-Wformat=]
 4135 |                            "Gamma ramp set to %ld entries on CRTC %d\n",
      |                                               ~~^
      |                                                 |
      |                                                 long int
      |                                               %lld
 4136 |                            size, num);
      |                            ~~~~
      |                            |
      |                            uint64_t {aka long long unsigned int}
../hw/xfree86/drivers/modesetting/drmmode_display.c:4139:57: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘uint64_t’ {aka ‘long long unsigned int’} [-Wformat=]
 4139 |                        "Failed to allocate memory for %ld gamma ramp entries "
      |                                                       ~~^
      |                                                         |
      |                                                         long int
      |                                                       %lld
 4140 |                        "on CRTC %d.\n",
 4141 |                        size, num);
      |                        ~~~~
      |                        |
      |                        uint64_t {aka long long unsigned int}

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1257>
(cherry picked from commit 37b9b9a854)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
de8df5f72f xkb: fix int size mismatch
GCC reports:

../xkb/xkb.c: In function ‘_XkbSetMapCheckLength’:
../xkb/xkb.c:2464:54: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘size_t’ {aka ‘unsigned int’} [-Wformat=]
 2464 |     ErrorF("[xkb] BOGUS LENGTH in SetMap: expected %ld got %ld\n",
      |                                                    ~~^
      |                                                      |
      |                                                      long int
      |                                                    %d
 2465 |            len, req_len);
      |            ~~~
      |            |
      |            size_t {aka unsigned int}
../xkb/xkb.c:2464:62: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘size_t’ {aka ‘unsigned int’} [-Wformat=]
 2464 |     ErrorF("[xkb] BOGUS LENGTH in SetMap: expected %ld got %ld\n",
      |                                                            ~~^
      |                                                              |
      |                                                              long int
      |                                                            %d
 2465 |            len, req_len);
      |                 ~~~~~~~
      |                 |
      |                 size_t {aka unsigned int}

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1257>
(cherry picked from commit bc90c44e60)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
e4fa2fbffd glx: move private definitions from vndserver.h to vndserver_priv.h
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1292>
(cherry picked from commit 28669adef8)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
fbeed3ba10 randr: move private definitons from randrstr.h to randrstr_priv.h
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1291>
(cherry picked from commit eda769f34c)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
768333d2ff os: color: fix possible buffer overflow vulnerability
The old approach of builtin color lookup used a binary search of strings
within text blocks (their start offsets defined in the color array).

This could potentially lead to buffer overflow, if the requested color
name far outreaches the text block (eg. same prefix as some entry near to
the end, but really huge). This alone wouldn't allow remote memory readout
(just comparing), but could possibly trigger page faults (sigsegv) or used
as a building block for some more complex attack.

OTOH, the old approach is also hard to maintain, ugly programming style:
on each change, all the offset need to be carefully recounted, which is
pretty error-prone.

Both problems are solved by moving to simple, per-entry, char* pointers,
instead of the one large text block.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1313>
(cherry picked from commit 8c4a015cc2)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
a24bad63f0 os: oscolor: fix BuiltinColor field naming
The "name" field doesn't actually hold the color's name, but instead the
offset of the name in the string table block. Thus, fix the field's name
to reflect this.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1313>
(cherry picked from commit 7a010beefe)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
2ff89444b7 include: os: fix return value of OsLookupColor()
The actual implementation uses Bool, but forward declaration is int.
For the compiler it's practically the same, but for the programmer these
have different semantics.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1313>
(cherry picked from commit fdf483d862)
2026-01-19 12:32:18 -08:00
Alan Coopersmith
c17b579f15 unifdef SUNSYSV
I can't tell what this code was originally for - it was added in 1988,
4 years before the release of the SysV R4 release of Solaris 2.0, and
I can't find anywhere that defined SUNSYSV.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1315>
(cherry picked from commit a91a862332)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
e66f84eb0d xfree86: drop remains of old USL compiler
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1286>
(cherry picked from commit 27b5530107)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
2835e076df drop remains of support for old Sun compilers
With transition from autoconf to meson, these aren't actually supported
anymore, and re-adding it isn't planned. Thus the now dead code pathes
can be completely removed.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1286>
(cherry picked from commit 6dafe3dbe6)
2026-01-19 12:32:18 -08:00
Yusuf Khan
a1f5b59f36 hw/xfree86: fix NULL pointer refrence to mode name
Potentially, the pointer to the mode name could be unset, this can
occur with the xf86-video-nv DDX, in that case there isnt much we can do
except check if the next mode is any better.

Signed-off-by: Yusuf Khan <yusisamerican@gmail.com>
(cherry picked from commit db3aa4e03b)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
fc60b0e872 fix: unused readIntVec()
[585/699] Compiling C object hw/xfree86/int10/libint10.so.p/generic.c.o
../hw/xfree86/int10/generic.c:103:1: warning: ‘readIntVec’ defined but not used [-Wunused-function]
  103 | readIntVec(struct pci_device *dev, unsigned char *buf, int len)

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
(cherry picked from commit a2e7904b1d)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
de9ce0e8f9 hw: xwayland: fix build if neither gbm nor eglstream available
glamor needs to be disabled if neither gbm nor eglstream is available,
otherwise build breaks.

Closes: xorg/xserver#1631
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
(cherry picked from commit 8d2117abeb)
2026-01-19 12:32:18 -08:00
Enrico Weigelt, metux IT consult
c66313b5aa xkb: drop defining XKBSRV_NEED_FILE_FUNCS
No need to define XKBSRV_NEED_FILE_FUNCS, for about 15 years now
(since XKBsrv.h isn't used anymore), so drop it.

Fixes: e5f002edde
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
(cherry picked from commit 374ee7acd7)
2026-01-19 12:32:18 -08:00
Matthieu Herrb
9744d52483 bsd_init.c: fix build on OpenBSD
isolate NetBSD specific VGAPCVTID ioctl(2) call.

Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
(cherry picked from commit 0d4a7ed684)
2026-01-19 12:32:18 -08:00
Alan Coopersmith
541bde66b7 unifdef apollo
Apollo Domain/OS died in the 1990's and has never been supported in
the modular Xserver builds.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
(cherry picked from commit 584a9715c3)
2026-01-19 12:32:17 -08:00
Matthieu Herrb
2cb7bebc1e OpenBSD build fix: struct ucred is struct sockpeercred there
(cherry picked from commit 7dfe1c56b0)
2026-01-19 12:32:17 -08:00
Matthieu Herrb
1b5f3a6527 xfree86/bsd: fix build on NetBSD/amd64.
The IOPL function for 64 bit systems is x86_64_iopl() there

(cherry picked from commit 238f8edcaf)
2026-01-19 12:32:17 -08:00
Matthieu Herrb
294369d4a6 Add full prototypes in hw/xfree86/os-support/bsd/bsd-video.c
Trivial functions without parameters -> (void)

(cherry picked from commit 59dac6af45)
2026-01-19 12:32:17 -08:00
Matthieu Herrb
21b86da596 Fix build on OpenBSD.
<dev/wscons/wsconsio.h> needs <sys/time.h> on OpenBSD.
This doesn't cause issues on NetBSD

Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
(cherry picked from commit ae07e47559)
2026-01-19 12:32:17 -08:00
Alan Coopersmith
a8bb924af1 os: Assume all supported non-WIN32 platforms have seteuid & saved_ids
Removes fallback code to fork and exec a "cat" command to read files.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2024-02-10 00:05:54 +00:00
Enrico Weigelt, metux IT consult
b3b86ae674 replace _X_INLINE by inline in internal static functions
Since xserver is compiled as C99, we just can use the `inline` keyword.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2024-02-05 19:26:14 +00:00
Florian Weimer
f0a187f55d xwayland: Use correct pointer types on i386
And other 32-bit architectures, where uint32_t and CARD32 are
not the same type.  Otherwise the build will fail with GCC 14
with errors like:

../hw/xwayland/xwayland-glamor.c: In function ‘xwl_glamor_get_formats’:
../hw/xwayland/xwayland-glamor.c:291:43: error: passing argument 3 of ‘xwl_get_formats_for_device’ from incompatible pointer type [-Wincompatible-pointer-types]
  291 |                                           num_formats, formats);
      |                                           ^~~~~~~~~~~
      |                                           |
      |                                           CARD32 * {aka long unsigned int *}
../hw/xwayland/xwayland-glamor.c:238:38: note: expected ‘uint32_t *’ {aka ‘unsigned int *’} but argument is of type ‘CARD32 *’ {aka ‘long unsigned int *’}
  238 |                            uint32_t *num_formats, uint32_t **formats)
      |                            ~~~~~~~~~~^~~~~~~~~~~
../hw/xwayland/xwayland-glamor.c:291:56: error: passing argument 4 of ‘xwl_get_formats_for_device’ from incompatible pointer type [-Wincompatible-pointer-types]
  291 |                                           num_formats, formats);
      |                                                        ^~~~~~~
      |                                                        |
      |                                                        CARD32 ** {aka long unsigned int **}
../hw/xwayland/xwayland-glamor.c:238:62: note: expected ‘uint32_t **’ {aka ‘unsigned int **’} but argument is of type ‘CARD32 **’ {aka ‘long unsigned int **’}
  238 |                            uint32_t *num_formats, uint32_t **formats)
      |                                                   ~~~~~~~~~~~^~~~~~~
../hw/xwayland/xwayland-glamor.c:295:28: error: passing argument 3 of ‘xwl_get_formats’ from incompatible pointer type [-Wincompatible-pointer-types]
  295 |                            num_formats, formats);
      |                            ^~~~~~~~~~~
      |                            |
      |                            CARD32 * {aka long unsigned int *}
../hw/xwayland/xwayland-glamor.c:217:26: note: expected ‘uint32_t *’ {aka ‘unsigned int *’} but argument is of type ‘CARD32 *’ {aka ‘long unsigned int *’}
  217 |                uint32_t *num_formats, uint32_t **formats)
      |                ~~~~~~~~~~^~~~~~~~~~~
../hw/xwayland/xwayland-glamor.c:295:41: error: passing argument 4 of ‘xwl_get_formats’ from incompatible pointer type [-Wincompatible-pointer-types]
  295 |                            num_formats, formats);
      |                                         ^~~~~~~
      |                                         |
      |                                         CARD32 ** {aka long unsigned int **}
../hw/xwayland/xwayland-glamor.c:217:50: note: expected ‘uint32_t **’ {aka ‘unsigned int **’} but argument is of type ‘CARD32 **’ {aka ‘long unsigned int **’}
  217 |                uint32_t *num_formats, uint32_t **formats)
      |                                       ~~~~~~~~~~~^~~~~~~
2024-02-02 09:36:52 +01:00
Wanli Niu
e62246641b dix: Fix segfault if CreateGC() failed in XaceHook()
CreateGC() allocates a new GC and then checks the resource access rights
with XaceHook().

If the call to XaceHook() fails (i.e. GC creation is not granted to the
client), CreateGC() exits early and calls FreeGC() to avoid leaking the
newly allocated GC.

If that happens, the screen's own CreateGC() has not yet been invoked,
and as a result the GC functions (GCfuncs) have not been set yet.

FreeGC() will invoke the funcs->DestroyClip() and the funcs->DestroyGC()
functions, but since those haven't been set, the Xserver will segfault
trying to call a NULL function.

To prevent that issue, make sure the GC's functions are initialized
prior to call them in FreeGC().

Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1625
Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
2024-02-01 10:10:53 +01:00
Peter Hutterer
9c7c470b12 test: use a dbg() macro for the test output
Currently hardcoded to verbose = 0 until we have option parsing but meh.
2024-01-30 00:15:10 +00:00
Peter Hutterer
d178978ce2 test: specify non-negative log verbosity for the siglogging test
Less noise in the test output
2024-01-30 00:15:10 +00:00
Peter Hutterer
3c5eaedaf9 test: switch the remaining wrapped functions to use the macros
dixLookupWindow and dixLookupClient have a test-global default
implementation because overriding that in ever test doesn't make sense.
2024-01-30 00:15:10 +00:00
Peter Hutterer
7e9d167c9c test: make wrapping a function more generic
This cleans up some of the mess this code was in. Functions we need to
wrap can now have a standard implementation using WRAP_FUNCTION - that
macro declares the __real and __wrap functions and a wrapped_$func
global variable.

Tests can set that variable to their desired functions and it will be
then be called on demand.
2024-01-30 00:15:10 +00:00