xserver/mi
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Enrico Weigelt, metux IT consult 2ba0ed012f
Some checks failed
Build X servers / Check Signed-Off-By (push) Has been cancelled
Build X servers / ubuntu-fetch-pkg (push) Has been cancelled
Build X servers / xserver-build-ubuntu-no-gbm (push) Has been cancelled
Build X servers / xserver-build-ubuntu (push) Has been cancelled
Build X servers / abi-changes-check (push) Has been cancelled
Build X servers / xserver-build-ubuntu-debug (push) Has been cancelled
Build X servers / xserver-build-ubuntu-valgrind (push) Has been cancelled
Build X servers / ubuntu-deps-image (push) Has been cancelled
Build X servers / build-sdk-image (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-elographics:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-evdev:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-joystick:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-keyboard:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-libinput:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-mouse:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-synaptics:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-vmmouse:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-void:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (input-wacom:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-amdgpu:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-apm:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-ark:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-ast:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-ati:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-chips:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-cirrus:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-dummy:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-fbdev:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-freedreno:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-geode:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-i128:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-i740:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-intel:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-mach64:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-mga:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-neomagic:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-nested:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-nouveau:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-nv:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-omap:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-qxl:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-r128:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-rendition:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-s3virge:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-savage:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-siliconmotion:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sis:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sisusb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg14:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg3:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suncg6:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunffb:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-sunleo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-suntcx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-tdfx:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-trident:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-v4l:25.0.1) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vbox:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vesa:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-vmware:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-voodoo:25.0.0) (push) Has been cancelled
Build X servers / drivers-build-ubuntu (video-xgi:25.0.0) (push) Has been cancelled
Build X servers / xserver-build-mingw32-ubuntu (push) Has been cancelled
Build X servers / xserver-build-macos (push) Has been cancelled
Build X servers / xserver-build-freebsd (push) Has been cancelled
Build X servers / xserver-build-dragonflybsd (push) Has been cancelled
Build X servers / xserver-build-netbsd (push) Has been cancelled
Build X servers / xserver-build-solaris (push) Has been cancelled
Build X servers / xserver-build-openbsd (push) Has been cancelled
Build X servers / xserver-build-hurd (push) Has been cancelled
Build X servers / xserver-build-alpine (push) Has been cancelled
Build X servers / gentoo-deps-image (push) Has been cancelled
Build X servers / xserver-build-gentoo (push) Has been cancelled
Build X servers / xserver-build-rhel (10) (push) Has been cancelled
Build X servers / xserver-build-rhel (9) (push) Has been cancelled
Build X servers / xserver-build-cygwin (push) Has been cancelled
Build X servers / xserver-build-arch (push) Has been cancelled
Build X servers / Release pushed tag (push) Has been cancelled
check PRs for merge conflicts / notify (push) Has been cancelled
mi: fix double-free/UAF in miDCInitialize() on miSpriteInitialize() failure
miDCInitialize() registers the CloseScreen hook (miDCCloseScreen, via
dixScreenHookPostClose()) and stores pScreenPriv into the screen's
devPrivates *before* calling miSpriteInitialize(). On failure it only
freed pScreenPriv, leaving both the hook armed and the devPrivates slot
pointing at now-freed memory.

This isn't just "a caller that ignores the Bool return could look it up
later" -- the hook it already registered guarantees the problem fires on
every subsequent screen close: miDCCloseScreen() looks up the dangling
pointer via dixLookupPrivate(), passes it to miDCSwitchScreenCursor()
(dereferencing freed memory, e.g. dixDestroyPixmap() on
pScreenPriv->sourceBits), and then frees pScreenPriv a second time.

Trigger: any allocation failure inside miSpriteInitialize() during screen
init (a DDX like vfb/kdrive/xfree86/xnest/xwin calling miDCInitialize())
sets this up; the actual crash fires later, at screen close.

Fix: unhook the CloseScreen callback and clear the devPrivates slot before
freeing pScreenPriv, matching what miDCCloseScreen() itself does on the
normal teardown path.

Found via a fleet-directed alloc-fail/UAF sweep of Xext/, mi/, and miext/,
not from a live crash report.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2026-08-07 15:00:09 +02:00
..
meson.build mi: move over mioverlay.c to hw/xfree86/compat 2026-06-24 19:26:49 +02:00
mi_priv.h license: add X11 OR MIT OR AGPL-3.0-or-later to Enrico Weigelt's source files 2026-07-29 10:02:59 +02:00
miarc.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
micmap.c mi: parentheses around macro argument symbols 2026-06-25 09:23:45 +02:00
micopy.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
midash.c mi: unexport miStepDash() 2025-02-06 16:45:20 +02:00
midispcur.c mi: fix double-free/UAF in miDCInitialize() on miSpriteInitialize() failure 2026-08-07 15:00:09 +02:00
mieq.c mi: parentheses around macro argument symbols 2026-06-25 09:23:45 +02:00
miexpose.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
mifillarc.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
mifillarc.h mi: parentheses around macro argument symbols 2026-06-25 09:23:45 +02:00
mifpoly.h
migc.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
miglblt.c fb/mi/glamor: reject glyphs with negative dimensions 2026-07-14 11:54:22 +02:00
miinitext.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
miinitext.h mi: drop including dix-config.h from headers 2026-02-10 16:01:20 +01:00
mipointer.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
mipointer_priv.h license: add X11 OR MIT OR AGPL-3.0-or-later to Enrico Weigelt's source files 2026-07-29 10:02:59 +02:00
mipoly.c treewide: replace min/max macros by non-exported MIN/MAX and deprecate them 2026-06-25 14:06:17 +02:00
mipoly.h mi: parentheses around macro argument symbols 2026-06-25 09:23:45 +02:00
mipolypnt.c mi: use NULL instead of NullClient 2025-07-18 22:24:55 +02:00
mipolyrect.c mi: parentheses around macro argument symbols 2026-06-25 09:23:45 +02:00
mipolyseg.c drop obsolete HAVE_DIX_CONFIG_H 2024-10-10 13:38:31 +00:00
mipolytext.c treewide: clean up includes of misc.h 2026-06-19 19:24:57 +02:00
mipushpxl.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
miscanfill.h mi: parentheses around macro argument symbols 2026-06-25 09:23:45 +02:00
miscrinit.c treewide: clean up includes of misc.h 2026-06-19 19:24:57 +02:00
misprite.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
misprite.h mi: misprite.h: change retval's from Bool to bool (stdbool.h) 2026-04-23 20:01:59 +02:00
mivaltree.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
miwideline.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
miwideline.h mi: parentheses around macro argument symbols 2026-06-25 09:23:45 +02:00
miwindow.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
mizerarc.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00
mizerclip.c mi: parentheses around macro argument symbols 2026-06-25 09:23:45 +02:00
mizerline.c mi: use stdbool's 'bool' instead of 'Bool' for local variables 2026-08-07 14:35:29 +02:00