sync code with last improvements from OpenBSD

This commit is contained in:
purplerain 2023-10-26 22:50:19 +00:00
parent e1ec829e63
commit 68fa196282
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
30 changed files with 268 additions and 1060 deletions

View file

@ -397,8 +397,21 @@ miPointerWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
#ifdef PANORAMIX
&& noPanoramiXExtension
#endif
)
UpdateSpriteForScreen(pDev, pScreen);
) {
DeviceIntPtr master = GetMaster(pDev, MASTER_POINTER);
/* Hack for CVE-2023-5380: if we're moving
* screens PointerWindows[] keeps referring to the
* old window. If that gets destroyed we have a UAF
* bug later. Only happens when jumping from a window
* to the root window on the other screen.
* Enter/Leave events are incorrect for that case but
* too niche to fix.
*/
LeaveWindow(pDev);
if (master)
LeaveWindow(master);
UpdateSpriteForScreen(pDev, pScreen);
}
}
/**

View file

@ -249,10 +249,10 @@ miScreenInit(ScreenPtr pScreen, void *pbits, /* pointer to screen bits */
pScreen->numVisuals = numVisuals;
pScreen->visuals = visuals;
if (width) {
pScreen->CloseScreen = miCloseScreen;
#ifdef MITSHM
ShmRegisterFbFuncs(pScreen);
#endif
pScreen->CloseScreen = miCloseScreen;
}
/* else CloseScreen */
/* QueryBestSize */