Go to file
Jeremy Huddleston Sequoia aa6f84021a xquartz: Allocate each fbconfig separately
A change during the 1.20 development cycle resulted in fbconfigs being walked
and deallocated individually during __glXScreenDestroy.  This change
now avoids a use-after-free caused by that change.

==50859==ERROR: AddressSanitizer: heap-use-after-free on address 0x00010d3819c8 at pc 0x0001009d4230 bp 0x00016feca7a0 sp 0x00016feca798
READ of size 8 at 0x00010d3819c8 thread T5
    #0 0x1009d422c in __glXScreenDestroy glxscreens.c:448
    #1 0x10091cc98 in __glXAquaScreenDestroy indirect.c:510
    #2 0x1009d2734 in glxCloseScreen glxscreens.c:169
    #3 0x100740a24 in dix_main main.c:325
    #4 0x10023ed50 in server_thread quartzStartup.c:65
    #5 0x199ae7fd0 in _pthread_start+0x13c (libsystem_pthread.dylib:arm64e+0x6fd0)
    #6 0x199ae2d38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1d38)

0x00010d3819c8 is located 200 bytes inside of 12800-byte region [0x00010d381900,0x00010d384b00)
freed by thread T5 here:
    #0 0x101477ba8 in wrap_free+0x98 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x3fba8)
    #1 0x1009d4240 in __glXScreenDestroy glxscreens.c:449
    #2 0x10091cc98 in __glXAquaScreenDestroy indirect.c:510
    #3 0x1009d2734 in glxCloseScreen glxscreens.c:169
    #4 0x100740a24 in dix_main main.c:325
    #5 0x10023ed50 in server_thread quartzStartup.c:65
    #6 0x199ae7fd0 in _pthread_start+0x13c (libsystem_pthread.dylib:arm64e+0x6fd0)
    #7 0x199ae2d38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1d38)

previously allocated by thread T5 here:
    #0 0x101477e38 in wrap_calloc+0x9c (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x3fe38)
    #1 0x100925a40 in __glXAquaCreateVisualConfigs visualConfigs.c:116
    #2 0x10091cb24 in __glXAquaScreenProbe+0x224 (X11.bin:arm64+0x100730b24)
    #3 0x1009cd840 in xorgGlxServerInit glxext.c:528
    #4 0x10074539c in _CallCallbacks dixutils.c:743
    #5 0x100932a70 in CallCallbacks callback.h:83
    #6 0x100932478 in GlxExtensionInit vndext.c:244
    #7 0x10020a364 in InitExtensions miinitext.c:267
    #8 0x10073fe7c in dix_main main.c:197
    #9 0x10023ed50 in server_thread quartzStartup.c:65
    #10 0x199ae7fd0 in _pthread_start+0x13c (libsystem_pthread.dylib:arm64e+0x6fd0)
    #11 0x199ae2d38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1d38)

Regressed-in: 4b0a3cbab1
CC: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
(cherry picked from commit 487286d472)
2021-02-20 17:30:45 -08:00
.gitlab-ci gitlab-ci: Add ccache to docker image, and leave in autotools 2019-02-22 11:55:31 +01:00
composite Switch automatic composite update to WorkQueue 2018-10-05 09:14:18 +02:00
config Revert "linux: Make platform device probe less fragile" 2020-09-08 10:50:38 +02:00
damageext Use ARRAY_SIZE all over the tree 2017-10-30 13:45:20 -04:00
dbe meson: Distribute more SDK headers 2018-04-02 13:42:08 -04:00
dix fix for ZDI-11426 2020-08-18 04:26:45 +00:00
doc doc: Update URLs in Xserver-DTrace.xml 2020-08-18 04:12:09 +00:00
dri3 dri3: Fix XACE access mode for open and get_supported_modifiers 2019-02-20 14:25:58 -05:00
exa Restrict 1x1 pixmap filling optimization to GXcopy 2020-02-06 17:54:36 +01:00
fb fboverlay: move bpp checks above malloc 2018-10-04 17:26:09 +02:00
glamor glamor: Update pixmap's devKind when making it exportable 2020-11-04 11:33:21 -08:00
glx configure: Build hashtable for Xres and glvnd 2020-11-09 11:35:30 +01:00
hw xquartz: Allocate each fbconfig separately 2021-02-20 17:30:45 -08:00
include xquartz: Remove check for libdispatch now that we don't support pre-SnowLeopard 2021-02-01 23:09:54 -08:00
m4 Add ax_pthread.m4 to m4/ 2016-05-29 19:20:51 -07:00
man man: s/__/@/g 2018-03-27 10:13:17 -04:00
mi mi: Add a default no-op miSourceValidate 2019-11-18 14:23:15 -05:00
miext miext/sync: Make struct _SyncObject::initialized fully ABI compatible 2019-09-26 18:26:45 +02:00
os os: Remove support for Tiger and earlier versions of macOS 2021-02-01 23:07:26 -08:00
present present/wnmd: Translate update region to screen space 2020-12-01 11:25:31 +01:00
pseudoramiX Unvalidated lengths 2017-10-10 23:33:34 +02:00
randr randr: Check rrPrivKey in RRHasScanoutPixmap() 2020-07-21 16:48:37 -05:00
record Fix XRecordRegisterClients() Integer underflow 2020-08-25 17:13:31 +02:00
render dix: Call SourceValidate before GetImage 2019-11-18 14:23:38 -05:00
test Fix building with -fno-common 2020-03-07 11:58:57 -08:00
Xext configure: Build hashtable for Xres and glvnd 2020-11-09 11:35:30 +01:00
xfixes xfixes: Restore monitoring of animated cursors 2018-02-14 13:52:45 -05:00
Xi Fix XIChangeHierarchy() integer underflow 2020-08-25 17:13:31 +02:00
xkb xkb: Fix heap overflow caused by optimized away min. 2020-12-16 10:14:12 +01:00
.appveyor.yml appveyor: use meson 2018-03-21 10:16:44 -04:00
.dir-locals.el Add .dir-locals.el 2013-08-17 12:17:36 +02:00
.gitignore .gitignore: Add new autotools file 'test-driver' 2014-04-21 13:41:42 -07:00
.gitlab-ci.yml Revert "gitlab-ci: Only run docker-image stage if relevant source files change" 2019-03-25 12:45:52 +01:00
.travis.yml Drop Travis Linux build in favour of GitLab CI 2019-02-22 11:52:42 +01:00
autogen.sh autogen: Set a default subject prefix for patches 2016-02-08 17:41:38 -05:00
configure.ac xquartz: Remove check for libdispatch now that we don't support pre-SnowLeopard 2021-02-01 23:09:54 -08:00
COPYING modesetting: Merge modesetting's COPYING into the xserver's. 2014-09-15 12:46:02 -07:00
devbook.am doc: Create a script to filter xmlto output 2015-01-05 14:24:06 -08:00
docbook.am docbook.am: embed css styles inside the HTML HEAD element 2011-09-21 14:07:49 -07:00
fix-miregion Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-miregion-private Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-patch-whitespace Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
fix-region Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
Makefile.am Update README for gitlab migration 2019-02-20 14:22:02 -05:00
manpages.am man: Fix automake seddery 2018-05-08 12:15:30 -04:00
meson_options.txt meson: Add configuration of listening on tcp, unix and local 2018-08-01 11:01:37 -04:00
meson.build meson.build: KMS support also depends on dri2 2020-12-16 10:14:12 +01:00
README.md Update README for gitlab migration 2019-02-20 14:22:02 -05:00
xorg-server.m4 macros: clarify documentation 2012-11-05 13:24:57 -06:00
xorg-server.pc.in xfree86: link modules against Xorg symbols on Cygwin 2012-04-05 21:57:07 -05:00
xserver.ent.in doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00

X Server

The X server accepts requests from client applications to create windows, which are (normally rectangular) "virtual screens" that the client program can draw into.

Windows are then composed on the actual screen by the X server (or by a separate composite manager) as directed by the window manager, which usually communicates with the user via graphical controls such as buttons and draggable titlebars and borders.

For a comprehensive overview of X Server and X Window System, consult the following article: https://en.wikipedia.org/wiki/X_server

All questions regarding this software should be directed at the Xorg mailing list:

https://lists.freedesktop.org/mailman/listinfo/xorg

The master development code repository can be found at:

https://gitlab.freedesktop.org/xorg/xserver

For patch submission instructions, see:

https://www.x.org/wiki/Development/Documentation/SubmittingPatches

As with other projects hosted on freedesktop.org, X.Org follows its Code of Conduct, based on the Contributor Covenant. Please conduct yourself in a respectful and civilized manner when using the above mailing lists, bug trackers, etc:

https://www.freedesktop.org/wiki/CodeOfConduct