[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