[Frugalware-git] frugalware-current: xorg-server-1.2.0-9-i686

VMiklos vmiklos at frugalware.org
Tue Sep 18 00:27:11 CEST 2007


Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=538c975ec1f3bdd14b5d3a41f638dbcb704ef802

commit 538c975ec1f3bdd14b5d3a41f638dbcb704ef802
Author: VMiklos <vmiklos at frugalware.org>
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 <keithp at koto.keithp.com>
+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=(${source[@]} 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


More information about the Frugalware-git mailing list