From 2a2409179c016f26435be72620e2a143dd09a351 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Tue, 29 Sep 2009 05:17:20 +0000 Subject: [PATCH 1/5] Initialize branch F-12 for libXext --- branch | 1 + 1 file changed, 1 insertion(+) create mode 100644 branch diff --git a/branch b/branch new file mode 100644 index 0000000..06de2d2 --- /dev/null +++ b/branch @@ -0,0 +1 @@ +F-12 From 1d2f1427b390e5b385e0d3623e708d55edad7858 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 6 Oct 2009 17:02:42 +0000 Subject: [PATCH 2/5] - libXext 1.1 --- libXext.spec | 7 +++++-- sources | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/libXext.spec b/libXext.spec index 1b2a1ce..29c2d76 100644 --- a/libXext.spec +++ b/libXext.spec @@ -1,7 +1,7 @@ Summary: X.Org X11 libXext runtime library Name: libXext -Version: 1.0.99.4 -Release: 3%{?dist} +Version: 1.1 +Release: 1%{?dist} License: MIT Group: System Environment/Libraries URL: http://www.x.org @@ -85,6 +85,9 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man3/*.3* %changelog +* Tue Oct 06 2009 Adam Jackson 1.1-1 +- libXext 1.1 + * Fri Jul 24 2009 Fedora Release Engineering - 1.0.99.4-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild diff --git a/sources b/sources index 7629e15..743c2ad 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -24da44888b87c66edb326acec35b85aa libXext-1.0.99.4.tar.bz2 +b8ee455effbcaf5a475870e92ed6973c libXext-1.1.tar.bz2 From dc0ce4f9590a515cb299e7c8c340c6816aa1c9c3 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 26 Nov 2009 01:55:44 +0000 Subject: [PATCH 3/5] Fix typo that causes a failure to update the common directory. (releng #2781) --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index ebb1b00..31fb574 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ # Makefile for source rpm: libXext -# $Id: Makefile,v 1.1 2005/08/26 21:23:41 mharris Exp $ +# $Id: Makefile,v 1.2 2007/10/15 18:58:04 notting Exp $ NAME := libXext SPECFILE = $(firstword $(wildcard *.spec)) define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done +for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done endef MAKEFILE_COMMON := $(shell $(find-makefile-common)) From dd361d7800ed7f63d5ebdf2f4a832455154651fd Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 3 Dec 2009 00:08:07 +0000 Subject: [PATCH 4/5] - libXext-1.1-XAllocID.patch: call XAllocID with the display lock held. - libXext-1.1-event_vec-smash.patch: don't smash the event processing vector if the server has an older extension version than the client. --- libXext-1.1-XAllocID.patch | 35 +++++++++++++ libXext-1.1-event_vec-smash.patch | 87 +++++++++++++++++++++++++++++++ libXext.spec | 13 ++++- 3 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 libXext-1.1-XAllocID.patch create mode 100644 libXext-1.1-event_vec-smash.patch diff --git a/libXext-1.1-XAllocID.patch b/libXext-1.1-XAllocID.patch new file mode 100644 index 0000000..d525633 --- /dev/null +++ b/libXext-1.1-XAllocID.patch @@ -0,0 +1,35 @@ +From 956fd30e1046e5779ac0b6c07ec4f0e87250869a Mon Sep 17 00:00:00 2001 +From: Jamey Sharp +Date: Wed, 7 Oct 2009 19:31:21 -0700 +Subject: [PATCH] XAllocID must only be called with the Display lock held. + +This patch makes XShmAttach follow the same XID allocation pattern used in +other stubs, such as XShmCreatePixmap. + +Reported-by: +Signed-off-by: Jamey Sharp +--- + src/XShm.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +diff --git a/src/XShm.c b/src/XShm.c +index 922b4cb..38efa9f 100644 +--- a/src/XShm.c ++++ b/src/XShm.c +@@ -235,12 +235,11 @@ Status XShmAttach(Display *dpy, XShmSegmentInfo *shminfo) + + ShmCheckExtension (dpy, info, 0); + +- shminfo->shmseg = XAllocID(dpy); + LockDisplay(dpy); + GetReq(ShmAttach, req); + req->reqType = info->codes->major_opcode; + req->shmReqType = X_ShmAttach; +- req->shmseg = shminfo->shmseg; ++ req->shmseg = shminfo->shmseg = XAllocID(dpy); + req->shmid = shminfo->shmid; + req->readOnly = shminfo->readOnly ? xTrue : xFalse; + UnlockDisplay(dpy); +-- +1.6.5.2 + diff --git a/libXext-1.1-event_vec-smash.patch b/libXext-1.1-event_vec-smash.patch new file mode 100644 index 0000000..eff89f9 --- /dev/null +++ b/libXext-1.1-event_vec-smash.patch @@ -0,0 +1,87 @@ +From 83fdb27df4ddc2fb088ddf2ec65f0db6b7c57287 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Thu, 26 Nov 2009 09:38:31 +1000 +Subject: [PATCH] Don't smash the event_vec if num_events differs between lib and server. + +If the library extension thinks there's more events to an extension than the +server actually has, the event_vec for the overlapping range can get +overwritten. This depends on the initialization order of the libraries. + +Reported-by: Nathan Kidd +Signed-off-by: Peter Hutterer +Reviewed-by: Julien Cristau +--- + src/extutil.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 46 insertions(+), 1 deletions(-) + +diff --git a/src/extutil.c b/src/extutil.c +index 8f4923a..a8f4d5d 100644 +--- a/src/extutil.c ++++ b/src/extutil.c +@@ -103,6 +103,7 @@ XExtDisplayInfo *XextAddDisplay ( + int nevents, + XPointer data) + { ++ static unsigned char ext_handlers[64] = {0}; + XExtDisplayInfo *dpyinfo; + + dpyinfo = (XExtDisplayInfo *) Xmalloc (sizeof (XExtDisplayInfo)); +@@ -117,10 +118,54 @@ XExtDisplayInfo *XextAddDisplay ( + */ + if (dpyinfo->codes) { + int i, j; ++ int idx = dpyinfo->codes->first_event & 0x3f; ++ ++ ++ /* Xlib extensions use compiled in event numbers. A new library ++ * against an older server may thus expect a different (higher) ++ * number of events than the server will send. We have no way of ++ * knowing the number of events for an extension, the server won't ++ * tell us. ++ * ++ * Depending on the extension initialization order, this smashes the ++ * event_vec[type] for anything after the extension with the ++ * different number of events. ++ * ++ * e.g. server with inputproto 1.3 expects 15 events, libXi with ++ * inputproto 2.0 expects 17 events. ++ * base code is 80, events [80,96] are handled by libXi. events [95, ++ * 96] belong to the next extension already though. ++ * This requires XI to be initialized after the extension occupying ++ * the next range of event codes. ++ * ++ * To avoid this, we have a zeroed out array of extension handlers. ++ * If an extension handler for an event type is already set, and the ++ * previous event code (before base_code) is the same extension, we ++ * have the nevents conflict. Unset all those handlers and allow ++ * overwriting them with the new handlers. ++ * ++ * If a handler for a (base + n) event is already set, stop ++ * registering this extension for the event codes. ++ * ++ * event_codes are subtracted by 64 since we don't need to worry ++ * about core. ++ */ ++ ++ if (idx && ext_handlers[idx - 1] == ext_handlers[idx]) { ++ for (i = idx; i < 64; i++) { ++ if (ext_handlers[idx - 1] == ext_handlers[i]) ++ ext_handlers[i] = 0; ++ else ++ break; ++ } ++ } + +- for (i = 0, j = dpyinfo->codes->first_event; i < nevents; i++, j++) { ++ for (i = 0, j = dpyinfo->codes->first_event; i < nevents; i++, j++, idx++) { ++ if (ext_handlers[idx]) /* don't smash the following extension */ ++ break; + XESetWireToEvent (dpy, j, hooks->wire_to_event); + XESetEventToWire (dpy, j, hooks->event_to_wire); ++ ext_handlers[idx] = dpyinfo->codes->first_event & 0x3f; + } + + /* register extension for XGE */ +-- +1.6.5.2 + diff --git a/libXext.spec b/libXext.spec index 29c2d76..b85d43d 100644 --- a/libXext.spec +++ b/libXext.spec @@ -1,13 +1,17 @@ Summary: X.Org X11 libXext runtime library Name: libXext Version: 1.1 -Release: 1%{?dist} +Release: 2%{?dist} License: MIT Group: System Environment/Libraries URL: http://www.x.org BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Source0: ftp://ftp.x.org/pub/individual/lib/%{name}-%{version}.tar.bz2 +# From upstream, drop if updating to 1.1.1 +Patch1: libXext-1.1-XAllocID.patch +# From upstream +Patch2: libXext-1.1-event_vec-smash.patch BuildRequires: xorg-x11-proto-devel >= 7.4-23 BuildRequires: libX11-devel @@ -33,6 +37,8 @@ X.Org X11 libXext development package %prep %setup -q +%patch1 -p1 +%patch2 -p1 %build %configure --disable-static @@ -85,6 +91,11 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man3/*.3* %changelog +* Thu Dec 03 2009 Peter Hutterer 1.1-2 +- libXext-1.1-XAllocID.patch: call XAllocID with the display lock held. +- libXext-1.1-event_vec-smash.patch: don't smash the event processing vector + if the server has an older extension version than the client. + * Tue Oct 06 2009 Adam Jackson 1.1-1 - libXext 1.1 From 8355326a5a0f811d1bd206c020bd9b231abbd886 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 29 Jul 2010 17:37:55 +0000 Subject: [PATCH 5/5] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- branch | 1 - import.log | 1 - 4 files changed, 23 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile delete mode 100644 branch delete mode 100644 import.log diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index 31fb574..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: libXext -# $Id: Makefile,v 1.2 2007/10/15 18:58:04 notting Exp $ -NAME := libXext -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attempt a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/branch b/branch deleted file mode 100644 index 06de2d2..0000000 --- a/branch +++ /dev/null @@ -1 +0,0 @@ -F-12 diff --git a/import.log b/import.log deleted file mode 100644 index ca7dae1..0000000 --- a/import.log +++ /dev/null @@ -1 +0,0 @@ -libXext-1_0_99_1-1_fc11:HEAD:libXext-1.0.99.1-1.fc11.src.rpm:1229692354