Fix for CVE-2007-3069 from X.Org git repository:

Don't break grab and focus state for a window when redirecting it.

    Composite uses an unmap/map cycle to trigger backing pixmap allocation
    and cliprect recomputation when a window is redirected or unredirected.
    To avoid protocol visible side effects, map and unmap events are
    disabled temporarily.  However, when a window is unmapped it is also
    removed from grabs and loses focus, but these state changes are not
    disabled.

    This change supresses the unmap side effects during the composite
    unmap/map cycle and fixes a bug where a compositing window manager
     would cause the screensaver to lose its grab when it unredirects the
    fullscreen lock window.
This commit is contained in:
matthieu 2008-02-20 21:25:15 +00:00
parent 7d9176c215
commit 2610b1cdea

View File

@ -3023,7 +3023,8 @@ UnrealizeTree(
}
#endif
(* Unrealize)(pChild);
DeleteWindowFromAnyEvents(pChild, FALSE);
if (MapUnmapEventsEnabled(pWin))
DeleteWindowFromAnyEvents(pChild, FALSE);
if (pChild->viewable)
{
#ifdef DO_SAVE_UNDERS