Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=538c975ec1f3bdd14b5d3a41f638dbcb704ef802
commit 538c975ec1f3bdd14b5d3a41f638dbcb704ef802 Author: VMiklos <[EMAIL PROTECTED]> Date: Tue Sep 18 00:26:37 2007 +0200 xorg-server-1.2.0-9-i686 added CVE-2007-4730.patch closes #2411 diff --git a/source/x11/xorg-server/CVE-2007-4730.patch b/source/x11/xorg-server/CVE-2007-4730.patch new file mode 100644 index 0000000..2beb3f9 --- /dev/null +++ b/source/x11/xorg-server/CVE-2007-4730.patch @@ -0,0 +1,129 @@ +From: Keith Packard <[EMAIL PROTECTED]> +Date: Sun, 2 Sep 2007 04:14:22 +0000 (-0700) +Subject: [COMPOSITE] Composite used for pixmap population on redirect. (Bug #7447) +X-Git-Tag: xf-3_9_16d / xf-3_9_16e / xf-3_9_16f / xf-3_9_16Z +X-Git-Url: http://gitweb.freedesktop.org/?p=xorg/xserver.git;a=commitdiff;h=b69e6165136ff76ba4649bb9d11906fef27b78bc + +[COMPOSITE] Composite used for pixmap population on redirect. (Bug #7447) + +compNewPixmap copies bits from the parent window to the redirected child +pixmap to populate the pixmap with reasonable data. It cannot always use +CopyArea as that only works across matching depths. Use Composite when +the depths do not match. +(cherry picked from commit f98dfec79dadb70fa7bba84e7335f92b3a73dc02) +--- + +--- a/composite/compalloc.c ++++ b/composite/compalloc.c +@@ -461,7 +461,6 @@ compNewPixmap (WindowPtr pWin, int x, in + ScreenPtr pScreen = pWin->drawable.pScreen; + WindowPtr pParent = pWin->parent; + PixmapPtr pPixmap; +- GCPtr pGC; + + pPixmap = (*pScreen->CreatePixmap) (pScreen, w, h, pWin->drawable.depth); + +@@ -471,25 +470,63 @@ compNewPixmap (WindowPtr pWin, int x, in + pPixmap->screen_x = x; + pPixmap->screen_y = y; + +- pGC = GetScratchGC (pWin->drawable.depth, pScreen); +- +- /* +- * Copy bits from the parent into the new pixmap so that it will +- * have "reasonable" contents in case for background None areas. +- */ +- if (pGC) ++ if (pParent->drawable.depth == pWin->drawable.depth) + { +- XID val = IncludeInferiors; ++ GCPtr pGC = GetScratchGC (pWin->drawable.depth, pScreen); + +- ValidateGC(&pPixmap->drawable, pGC); +- dixChangeGC (serverClient, pGC, GCSubwindowMode, &val, NULL); +- (*pGC->ops->CopyArea) (&pParent->drawable, +- &pPixmap->drawable, +- pGC, +- x - pParent->drawable.x, +- y - pParent->drawable.y, +- w, h, 0, 0); +- FreeScratchGC (pGC); ++ /* ++ * Copy bits from the parent into the new pixmap so that it will ++ * have "reasonable" contents in case for background None areas. ++ */ ++ if (pGC) ++ { ++ XID val = IncludeInferiors; ++ ++ ValidateGC(&pPixmap->drawable, pGC); ++ dixChangeGC (serverClient, pGC, GCSubwindowMode, &val, NULL); ++ (*pGC->ops->CopyArea) (&pParent->drawable, ++ &pPixmap->drawable, ++ pGC, ++ x - pParent->drawable.x, ++ y - pParent->drawable.y, ++ w, h, 0, 0); ++ FreeScratchGC (pGC); ++ } ++ } ++ else ++ { ++ PictFormatPtr pSrcFormat = compWindowFormat (pParent); ++ PictFormatPtr pDstFormat = compWindowFormat (pWin); ++ XID inferiors = IncludeInferiors; ++ int error; ++ ++ PicturePtr pSrcPicture = CreatePicture (None, ++ &pParent->drawable, ++ pSrcFormat, ++ CPSubwindowMode, ++ &inferiors, ++ serverClient, &error); ++ ++ PicturePtr pDstPicture = CreatePicture (None, ++ &pPixmap->drawable, ++ pDstFormat, ++ 0, 0, ++ serverClient, &error); ++ ++ if (pSrcPicture && pDstPicture) ++ { ++ CompositePicture (PictOpSrc, ++ pSrcPicture, ++ NULL, ++ pDstPicture, ++ x - pParent->drawable.x, ++ y - pParent->drawable.y, ++ 0, 0, 0, 0, w, h); ++ } ++ if (pSrcPicture) ++ FreePicture (pSrcPicture, 0); ++ if (pDstPicture) ++ FreePicture (pDstPicture, 0); + } + return pPixmap; + } +--- a/composite/compint.h ++++ b/composite/compint.h +@@ -232,6 +232,9 @@ compCheckTree (ScreenPtr pScreen); + #define compCheckTree(s) + #endif + ++PictFormatPtr ++compWindowFormat (WindowPtr pWin); ++ + void + compSetPixmap (WindowPtr pWin, PixmapPtr pPixmap); + +--- a/composite/compwindow.c ++++ b/composite/compwindow.c +@@ -685,7 +685,7 @@ compGetWindowVisual (WindowPtr pWin) + return 0; + } + +-static PictFormatPtr ++PictFormatPtr + compWindowFormat (WindowPtr pWin) + { + ScreenPtr pScreen = pWin->drawable.pScreen; diff --git a/source/x11/xorg-server/FrugalBuild b/source/x11/xorg-server/FrugalBuild index d74cf76..e257d12 100644 --- a/source/x11/xorg-server/FrugalBuild +++ b/source/x11/xorg-server/FrugalBuild @@ -3,7 +3,7 @@ pkgname=xorg-server pkgver=1.2.0 -pkgrel=8 +pkgrel=9 mesaver=7.0.1 pkgdesc="Modular X.Org X Server" groups=('x11' 'xorg-core') @@ -41,7 +41,8 @@ source=([EMAIL PROTECTED] http://dl.sourceforge.net/sourceforge/mesa3d/MesaLib-$mesav bug-9367.patch \ mesa-6.5.3.patch \ remove__GLinterface.patch \ - http://xorg.freedesktop.org/archive/X11R7.2/patches/xorg-xserver-1.2.0-xcmisc.diff) + http://xorg.freedesktop.org/archive/X11R7.2/patches/xorg-xserver-1.2.0-xcmisc.diff \ + CVE-2007-4730.patch) subpkgs=('libglx') subdescs=('Glx library for XOrg.') @@ -74,6 +75,7 @@ build() { ## as always xorg devels -> <-mesa devels mess .. Fpatch mesa-6.5.3.patch Fpatch remove__GLinterface.patch + Fpatch CVE-2007-4730.patch ## GCC 4.2.0 bug do **NOT** remove this hack or it will kill your box!! ## http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30052 echo 'CFLAGS = @CFLAGS@ -O0' >> hw/xfree86/scanpci/Makefile.am @@ -132,5 +134,6 @@ sha1sums=('3c4e8ae90fafdddb4ec6e640b693c2beb295d106' \ '22025bd7b96deec8cd31f24fe87a170f1c7898d1' \ 'f257b56953e9756d38aa01c7f7f5d9a13160576c' \ '6473a13b65db3e44ba8b369a6a9c667887c41a52' \ - '3557cbe23be6912106ed7220d95301311fb93a26') + '3557cbe23be6912106ed7220d95301311fb93a26' \ + '4b8f2ea8ac293db6d0c2942ef01d894e66a9764f') # optimization OK _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
