xserver/Xext
Peter Hutterer c49c150dcf Xext/shm: add missing reply byte-swap in ProcShmCreateSegment
ProcShmCreateSegment() sent the xShmCreateSegmentReply to the client
without byte-swapping the sequenceNumber field for byte-swapped clients.
Every other SHM Proc function that sends a reply (ProcShmQueryVersion,
ProcShmGetImage) correctly swaps the reply fields.

The sequenceNumber is a CARD16 that Xlib/XCB uses to match replies to
their corresponding requests. With a garbled sequence number, the client
library will mismatch the reply with the wrong request, causing the
client to hang waiting for the real reply, process stale data from a
different request's reply, or crash due to unexpected reply format.

Fix by adding byte-swap of sequenceNumber and length before
WriteToClient, consistent with the other SHM reply handlers.

Co-Authored-by: Claude Code <noreply@anthropic.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2181>
2026-04-24 01:55:36 +00:00
..
bigreq.c Xext: bigreq: drop swapping request length fields 2026-01-25 10:39:59 -08:00
dpms.c Xext: dpms: need to include geext.h 2026-01-25 10:40:00 -08:00
dpmsproc.h dpms: Consolidate a bunch of stuff into Xext/dpms.c 2017-03-27 15:59:47 -04:00
geext.c Xext: geext: move struct _GEExtension into geext.c 2026-01-25 10:40:00 -08:00
geext.h Xext: geext.h: fix missing include of Xfuncproto.h 2026-01-25 10:40:00 -08:00
geint.h xge: Hide some implementation details 2015-07-08 16:40:58 -04:00
hashtable.c dix: Fix undefined shift in ht_generic_hash 2019-10-15 14:06:30 -04:00
hashtable.h Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
meson.build Xace: dont install xace.h and xacestr.h anymore 2026-01-25 10:39:54 -08:00
panoramiX.c panoramix: avoid null dereference in PanoramiXConsolidate() 2026-01-25 10:40:02 -08:00
panoramiX.h Xext: drop _PANORAMIX_SERVER 2026-01-25 10:39:54 -08:00
panoramiXh.h Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
panoramiXprocs.c dix: unexport Ones() 2026-01-25 10:39:57 -08:00
panoramiXsrv.h Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
panoramiXSwap.c Xext: panoramiX: drop now obsolete swap procs 2026-01-25 10:39:59 -08:00
saver.c Fix typos 2026-03-03 06:50:01 -03:00
security.c Xext: security: drop swapping request length fields 2026-01-25 10:39:59 -08:00
securitysrv.h Xext: securitysrv.h: drop hacks for including secur.h 2026-01-25 10:39:54 -08:00
shape.c Xext: shape: drop now obsolete swap procs 2026-01-25 10:39:59 -08:00
shm.c Xext/shm: add missing reply byte-swap in ProcShmCreateSegment 2026-04-24 01:55:36 +00:00
shmint.h xext: Fix shmint.h to not use headers outside of sdk_HEADERS 2013-11-14 10:22:15 +09:00
sleepuntil.c prevent name clash on Windows w/ RT_* defines 2026-01-19 12:48:30 -08:00
sleepuntil.h Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
sync.c Zero out structs to avoid leaking information via padding 2026-04-24 01:14:55 +00:00
syncsdk.h xsync: Add resource inside of SyncCreate, export SyncCreate 2019-04-17 14:01:17 -07:00
syncsrv.h sync: Convert from "CARD64" to int64_t. 2017-09-20 13:19:27 -04:00
vidmode.c Xext/vidmode: avoid null dereference if VidModeCreateMode() allocation fails 2026-01-25 10:40:02 -08:00
xace.c xace: typesafe hook function for XACE_KEY_AVAIL 2026-01-25 10:39:54 -08:00
xace.h Xace: provide definitions of new hook functions when xace is disabled 2026-01-25 10:40:02 -08:00
xacestr.h Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
xcmisc.c Xext: xcmisc: drop now obsolete swap procs 2026-01-25 10:39:59 -08:00
xf86bigfont.c Fix typos 2026-03-03 06:50:01 -03:00
xf86bigfontsrv.h Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
xres.c Xext/xres: fix undefined behavior in ConstructClientIdValue 2026-04-24 01:55:36 +00:00
xselinux.h include: unpexport SELINUX_* consts from include/global.h 2026-01-19 12:32:24 -08:00
xselinux_ext.c Xext/xselinux: add fast path to ProcSELinuxListSelections() 2026-01-25 10:40:02 -08:00
xselinux_hooks.c selinux: only generate audit events for avc and error messages 2026-02-15 10:43:28 -08:00
xselinux_label.c Xext/xselinux: avoid memory leak in SELinuxAtomToSID() 2026-01-25 10:40:02 -08:00
xselinuxint.h selinux: Stop using security_context_t 2021-08-17 16:02:39 -04:00
xtest.c Xext/xtest: avoid null dereference in ProcXTestFakeInput() 2026-01-25 10:40:03 -08:00
xvdisp.c Zero out structs to avoid leaking information via padding 2026-04-24 01:14:55 +00:00
xvdisp.h Fix swapped Xv dispatch under Xinerama. 2007-12-02 14:15:36 -05:00
xvdix.h xv: move XvVideoNotifyRec into xvmain.c 2026-01-25 10:39:55 -08:00
xvmain.c xv: move XvVideoNotifyRec into xvmain.c 2026-01-25 10:39:55 -08:00
xvmc.c Zero out structs to avoid leaking information via padding 2026-04-24 01:14:55 +00:00
xvmcext.h Xext: xvmc: drop unused XvMCScreenInitProc 2026-01-25 10:39:57 -08:00