--- libxi-1.6.99.1.orig/autogen.sh +++ libxi-1.6.99.1/autogen.sh @@ -0,0 +1,12 @@ +#! /bin/sh + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd $srcdir + +autoreconf -v --install || exit 1 +cd $ORIGDIR || exit $? + +$srcdir/configure --enable-maintainer-mode "$@" --- libxi-1.6.99.1.orig/debian/changelog +++ libxi-1.6.99.1/debian/changelog @@ -0,0 +1,537 @@ +libxi (2:1.6.99.1-0ubuntu3.1) raring-security; urgency=low + + * SECURITY UPDATE: denial of service and possible code execution via + incorrect memory size calculations + - debian/patches/CVE-2013-1984.patch: fix multiple integer overflows. + - CVE-2013-1984 + * SECURITY UPDATE: denial of service and possible code execution via + incorrect memory size calculations from signedness issues + - debian/patches/CVE-2013-1995.patch: fix signedness issues in + src/XListDev.c. + - CVE-2013-1995 + * SECURITY UPDATE: denial of service and possible code execution via + incorrect length and bounds checking + - debian/patches/CVE-2013-1998.patch: properly check lengths and + indexes in src/XGetBMap.c, src/XIPassiveGrab.c, src/XQueryDv.c. + - CVE-2013-1998 + + -- Marc Deslauriers Wed, 29 May 2013 10:07:24 -0400 + +libxi (2:1.6.99.1-0ubuntu3) raring; urgency=low + + * revert-xi2.3.diff: Change .pc file to set version back to 1.6.1, to avoid + tricking module checks of reverse dependencies into thinking that the + installed libxi supports pointer barrier events. Fixes mutter FTBFS. + + -- Martin Pitt Wed, 20 Feb 2013 09:58:26 +0100 + +libxi (2:1.6.99.1-0ubuntu2) raring; urgency=low + + * revert support for the new pointer barrier events for now, until + the rest of the stack is ready. + + -- Timo Aaltonen Thu, 07 Feb 2013 18:55:05 +0200 + +libxi (2:1.6.99.1-0ubuntu1) raring; urgency=low + + * Sync from unreleased debian git. + - new upstream release + + -- Timo Aaltonen Wed, 06 Feb 2013 23:56:21 +0200 + +libxi (2:1.6.99.1-1) UNRELEASED; urgency=low + + * New upstream release. + * control: Bump policy to 3.9.4, no changes. + * add-missing-xi_rawtouch.diff: Upstream commit to add XI_RawTouch in + XInputCopyCookie. + * control: Bump x11proto-input-dev build-dep to 2.2.99.1. + * libxi6.symbols: Added new symbols. + + -- Timo Aaltonen Wed, 06 Feb 2013 23:43:08 +0200 + +libxi (2:1.6.1-1) unstable; urgency=low + + [ Julien Cristau ] + * Don't require (fake)root for debian/rules clean. + + [ Cyril Brulebois ] + * New upstream release. + + -- Cyril Brulebois Sun, 20 May 2012 17:00:03 +0200 + +libxi (2:1.6.0-1) unstable; urgency=low + + [ Chase Douglas ] + * New upstream release + - Fix bus error on MIPS N32 (closes: #636920) + * Bump build deps on x11proto-input-dev + * Bump lintian standards version to 3.9.3 + + [ Julien Cristau ] + * Pull some more changes from upstream master: + - Fix wrong button label and mask copy on OS X (fixes regression in the + patch for bug#636920) + - Move version comparison into a helper function + - Set the RawEvent sourceid (#34240) + * Upload to unstable. + + -- Julien Cristau Mon, 16 Apr 2012 19:32:32 +0200 + +libxi (2:1.6.0-0ubuntu2) precise; urgency=low + + * Report button state and labels correctly (LP: #980041) + - Add patch 0001_fix_button_mask_and_labels.patch from upstream + + -- Chase Douglas Thu, 12 Apr 2012 09:30:18 -0700 + +libxi (2:1.6.0-0ubuntu1) precise; urgency=low + + * New upstream release + - Bug fixes only + * Drop 0001_scroll_increment_value.patch, merged upstream + + -- Chase Douglas Fri, 30 Mar 2012 17:58:18 -0700 + +libxi (2:1.5.99.3-0ubuntu2) precise; urgency=low + + * Fix scroll valuator increment value on 32-bit machines (LP: #949465) + - Added 0001_scroll_increment_value.patch + * Bump lintian standards to 3.9.3 + + -- Chase Douglas Wed, 07 Mar 2012 14:44:19 -0800 + +libxi (2:1.5.99.3-0ubuntu1) precise; urgency=low + + * New upstream release candidate + * Bump deps on x11proto-input-dev to 2.1.99.6 + * Fix libxi6.symbols (delete errant XIUngrabTouchBegin from ubuntu version) + + -- Chase Douglas Fri, 10 Feb 2012 23:19:36 +0100 + +libxi (2:1.5.99.2-1) experimental; urgency=low + + * New upstream release candidate: + - With XI 2.2 support, needed for multitouch. + * Fix changelog entry for 2:1.4.99.1-1: + - With XI 2.1 support, no multitouch yet. + * Bump x11proto-input-dev and libx11-dev build-deps. + * Update libxi6.symbols with new symbols and bump shlibs. + + -- Cyril Brulebois Thu, 22 Dec 2011 14:19:35 +0100 + +libxi (2:1.5.99.2-0ubuntu3) precise; urgency=low + + * Bump build depends on x11proto-input-dev to 2.1.99.5. Our 2.1.99.4 package + is really 2.0.2, so 2.1.99.5 is the first version with MT support. + + -- Christopher James Halse Rogers Wed, 18 Jan 2012 11:44:39 +1100 + +libxi (2:1.5.99.2-0ubuntu2) precise; urgency=low + + * Bump build depends on libx11-dev + + -- Chase Douglas Fri, 13 Jan 2012 17:31:04 +0100 + +libxi (2:1.5.99.2-0ubuntu1) precise; urgency=low + + * New upstream release candidate: + - Really with multitouch support. + * Removed prototype multitouch patch + * Bump x11proto-input-dev dependencies + * Bump XIAllowTouchEvents symbols minver due to added parameter + + -- Chase Douglas Wed, 21 Dec 2011 19:25:46 -0800 + +libxi (2:1.5.0-1) experimental; urgency=low + + * New upstream release. + + -- Cyril Brulebois Wed, 21 Dec 2011 10:12:07 +0100 + +libxi (2:1.4.99.1-1) experimental; urgency=low + + * New upstream release candidate: + - With XI 2.1 support. + * Update build dependencies accordingly: + - Bump xutils-dev, x11proto-input-dev, xorg-sgml-doctools. + - Add xsltproc. + * Update libxi-dev.install: specs/ and docs/ have been merged. + * Don't install *.db yet. + * Add -c4 to dh_makeshlibs. + + -- Cyril Brulebois Thu, 15 Dec 2011 15:05:46 +0100 + +libxi (2:1.4.3-3ubuntu1) oneiric; urgency=low + + * Merge from Debian unstable, remaining changes: + - Add xi 2.1 support + * Update 1_xi2.1.patch to apply. + * Drop 100_len_raw_events.patch, included upstream. + + -- Timo Aaltonen Tue, 14 Jun 2011 14:28:17 +0300 + +libxi (2:1.4.3-3) unstable; urgency=low + + * Team upload. + * Don't ship debug symbols for the udeb in libxi6-dbg. + * Add build-{arch,indep} debian/rules targets. + + -- Julien Cristau Sun, 12 Jun 2011 00:20:23 +0200 + +libxi (2:1.4.3-2) unstable; urgency=low + + * Team upload. + + [ Steve Langasek ] + * Build for multiarch. + + [ Julien Cristau ] + * Remove David Nusinow from Uploaders. + + -- Julien Cristau Sat, 11 Jun 2011 16:14:32 +0200 + +libxi (2:1.4.3-1) unstable; urgency=low + + * New upstream release. + * Add a comment to the series file so that it isn't eaten by + dpkg-source. + * Bump Standards-Version (no changes). + + -- Cyril Brulebois Thu, 09 Jun 2011 12:08:59 +0200 + +libxi (2:1.4.2-1) unstable; urgency=low + + [ Julien Cristau ] + * Bump Standards-Version to 3.9.1 (no changes). + + [ Cyril Brulebois ] + * New upstream release. + + -- Cyril Brulebois Sun, 27 Mar 2011 06:36:41 +0200 + +libxi (2:1.4.1-1ubuntu3) oneiric; urgency=low + + * Add 100_len_raw_events.patch: Cherrypick upstream patch to correct the + use of the calculated structure length for memory allocations. Fixes + issue where incorrect memory size was allocated, leading to valuator + data overwriting memory, resulting in an error "Invalid write of size + 1" and heap corruption causing applications to crash when they use Raw + Events. (LP: #770522) + + -- Bryce Harrington Thu, 05 May 2011 14:11:39 -0700 + +libxi (2:1.4.1-1ubuntu2) natty; urgency=low + + * FFe LP: #733501: build for multiarch. + + -- Steve Langasek Wed, 23 Mar 2011 00:37:35 -0700 + +libxi (2:1.4.1-1ubuntu1) natty; urgency=low + + * Add xi 2.1 support + - Added 1_xi2.1.patch + - Bump dependency on x11proto-input-dev for xi 2.1 + - Add new xi 2.1 symbols to symbols file + * Update maintainer for Ubuntu upload + + -- Chase Douglas Mon, 21 Feb 2011 19:54:15 -0500 + +libxi (2:1.4.1-1) unstable; urgency=low + + * New upstream release. + * Use xorg-sgml-doctool's copy of xorg.css. + * Upload to unstable. + + -- Julien Cristau Tue, 08 Feb 2011 00:04:32 +0100 + +libxi (2:1.4.0-1) experimental; urgency=low + + * New upstream release. + * Update debian/copyright from upstream COPYING. + * Bump xutils-dev build-dep for new macros. + * Pass --with-xmlto and --without-fop to configure. + * Add xmlto, xorg-sgml-doctools, and w3m build-dep accordingly. + * Switch dh_install from --list-missing to --fail-missing for added + safety. + * Get rid of *.xml files before running dh_install. + * Ship *.html, *.txt, *.css in libxi-dev. + + -- Cyril Brulebois Fri, 14 Jan 2011 06:22:37 +0100 + +libxi (2:1.3-6) unstable; urgency=medium + + * WireToEvent: Set display member of all events as well (cherry-pick from + upstream). + + -- Julien Cristau Fri, 17 Dec 2010 17:00:44 +0100 + +libxi (2:1.3-5) unstable; urgency=low + + * Cherry-picked fixes from upstream: + - man: fix types for XGetSelectedExtensionEvents + - Initialize extension with the right number of events (obsoletes our + quilt patch) + - Don't unlock the Display twice + - Fix usage of uninitialized value + - Fix memory leak in XIGetSelectedEvents + - Always unlock display correctly + - man: improve readability of XAllowDeviceEvents + - man: fix typo in XIQueryDevice doc (closes: #598964) + - Fix typo when converting raw events from the wire + - man: XGetDeviceProperty(3) has no parameter 'pending' + + -- Julien Cristau Thu, 18 Nov 2010 17:31:04 +0100 + +libxi (2:1.3-4) unstable; urgency=low + + * Add udeb needed for the graphical installer: libxi6-udeb. + * Version/Bump some B-D to make sure the udeb gets its dependencies on + the (recently-added) udebs rather than on the libraries: + - libx11-dev + - libxext-dev + * Add myself to Uploaders. + + -- Cyril Brulebois Thu, 11 Mar 2010 22:49:49 +0100 + +libxi (2:1.3-3) unstable; urgency=low + + [ Julien Cristau ] + * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no + good reason. Thanks, Colin Watson! + * Remove myself from Uploaders + * Update patch from 2:1.3-2 to not crash if an app (like, say, anything + using Qt3) calls libXi functions but the extension isn't available + (closes: #568323). Thanks, Roman Mamedov! + + [ Brice Goglin ] + * Remove Jamey Sharp and Josh Triplett from Uploaders, closes: #568276. + + [ Cyril Brulebois ] + * Bump Standards-Version from 3.8.3 to 3.8.4 (no changes needed). + * Upload to unstable. + + -- Cyril Brulebois Wed, 03 Mar 2010 22:14:43 +0100 + +libxi (2:1.3-2) unstable; urgency=low + + * Initialize extension with the right number of events. This should fix + issues when libXi announces more events than the X server will actually + send for that extension, and thus smashes Xlib's event vector (closes: + #515734, #515946). Patch by Peter Hutterer, analysis by Nathan Kidd. + * Upload to unstable. + + -- Julien Cristau Wed, 06 Jan 2010 16:23:44 +0000 + +libxi (2:1.3-1) experimental; urgency=low + + * Bump Standards-Version to 3.8.3. + * Add build-deps on xmlto and asciidoc to build the manpages. + * New upstream release. + + -- Julien Cristau Sat, 21 Nov 2009 18:39:28 +0100 + +libxi (2:1.2.99.4-1) experimental; urgency=low + + [ Timo Aaltonen ] + * Add README.source from xsfbs. Bump Standards-Version to 3.8.1. + + [ Julien Cristau ] + * Move libxi6-dbg to section 'debug'. + * Drop libxi-dev pre-dependency on x11-common, only needed for upgrades from + sarge. + * New upstream release candidate. + * XInput.h moved here from x11proto-input-dev; add Replaces. + * Also remove config.h.in in clean. + * Bump shlibs and update symbols. + + -- Julien Cristau Tue, 29 Sep 2009 14:24:21 +0200 + +libxi (2:1.2.1-2) unstable; urgency=low + + * Fix typo in debian/rules, which made us build with make -j if + DEB_BUILD_OPTIONS didn't ask for it. Thanks to Samuel Thibault for + reporting the problem! + + -- Julien Cristau Mon, 16 Mar 2009 15:27:45 +0100 + +libxi (2:1.2.1-1) unstable; urgency=low + + * New upstream release. + + -- Julien Cristau Thu, 12 Mar 2009 16:00:29 +0100 + +libxi (2:1.2.0-2) unstable; urgency=low + + * Add symbols file. + * Upload to unstable. + + -- Julien Cristau Mon, 16 Feb 2009 19:53:01 +0100 + +libxi (2:1.2.0-1) experimental; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + * debian/control: + - Bump x11proto-input-dev build-dep to 1.5. + * debian/rules: + - Bump the shlibs for libxi6. + + [ Julien Cristau ] + * Drop -1 debian revisions from build-deps. + * Bump Standards-Version to 3.7.3. + * Drop the XS- prefix from Vcs-* control fields. + * libxi6{,-dbg} don't need to depend on x11-common. + * Wrap build-deps in debian/control. + * Build-depend on automake and libtool, run autoreconf on build, and allow + parallel builds. + * Bump libxi-dev's dependency on x11proto-input-dev to 1.5 as well. + + [ Brice Goglin ] + * Add a link to www.X.org in the long description. + + -- Julien Cristau Fri, 19 Dec 2008 15:55:22 +0100 + +libxi (2:1.1.4-1) unstable; urgency=low + + * New upstream release. + + -- Julien Cristau Mon, 17 Nov 2008 03:16:48 +0100 + +libxi (2:1.1.3-1) unstable; urgency=low + + * Add upstream URL to debian/copyright. + * New upstream release. + + -- Julien Cristau Thu, 06 Sep 2007 01:45:30 +0200 + +libxi (2:1.1.2-1) unstable; urgency=low + + * New upstream release + + fixes locking bugs (closes: #429147). + * Add myself to Uploaders and remove Branden and Fabio with their + permission. + * Use ${binary:Version} instead of ${Source-Version}. + * Add a XS-Vcs-Browser header. + + -- Julien Cristau Wed, 01 Aug 2007 05:07:05 +0200 + +libxi (2:1.1.1-1) unstable; urgency=low + + * New upstream release. + + -- Julien Cristau Fri, 06 Jul 2007 03:52:46 +0200 + +libxi (2:1.1.0-2) experimental; urgency=low + + * Pull fixes from upstream git. + + remove patch 00_upstream_002_XiCheckExtInit_unlockdisplay.diff applied + upstream. + * Bump epoch to 2 so ubuntu can sync this package. + + -- Julien Cristau Mon, 5 Mar 2007 17:24:20 +0100 + +libxi (1:1.1.0-1) experimental; urgency=low + + * Adjust Section values to what the override says. + * Update location of upstream repository from CVS to git in the long + descriptions. + * New upstream release. + + Drop patches applied upstream + + Bump build-dependency on x11proto-input-dev to >= 1.4. + * Install the upstream changelog. + * Add XS-Vcs-Git header in debian/control. + + -- Julien Cristau Fri, 9 Feb 2007 12:34:51 +0100 + +libxi (1:1.0.1-4) unstable; urgency=low + + * libXi: Various Display locking correctness issues (Closes: #400442) + * Add Josh and myself to Uploaders. + + -- Jamey Sharp Mon, 27 Nov 2006 15:07:34 -0800 + +libxi (1:1.0.1-3) unstable; urgency=low + + * Bring X11R7.1 into unstable. Still closes #377204. + * dbg package has priority extra. + + -- Drew Parsons Sat, 26 Aug 2006 20:46:35 +1000 + +libxi (1:1.0.1-2) experimental; urgency=low + + * Patch 10_manpage_section.diff sets the man page section according + to the definition given by xutils macros. Set Build-Depends: + xutils-dev to prove the point. Install man pages using + dh_installman. Closes: #377204. + + -- Drew Parsons Fri, 11 Aug 2006 15:03:27 +1000 + +libxi (1:1.0.1-1) experimental; urgency=low + + * New upstream version (X11R7.1). + - applies patch 01_manpage_location.diff. + * libxi provides no header files, so don't try to install usr/include/X11/* + * Exclude .la from dh_install. + + -- Drew Parsons Thu, 10 Aug 2006 03:00:53 +1000 + +libxi (1:1.0.0-6) UNRELEASED; urgency=low + + * Test for obj-$(DEB_BUILD_GNU_TYPE) before creating it during build; + idempotency fix. + * Run dh_install w/ --list-missing. + * Drop duplicate x11-common dep in -dev package. + * Bump standards version to 3.7.2.0. + * Version x11-common pre-dep in -dev package to 1:7.0.0 to match + the rest of Debian. + * Bump debhelper compat to 5. + * Fix dh_strip call to skip the -dbg package. + + -- Andres Salomon Mon, 17 Jul 2006 01:21:03 -0400 + +libxi (1:1.0.0-5) unstable; urgency=low + + * Reorder makeshlib command in rules file so that ldconfig is run + properly. Thanks Drew Parsons and Steve Langasek. + * Add quilt to build-depends + + -- David Nusinow Wed, 19 Apr 2006 00:36:48 -0400 + +libxi (1:1.0.0-4) unstable; urgency=low + + * Remove references to xss in -dev and -dbg package descriptions. Thanks + Josh Triplett. (closes: #362059) + + -- David Nusinow Tue, 11 Apr 2006 20:26:26 -0400 + +libxi (1:1.0.0-3) unstable; urgency=low + + * Upload to unstable + + -- David Nusinow Thu, 23 Mar 2006 22:44:42 -0500 + +libxi (1:1.0.0-2) experimental; urgency=low + + * Backport manpage location fix + + -- David Nusinow Thu, 9 Mar 2006 23:22:36 -0500 + +libxi (1:1.0.0-1) experimental; urgency=low + + * First modular upload to Debian + * Install manpages in libxi-dev. Thanks Julien Cristau. + + -- David Nusinow Thu, 29 Dec 2005 20:53:15 -0500 + +libxi (1:1.3.0-2) breezy; urgency=low + + * Bump libx11-dev and libxext-dev Build-Deps to avoid _XOPEN_SOURCE. + + -- Daniel Stone Sat, 23 Jul 2005 00:28:53 +1000 + +libxi (1:1.3.0-1) breezy; urgency=low + + * First libxi release. + + -- Daniel Stone Mon, 16 May 2005 22:10:17 +1000 --- libxi-1.6.99.1.orig/debian/compat +++ libxi-1.6.99.1/debian/compat @@ -0,0 +1 @@ +5 --- libxi-1.6.99.1.orig/debian/libxi6-udeb.install +++ libxi-1.6.99.1/debian/libxi6-udeb.install @@ -0,0 +1 @@ +usr/lib/*/libXi.so.6* usr/lib --- libxi-1.6.99.1.orig/debian/rules +++ libxi-1.6.99.1/debian/rules @@ -0,0 +1,110 @@ +#!/usr/bin/make -f +# debian/rules for the Debian libxi package. +# Copyright © 2004 Scott James Remnant +# Copyright © 2005 Daniel Stone +# Copyright © 2005 David Nusinow + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# set this to the name of the main shlib's binary package +PACKAGE = libxi6 + +include debian/xsfbs/xsfbs.mk + +CFLAGS = -Wall -g +ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + MAKEFLAGS += -j$(NUMJOBS) +endif + +DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + confflags += --build=$(DEB_HOST_GNU_TYPE) +else + confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) +endif + +configure: $(STAMP_DIR)/patch + autoreconf -vfi + +build/config.status: configure + mkdir -p build + cd build && \ + ../configure --prefix=/usr --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info $(confflags) \ + --with-xmlto \ + --without-fop \ + --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \ + CFLAGS="$(CFLAGS)" + + +build: build-indep build-arch +build-indep: +build-arch: build-stamp +.PHONY: build build-indep build-arch + +build-stamp: build/config.status + dh_testdir + cd build && $(MAKE) + + touch build-stamp + +clean: xsfclean + dh_testdir + rm -f build-stamp + rm -f config.cache config.log config.status + rm -f */config.cache */config.log */config.status + rm -f conftest* */conftest* + rm -rf autom4te.cache */autom4te.cache + rm -rf build + find -name Makefile.in -delete + rm -f INSTALL compile config.guess config.sub configure config.h.in + rm -f depcomp install-sh ltmain.sh missing aclocal.m4 mkinstalldirs + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + cd build && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + + dh_installdocs + find debian/tmp -name '*.xml' -delete + find debian/tmp -name '*.db' -delete + dh_install --sourcedir=debian/tmp --fail-missing --exclude=libXi.la --exclude=usr/share/man/man3 + dh_installman + dh_installchangelogs ChangeLog + dh_link + dh_strip -p$(PACKAGE) --dbg-package=$(PACKAGE)-dbg + dh_strip -N$(PACKAGE) + dh_compress + dh_fixperms + dh_makeshlibs -V'libxi6 (>= 2:1.5.99.2)' --add-udeb=$(PACKAGE)-udeb -- -c4 + dh_shlibdeps + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +# Build architecture-independent files here. +binary-indep: build install +# Nothing to do + +binary: binary-indep binary-arch +.PHONY: clean binary-indep binary-arch binary install --- libxi-1.6.99.1.orig/debian/watch +++ libxi-1.6.99.1/debian/watch @@ -0,0 +1,3 @@ +#git=git://anongit.freedesktop.org/xorg/lib/libXi +version=3 +http://xorg.freedesktop.org/releases/individual/lib/ libXi-(.*)\.tar\.gz --- libxi-1.6.99.1.orig/debian/libxi6.install +++ libxi-1.6.99.1/debian/libxi6.install @@ -0,0 +1 @@ +usr/lib/*/libXi.so.6* --- libxi-1.6.99.1.orig/debian/libxi-dev.manpages +++ libxi-1.6.99.1/debian/libxi-dev.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man3/* --- libxi-1.6.99.1.orig/debian/copyright +++ libxi-1.6.99.1/debian/copyright @@ -0,0 +1,87 @@ +This package was downloaded from +http://xorg.freedesktop.org/releases/individual/lib/ + +Copyright 1989, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +Copyright 1989 by Hewlett-Packard Company, Palo Alto, California. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Hewlett-Packard not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +Copyright 2008 Peter Hutterer + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the author shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the author. + +Copyright © 2009 Red Hat, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. --- libxi-1.6.99.1.orig/debian/README.source +++ libxi-1.6.99.1/debian/README.source @@ -0,0 +1,73 @@ +------------------------------------------------------ +Quick Guide To Patching This Package For The Impatient +------------------------------------------------------ + +1. Make sure you have quilt installed +2. Unpack the package as usual with "dpkg-source -x" +3. Run the "patch" target in debian/rules +4. Create a new patch with "quilt new" (see quilt(1)) +5. Edit all the files you want to include in the patch with "quilt edit" + (see quilt(1)). +6. Write the patch with "quilt refresh" (see quilt(1)) +7. Run the "clean" target in debian/rules + +Alternatively, instead of using quilt directly, you can drop the patch in to +debian/patches and add the name of the patch to debian/patches/series. + +------------------------------------ +Guide To The X Strike Force Packages +------------------------------------ + +The X Strike Force team maintains X packages in git repositories on +git.debian.org in the pkg-xorg subdirectory. Most upstream packages +are actually maintained in git repositories as well, so they often +just need to be pulled into git.debian.org in a "upstream-*" branch. +Otherwise, the upstream sources are manually installed in the Debian +git repository. + +The .orig.tar.gz upstream source file could be generated this +"upstream-*" branch in the Debian git repository but it is actually +copied from upstream tarballs directly. + +Due to X.org being highly modular, packaging all X.org applications +as their own independent packages would have created too many Debian +packages. For this reason, some X.org applications have been grouped +into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils, +x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils. +Most packages, including the X.org server itself and all libraries +and drivers are, however maintained independently. + +The Debian packaging is added by creating the "debian-*" git branch +which contains the aforementioned "upstream-*" branch plus the debian/ +repository files. +When a patch has to be applied to the Debian package, two solutions +are involved: +* If the patch is available in one of the upstream branches, it + may be git'cherry-picked into the Debian repository. In this + case, it appears directly in the .diff.gz. +* Otherwise, the patch is added to debian/patches/ which is managed + with quilt as documented in /usr/share/doc/quilt/README.source. + +quilt is actually invoked by the Debian X packaging through a larger +set of scripts called XSFBS. XSFBS brings some other X specific +features such as managing dependencies and conflicts due to the video +and input driver ABIs. +XSFBS itself is maintained in a separate repository at + git://git.debian.org/pkg-xorg/xsfbs.git +and it is pulled inside the other Debian X repositories when needed. + +The XSFBS patching system requires a build dependency on quilt. Also +a dependency on $(STAMP_DIR)/patch has to be added to debian/rules +so that the XSFBS patching occurs before the actual build. So the +very first target of the build (likely the one running autoreconf) +should depend on $(STAMP_DIR)/patch. It should also not depend on +anything so that parallel builds are correctly supported (nothing +should probably run while patching is being done). And finally, the +clean target should depend on the xsfclean target so that patches +are unapplied on clean. + +When the upstream sources contain some DFSG-nonfree files, they are +listed in text files in debian/prune/ in the "debian-*" branch of +the Debian repository. XSFBS' scripts then take care of removing +these listed files during the build so as to generate a modified +DFSG-free .orig.tar.gz tarball. --- libxi-1.6.99.1.orig/debian/libxi6.symbols +++ libxi-1.6.99.1/debian/libxi6.symbols @@ -0,0 +1,87 @@ +libXi.so.6 libxi6 #MINVER# + XAllowDeviceEvents@Base 0 + XIAllowTouchEvents@Base 2:1.5.99.2 + XChangeDeviceControl@Base 0 + XChangeDeviceDontPropagateList@Base 0 + XChangeDeviceKeyMapping@Base 0 + XChangeDeviceProperty@Base 2:1.2.0 + XChangeFeedbackControl@Base 0 + XChangeKeyboardDevice@Base 0 + XChangePointerDevice@Base 0 + XCloseDevice@Base 0 + XDeleteDeviceProperty@Base 2:1.2.0 + XDeviceBell@Base 0 + XFreeDeviceControl@Base 0 + XFreeDeviceList@Base 0 + XFreeDeviceMotionEvents@Base 0 + XFreeDeviceState@Base 0 + XFreeFeedbackList@Base 0 + XGetDeviceButtonMapping@Base 0 + XGetDeviceControl@Base 0 + XGetDeviceDontPropagateList@Base 0 + XGetDeviceFocus@Base 0 + XGetDeviceKeyMapping@Base 0 + XGetDeviceModifierMapping@Base 0 + XGetDeviceMotionEvents@Base 0 + XGetDeviceProperty@Base 2:1.2.0 + XGetExtensionVersion@Base 0 + XGetFeedbackControl@Base 0 + XGetSelectedExtensionEvents@Base 0 + XGrabDevice@Base 0 + XIGrabTouchBegin@Base 2:1.4.1-1ubuntu1 + XIAllowEvents@Base 2:1.2.99.4 + XIAllowTouchEvents@Base 2:1.5.99.2 +# XIBarrierReleasePointer@Base 2:1.6.99.1 +# XIBarrierReleasePointers@Base 2:1.6.99.1 + XIChangeHierarchy@Base 2:1.2.99.4 + XIChangeProperty@Base 2:1.2.99.4 + XIDefineCursor@Base 2:1.2.99.4 + XIDeleteProperty@Base 2:1.2.99.4 + XIFreeDeviceInfo@Base 2:1.2.99.4 + XIGetClientPointer@Base 2:1.2.99.4 + XIGetFocus@Base 2:1.2.99.4 + XIGetProperty@Base 2:1.2.99.4 + XIGetSelectedEvents@Base 2:1.2.99.4 + XIGrabButton@Base 2:1.2.99.4 + XIGrabDevice@Base 2:1.2.99.4 + XIGrabEnter@Base 2:1.2.99.4 + XIGrabFocusIn@Base 2:1.2.99.4 + XIGrabKeycode@Base 2:1.2.99.4 + XIGrabTouchBegin@Base 2:1.5.99.2 + XIListProperties@Base 2:1.2.99.4 + XIQueryDevice@Base 2:1.2.99.4 + XIQueryPointer@Base 2:1.2.99.4 + XIQueryVersion@Base 2:1.2.99.4 + XISelectEvents@Base 2:1.2.99.4 + XISetClientPointer@Base 2:1.2.99.4 + XISetFocus@Base 2:1.2.99.4 + XIUndefineCursor@Base 2:1.2.99.4 + XIUngrabButton@Base 2:1.2.99.4 + XIUngrabDevice@Base 2:1.2.99.4 + XIUngrabEnter@Base 2:1.2.99.4 + XIUngrabFocusIn@Base 2:1.2.99.4 + XIUngrabKeycode@Base 2:1.2.99.4 + XIUngrabTouchBegin@Base 2:1.5.99.2 + XIWarpPointer@Base 2:1.2.99.4 + XGrabDeviceButton@Base 0 + XGrabDeviceKey@Base 0 + XListDeviceProperties@Base 2:1.2.0 + XListInputDevices@Base 0 + XOpenDevice@Base 0 + XQueryDeviceState@Base 0 + XSelectExtensionEvent@Base 0 + XSendExtensionEvent@Base 0 + XSetDeviceButtonMapping@Base 0 + XSetDeviceFocus@Base 0 + XSetDeviceMode@Base 0 + XSetDeviceModifierMapping@Base 0 + XSetDeviceValuators@Base 0 + XUngrabDevice@Base 0 + XUngrabDeviceButton@Base 0 + XUngrabDeviceKey@Base 0 + _XiGetDevicePresenceNotifyEvent@Base 2:1.1.2 + _xibadclass@Base 0 + _xibaddevice@Base 0 + _xibadevent@Base 0 + _xibadmode@Base 0 + _xidevicebusy@Base 0 --- libxi-1.6.99.1.orig/debian/libxi-dev.install +++ libxi-1.6.99.1/debian/libxi-dev.install @@ -0,0 +1,6 @@ +usr/lib/*/libXi.a +usr/lib/*/libXi.so +usr/lib/*/pkgconfig/xi.pc +usr/include/X11/extensions/ +usr/share/doc/libXi/*.html usr/share/doc/libxi-dev +usr/share/doc/libXi/*.txt usr/share/doc/libxi-dev --- libxi-1.6.99.1.orig/debian/control +++ libxi-1.6.99.1/debian/control @@ -0,0 +1,109 @@ +Source: libxi +Section: x11 +Priority: optional +Maintainer: Ubuntu X-SWAT +XSBC-Original-Maintainer: Debian X Strike Force +Uploaders: Drew Parsons , Cyril Brulebois +Build-Depends: + debhelper (>= 8.1.3), + x11proto-core-dev (>= 7.0.13), + x11proto-xext-dev (>= 7.0.3), + x11proto-input-dev (>= 2.2.99.1), + libx11-dev (>= 2:1.4.99.1), + libxext-dev (>= 2:1.1.1-3), + xmlto, + asciidoc (>= 8.4.5), + pkg-config, + quilt, + xutils-dev (>= 1:7.6+2), + automake, + libtool, +# specs + xmlto, + xorg-sgml-doctools (>= 1:1.8), + xsltproc, + w3m, +Standards-Version: 3.9.4 +Vcs-Git: git://git.debian.org/git/pkg-xorg/lib/libxi +Vcs-Browser: http://git.debian.org/?p=pkg-xorg/lib/libxi.git + +Package: libxi6 +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Pre-Depends: multiarch-support +Multi-Arch: same +Description: X11 Input extension library + libXi provides an X Window System client interface to the XINPUT + extension to the X protocol. + . + The Input extension allows setup and configuration of multiple input devices, + and will soon allow hotplugging of input devices; to be added and removed on + the fly. + . + More information about X.Org can be found at: + + . + This module can be found at + git://anongit.freedesktop.org/git/xorg/lib/libXi + +Package: libxi6-udeb +XC-Package-Type: udeb +Section: debian-installer +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: X11 Input extension library + This is a udeb, or a microdeb, for the debian-installer. + +Package: libxi6-dbg +Section: debug +Architecture: any +Priority: extra +Depends: ${shlibs:Depends}, ${misc:Depends}, libxi6 (= ${binary:Version}) +Multi-Arch: same +Description: X11 Input extension library (debug package) + libXi provides an X Window System client interface to the XINPUT + extension to the X protocol. + . + The Input extension allows setup and configuration of multiple input devices, + and will soon allow hotplugging of input devices; to be added and removed on + the fly. + . + This package contains the debug versions of the library found in libxi6. + Non-developers likely have little use for this package. + . + More information about X.Org can be found at: + + . + This module can be found at + git://anongit.freedesktop.org/git/xorg/lib/libXi + +Package: libxi-dev +Section: libdevel +Architecture: any +Depends: + ${shlibs:Depends}, + ${misc:Depends}, + libxi6 (= ${binary:Version}), + libx11-dev, + libxext-dev, + x11proto-input-dev (>= 2.1.99.6), + xorg-sgml-doctools (>= 1:1.5), +Replaces: + x11proto-input-dev (<< 1.9.99) +Description: X11 Input extension library (development headers) + libXi provides an X Window System client interface to the XINPUT + extension to the X protocol. + . + The Input extension allows setup and configuration of multiple input devices, + and will soon allow hotplugging of input devices; to be added and removed on + the fly. + . + This package contains the development headers for the library found in + libxi6. Non-developers likely have little use for this package. + . + More information about X.Org can be found at: + + . + This module can be found at + git://anongit.freedesktop.org/git/xorg/lib/libXi --- libxi-1.6.99.1.orig/debian/xsfbs/xsfbs.sh +++ libxi-1.6.99.1/debian/xsfbs/xsfbs.sh @@ -0,0 +1,622 @@ +# This is the X Strike Force shell library for X Window System package +# maintainer scripts. It serves to define shell functions commonly used by +# such packages, and performs some error checking necessary for proper operation +# of those functions. By itself, it does not "do" much; the maintainer scripts +# invoke the functions defined here to accomplish package installation and +# removal tasks. + +# If you are reading this within a Debian package maintainer script (e.g., +# /var/lib/dpkg/info/PACKAGE.{config,preinst,postinst,prerm,postrm}), you can +# skip past this library by scanning forward in this file to the string +# "GOBSTOPPER". + +SOURCE_VERSION=@SOURCE_VERSION@ +OFFICIAL_BUILD=@OFFICIAL_BUILD@ + +# Use special abnormal exit codes so that problems with this library are more +# easily tracked down. +SHELL_LIB_INTERNAL_ERROR=86 +SHELL_LIB_THROWN_ERROR=74 +SHELL_LIB_USAGE_ERROR=99 + +# old -> new variable names +if [ -z "$DEBUG_XORG_PACKAGE" ] && [ -n "$DEBUG_XFREE86_PACKAGE" ]; then + DEBUG_XORG_PACKAGE="$DEBUG_XFREE86_PACKAGE" +fi +if [ -z "$DEBUG_XORG_DEBCONF" ] && [ -n "$DEBUG_XFREE86_DEBCONF" ]; then + DEBUG_XORG_DEBCONF="$DEBUG_XFREE86_DEBCONF" +fi + +# initial sanity checks +if [ -z "$THIS_PACKAGE" ]; then + cat >&2 < on the World Wide Web for +instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the +"doc-debian" package, or install the "reportbug" package and use the command of +the same name to file a report against version $SOURCE_VERSION of this package. +EOF + exit $SHELL_LIB_USAGE_ERROR +fi + +if [ -z "$THIS_SCRIPT" ]; then + cat >&2 < on the World Wide Web for +instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the +"doc-debian" package, or install the "reportbug" package and use the command of +the same name to file a report against version $SOURCE_VERSION of the +"$THIS_PACKAGE" package. +EOF + exit $SHELL_LIB_USAGE_ERROR +fi + +if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ]; then + RECONFIGURE="true" +else + RECONFIGURE= +fi + +if ([ "$1" = "install" ] || [ "$1" = "configure" ]) && [ -z "$2" ]; then + FIRSTINST="yes" +fi + +if [ -z "$RECONFIGURE" ] && [ -z "$FIRSTINST" ]; then + UPGRADE="yes" +fi + +trap "message;\ + message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\ + message;\ + exit 1" HUP INT QUIT TERM + +reject_nondigits () { + # syntax: reject_nondigits [ operand ... ] + # + # scan operands (typically shell variables whose values cannot be trusted) for + # characters other than decimal digits and barf if any are found + while [ -n "$1" ]; do + # does the operand contain anything but digits? + if ! expr "$1" : "[[:digit:]]\+$" > /dev/null 2>&1; then + # can't use die(), because it wraps message() which wraps this function + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_nondigits() encountered" \ + "possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + shift + done +} + +reject_unlikely_path_chars () { + # syntax: reject_unlikely_path_chars [ operand ... ] + # + # scan operands (typically shell variables whose values cannot be trusted) for + # characters unlikely to be seen in a path and which the shell might + # interpret and barf if any are found + while [ -n "$1" ]; do + # does the operand contain any funny characters? + if expr "$1" : '.*[!$&()*;<>?|].*' > /dev/null 2>&1; then + # can't use die(), because I want to avoid forward references + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_unlikely_path_chars()" \ + "encountered possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + shift + done +} + +# Query the terminal to establish a default number of columns to use for +# displaying messages to the user. This is used only as a fallback in the +# event the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while +# the script is running, and this cannot, only being calculated once.) +DEFCOLUMNS=$(stty size 2> /dev/null | awk '{print $2}') || true +if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" > /dev/null 2>&1; then + DEFCOLUMNS=80 +fi + +message () { + # pretty-print messages of arbitrary length + reject_nondigits "$COLUMNS" + echo "$*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS} >&2 +} + +observe () { + # syntax: observe message ... + # + # issue observational message suitable for logging someday when support for + # it exists in dpkg + if [ -n "$DEBUG_XORG_PACKAGE" ]; then + message "$THIS_PACKAGE $THIS_SCRIPT note: $*" + fi +} + +warn () { + # syntax: warn message ... + # + # issue warning message suitable for logging someday when support for + # it exists in dpkg; also send to standard error + message "$THIS_PACKAGE $THIS_SCRIPT warning: $*" +} + +die () { + # syntax: die message ... + # + # exit script with error message + message "$THIS_PACKAGE $THIS_SCRIPT error: $*" + exit $SHELL_LIB_THROWN_ERROR +} + +internal_error () { + # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message + message "internal error: $*" + if [ -n "$OFFICIAL_BUILD" ]; then + message "Please report a bug in the $THIS_SCRIPT script of the" \ + "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \ + "Tracking System. Include all messages above that mention the" \ + "$THIS_PACKAGE package. Visit " \ + " on the World Wide Web for" \ + "instructions, read the file" \ + "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \ + "package, or install the reportbug package and use the command of" \ + "the same name to file a report." + fi + exit $SHELL_LIB_INTERNAL_ERROR +} + +usage_error () { + message "usage error: $*" + message "Please report a bug in the $THIS_SCRIPT script of the" \ + "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \ + "Tracking System. Include all messages above that mention the" \ + "$THIS_PACKAGE package. Visit " \ + " on the World Wide Web for" \ + "instructions, read the file" \ + "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \ + "package, or install the reportbug package and use the command of" \ + "the same name to file a report." + exit $SHELL_LIB_USAGE_ERROR +} + +font_update () { + # run $UPDATECMDS in $FONTDIRS + + local dir cmd shortcmd x_font_dir_prefix + + x_font_dir_prefix="/usr/share/fonts/X11" + + if [ -z "$UPDATECMDS" ]; then + usage_error "font_update() called but \$UPDATECMDS not set" + fi + if [ -z "$FONTDIRS" ]; then + usage_error "font_update() called but \$FONTDIRS not set" + fi + + reject_unlikely_path_chars "$UPDATECMDS" + reject_unlikely_path_chars "$FONTDIRS" + + for dir in $FONTDIRS; do + if [ -d "$x_font_dir_prefix/$dir" ]; then + for cmd in $UPDATECMDS; do + if which "$cmd" > /dev/null 2>&1; then + shortcmd=${cmd##*/} + observe "running $shortcmd in $dir font directory" + cmd_opts= + if [ "$shortcmd" = "update-fonts-alias" ]; then + cmd_opts=--x11r7-layout + fi + if [ "$shortcmd" = "update-fonts-dir" ]; then + cmd_opts=--x11r7-layout + fi + if [ "$shortcmd" = "update-fonts-scale" ]; then + cmd_opts=--x11r7-layout + fi + $cmd $cmd_opts $dir || warn "$cmd $cmd_opts $dir" \ + "failed; font directory data may not" \ + "be up to date" + else + warn "$cmd not found; not updating corresponding $dir font" \ + "directory data" + fi + done + else + warn "$dir is not a directory; not updating font directory data" + fi + done +} + +remove_conffile_prepare () { + # syntax: remove_conffile_prepare filename official_md5sum ... + # + # Check a conffile "filename" against a list of canonical MD5 checksums. + # If the file's current MD5 checksum matches one of the "official_md5sum" + # operands provided, then prepare the conffile for removal from the system. + # We defer actual deletion until the package is configured so that we can + # roll this operation back if package installation fails. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install" and verify $2 to ensure the package is being upgraded from a + # version (or installed over a version removed-but-not-purged) prior to the + # one in which the conffile was obsoleted. + + local conffile current_checksum + + # validate arguments + if [ $# -lt 2 ]; then + usage_error "remove_conffile_prepare() called with wrong number of" \ + "arguments; expected at least 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + shift + + # does the conffile even exist? + if [ -e "$conffile" ]; then + # calculate its checksum + current_checksum=$(md5sum < "$conffile" | sed 's/[[:space:]].*//') + # compare it to each supplied checksum + while [ -n "$1" ]; do + if [ "$current_checksum" = "$1" ]; then + # we found a match; move the confffile and stop looking + observe "preparing obsolete conffile $conffile for removal" + mv "$conffile" "$conffile.$THIS_PACKAGE-tmp" + break + fi + shift + done + fi +} + +remove_conffile_lookup () { + # syntax: remove_conffile_lookup package filename + # + # Lookup the md5sum of a conffile in dpkg's database, and prepare for removal + # if it matches the actual file's md5sum. + # + # Call this function when you would call remove_conffile_prepare but only + # want to check against dpkg's status database instead of known checksums. + + local package conffile old_md5sum + + # validate arguments + if [ $# -ne 2 ]; then + usage_error "remove_conffile_lookup() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + package="$1" + conffile="$2" + + if ! [ -e "$conffile" ]; then + return + fi + old_md5sum="$(dpkg-query -W -f='${Conffiles}' "$package" | \ + awk '{ if (match($0, "^ '"$conffile"' ")) print $2}')" + if [ -n "$old_md5sum" ]; then + remove_conffile_prepare "$conffile" "$old_md5sum" + fi +} + +remove_conffile_commit () { + # syntax: remove_conffile_commit filename + # + # Complete the removal of a conffile "filename" that has become obsolete. + # + # Call this function from a postinst script after having used + # remove_conffile_prepare() in the preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "remove_conffile_commit() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + # if the temporary file created by remove_conffile_prepare() exists, remove it + if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then + observe "committing removal of obsolete conffile $conffile" + rm "$conffile.$THIS_PACKAGE-tmp" + fi +} + +remove_conffile_rollback () { + # syntax: remove_conffile_rollback filename + # + # Roll back the removal of a conffile "filename". + # + # Call this function from a postrm script in the event $1 is "abort-upgrade" + # or "abort-install" is after having used remove_conffile_prepare() in the + # preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "remove_conffile_rollback() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + # if the temporary file created by remove_conffile_prepare() exists, move it + # back + if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then + observe "rolling back removal of obsolete conffile $conffile" + mv "$conffile.$THIS_PACKAGE-tmp" "$conffile" + fi +} + +replace_conffile_with_symlink_prepare () { + # syntax: replace_conffile_with_symlink_prepare oldfilename newfilename \ + # official_md5sum ... + # + # Check a conffile "oldfilename" against a list of canonical MD5 checksums. + # If the file's current MD5 checksum matches one of the "official_md5sum" + # operands provided, then prepare the conffile for removal from the system. + # We defer actual deletion until the package is configured so that we can + # roll this operation back if package installation fails. Otherwise copy it + # to newfilename and let dpkg handle it through conffiles mechanism. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install" and verify $2 to ensure the package is being upgraded from a + # version (or installed over a version removed-but-not-purged) prior to the + # one in which the conffile was obsoleted. + + local conffile current_checksum + + # validate arguments + if [ $# -lt 3 ]; then + usage_error "replace_conffile_with_symlink_prepare() called with wrong" \ + " number of arguments; expected at least 3, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + oldconffile="$1" + shift + newconffile="$1" + shift + + remove_conffile_prepare "$_oldconffile" "$@" + # If $oldconffile still exists, then md5sums didn't match. + # Copy it to new one. + if [ -f "$oldconffile" ]; then + cp "$oldconffile" "$newconffile" + fi + +} + +replace_conffile_with_symlink_commit () { + # syntax: replace_conffile_with_symlink_commit oldfilename + # + # Complete the removal of a conffile "oldfilename" that has been + # replaced by a symlink. + # + # Call this function from a postinst script after having used + # replace_conffile_with_symlink_prepare() in the preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "replace_conffile_with_symlink_commit() called with wrong" \ + "number of arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + remove_conffile_commit "$conffile" +} + +replace_conffile_with_symlink_rollback () { + # syntax: replace_conffile_with_symlink_rollback oldfilename newfilename + # + # Roll back the replacing of a conffile "oldfilename" with symlink to + # "newfilename". + # + # Call this function from a postrm script in the event $1 is "abort-upgrade" + # or "abort-install" and verify $2 to ensure the package failed to upgrade + # from a version (or install over a version removed-but-not-purged) prior + # to the one in which the conffile was obsoleted. + # You should have used replace_conffile_with_symlink_prepare() in the + # preinst. + + local conffile + + # validate arguments + if [ $# -ne 2 ]; then + usage_error "replace_conffile_with_symlink_rollback() called with wrong" \ + "number of arguments; expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + oldconffile="$1" + newconffile="$2" + + remove_conffile_rollback "$_oldconffile" + if [ -f "$newconffile" ]; then + rm "$newconffile" + fi +} + +run () { + # syntax: run command [ argument ... ] + # + # Run specified command with optional arguments and report its exit status. + # Useful for commands whose exit status may be nonzero, but still acceptable, + # or commands whose failure is not fatal to us. + # + # NOTE: Do *not* use this function with db_get or db_metaget commands; in + # those cases the return value of the debconf command *must* be checked + # before the string returned by debconf is used for anything. + + local retval + + # validate arguments + if [ $# -lt 1 ]; then + usage_error "run() called with wrong number of arguments; expected at" \ + "least 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + "$@" || retval=$? + + if [ ${retval:-0} -ne 0 ]; then + observe "command \"$*\" exited with status $retval" + fi +} + +make_symlink_sane () { + # syntax: make_symlink_sane symlink target + # + # Ensure that the symbolic link symlink exists, and points to target. + # + # If symlink does not exist, create it and point it at target. + # + # If symlink exists but is not a symbolic link, back it up. + # + # If symlink exists, is a symbolic link, but points to the wrong location, fix + # it. + # + # If symlink exists, is a symbolic link, and already points to target, do + # nothing. + # + # This function wouldn't be needed if ln had an -I, --idempotent option. + + # Validate arguments. + if [ $# -ne 2 ]; then + usage_error "make_symlink_sane() called with wrong number of arguments;" \ + "expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + # We could just use the positional parameters as-is, but that makes things + # harder to follow. + local symlink target + + symlink="$1" + target="$2" + + if [ -L "$symlink" ] && [ "$(readlink "$symlink")" = "$target" ]; then + observe "link from $symlink to $target already exists" + else + observe "creating symbolic link from $symlink to $target" + mkdir -p "${target%/*}" "${symlink%/*}" + ln -s -b -S ".dpkg-old" "$target" "$symlink" + fi +} + +migrate_dir_to_symlink () { + # syntax: migrate_dir_to_symlink old_location new_location + # + # Per Debian Policy section 6.5.4, "A directory will never be replaced by a + # symbolic link to a directory or vice versa; instead, the existing state + # (symlink or not) will be left alone and dpkg will follow the symlink if + # there is one." + # + # We have to do it ourselves. + # + # This function moves the contents of old_location, a directory, into + # new_location, a directory, then makes old_location a symbolic link to + # new_location. + # + # old_location need not exist, but if it does, it must be a directory (or a + # symlink to a directory). If it is not, it is backed up. If new_location + # exists already and is not a directory, it is backed up. + # + # This function should be called from a package's preinst so that other + # packages unpacked after this one --- but before this package's postinst runs + # --- are unpacked into new_location even if their payloads contain + # old_location filespecs. + + # Validate arguments. + if [ $# -ne 2 ]; then + usage_error "migrate_dir_to_symlink() called with wrong number of" + "arguments; expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + # We could just use the positional parameters as-is, but that makes things + # harder to follow. + local new old + + old="$1" + new="$2" + + # Is old location a symlink? + if [ -L "$old" ]; then + # Does it already point to new location? + if [ "$(readlink "$old")" = "$new" ]; then + # Nothing to do; migration has already been done. + observe "migration of $old to $new already done" + return 0 + else + # Back it up. + warn "backing up symbolic link $old as $old.dpkg-old" + mv -b "$old" "$old.dpkg-old" + fi + fi + + # Does old location exist, but is not a directory? + if [ -e "$old" ] && ! [ -d "$old" ]; then + # Back it up. + warn "backing up non-directory $old as $old.dpkg-old" + mv -b "$old" "$old.dpkg-old" + fi + + observe "migrating $old to $new" + + # Is new location a symlink? + if [ -L "$new" ]; then + # Does it point the wrong way, i.e., back to where we're migrating from? + if [ "$(readlink "$new")" = "$old" ]; then + # Get rid of it. + observe "removing symbolic link $new which points to $old" + rm "$new" + else + # Back it up. + warn "backing up symbolic link $new as $new.dpkg-old" + mv -b "$new" "$new.dpkg-old" + fi + fi + + # Does new location exist, but is not a directory? + if [ -e "$new" ] && ! [ -d "$new" ]; then + warn "backing up non-directory $new as $new.dpkg-old" + mv -b "$new" "$new.dpkg-old" + fi + + # Create new directory if it does not yet exist. + if ! [ -e "$new" ]; then + observe "creating $new" + mkdir -p "$new" + fi + + # Copy files in old location to new location. Back up any filenames that + # already exist in the new location with the extension ".dpkg-old". + observe "copying files from $old to $new" + if ! (cd "$old" && cp -a -b -S ".dpkg-old" . "$new"); then + die "error(s) encountered while copying files from $old to $new" + fi + + # Remove files at old location. + observe "removing $old" + rm -r "$old" + + # Create symlink from old location to new location. + make_symlink_sane "$old" "$new" +} + +# vim:set ai et sw=2 ts=2 tw=80: + +# GOBSTOPPER: The X Strike Force shell library ends here. --- libxi-1.6.99.1.orig/debian/xsfbs/xsfbs.mk +++ libxi-1.6.99.1/debian/xsfbs/xsfbs.mk @@ -0,0 +1,276 @@ +#!/usr/bin/make -f + +# Debian X Strike Force Build System (XSFBS): Make portion + +# Copyright 1996 Stephen Early +# Copyright 1997 Mark Eichin +# Copyright 1998-2005, 2007 Branden Robinson +# Copyright 2005 David Nusinow +# +# Licensed under the GNU General Public License, version 2. See the file +# /usr/share/common-licenses/GPL or . + +# Originally by Stephen Early +# Modified by Mark W. Eichin +# Modified by Adam Heath +# Modified by Branden Robinson +# Modified by Fabio Massimo Di Nitto +# Modified by David Nusinow +# Acknowledgements to Manoj Srivastava. + +# Pass $(DH_OPTIONS) into the environment for debhelper's benefit. +export DH_OPTIONS + +# force quilt to not use ~/.quiltrc and to use debian/patches +QUILT = QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null + +# Set up parameters for the upstream build environment. + +# Determine (source) package name from Debian changelog. +SOURCE_NAME:=$(shell dpkg-parsechangelog -ldebian/changelog \ + | grep '^Source:' | awk '{print $$2}') + +# Determine package version from Debian changelog. +SOURCE_VERSION:=$(shell dpkg-parsechangelog -ldebian/changelog \ + | grep '^Version:' | awk '{print $$2}') + +# Determine upstream version number. +UPSTREAM_VERSION:=$(shell echo $(SOURCE_VERSION) | sed 's/-.*//') + +# Determine the source version without the epoch for make-orig-tar-gz +NO_EPOCH_VER:=$(shell echo $(UPSTREAM_VERSION) | sed 's/^.://') + +# Figure out who's building this package. +BUILDER:=$(shell echo $${DEBEMAIL:-$${EMAIL:-$$(echo $$LOGNAME@$$(cat /etc/mailname 2>/dev/null))}}) + +# Find out if this is an official build; an official build has nothing but +# digits, dots, and/or the codename of a release in the Debian part of the +# version number. Anything else indicates an unofficial build. +OFFICIAL_BUILD:=$(shell VERSION=$(SOURCE_VERSION); if ! expr "$$(echo $${VERSION\#\#*-} | sed 's/\(woody\|sarge\|etch\|lenny\)//g')" : ".*[^0-9.].*" >/dev/null 2>&1; then echo yes; fi) + +# Set up parameters for the Debian build environment. + +# Determine our architecture. +BUILD_ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH) +# Work around some old-time dpkg braindamage. +BUILD_ARCH:=$(subst i486,i386,$(BUILD_ARCH)) +# The DEB_HOST_ARCH variable may be set per the Debian cross-compilation policy. +ifdef DEB_HOST_ARCH + ARCH:=$(DEB_HOST_ARCH) +else + # dpkg-cross sets the ARCH environment variable; if set, use it. + ifdef ARCH + ARCH:=$(ARCH) + else + ARCH:=$(BUILD_ARCH) + endif +endif + +# $(STAMP_DIR) houses stamp files for complex targets. +STAMP_DIR:=stampdir + +# $(DEBTREEDIR) is where all install rules are told (via $(DESTDIR)) to place +# their files. +DEBTREEDIR:=$(CURDIR)/debian/tmp + +# All "important" targets have four lines: +# 1) A target name that is invoked by a package-building tool or the user. +# This consists of a dependency on a "$(STAMP_DIR)/"-prefixed counterpart. +# 2) A line delcaring 1) as a phony target (".PHONY:"). +# 3) A "$(STAMP_DIR)/"-prefixed target which does the actual work, and may +# depend on other targets. +# 4) A line declaring 3) as a member of the $(stampdir_targets) variable; the +# "$(STAMP_DIR)/" prefix is omitted. +# +# This indirection is needed so that the "stamp" files that signify when a rule +# is done can be located in a separate "stampdir". Recall that make has no way +# to know when a goal has been met for a phony target (like "build" or +# "install"). +# +# At the end of each "$(STAMP_DIR)/" target, be sure to run the command ">$@" +# so that the target will not be run again. Removing the file will make Make +# run the target over. + +# All phony targets should be declared as dependencies of .PHONY, even if they +# do not have "($STAMP_DIR)/"-prefixed counterparts. + +# Define a harmless default rule to keep things from going nuts by accident. +.PHONY: default +default: + +# Set up the $(STAMP_DIR) directory. +.PHONY: stampdir +stampdir_targets+=stampdir +stampdir: $(STAMP_DIR)/stampdir +$(STAMP_DIR)/stampdir: + mkdir $(STAMP_DIR) + >$@ + +# Set up the package build directory as quilt expects to find it. +.PHONY: prepare +stampdir_targets+=prepare +prepare: $(STAMP_DIR)/prepare +$(STAMP_DIR)/prepare: $(STAMP_DIR)/log $(STAMP_DIR)/genscripts + >$@ + +.PHONY: log +stampdir_targets+=log +log: $(STAMP_DIR)/log +$(STAMP_DIR)/log: $(STAMP_DIR)/stampdir + mkdir -p $(STAMP_DIR)/log + +# Apply all patches to the upstream source. +.PHONY: patch +stampdir_targets+=patch +patch: $(STAMP_DIR)/patch +$(STAMP_DIR)/patch: $(STAMP_DIR)/prepare + if ! [ `which quilt` ]; then \ + echo "Couldn't find quilt. Please install it or add it to the build-depends for this package."; \ + exit 1; \ + fi; \ + if $(QUILT) next >/dev/null 2>&1; then \ + echo -n "Applying patches..."; \ + if $(QUILT) push -a -v >$(STAMP_DIR)/log/patch 2>&1; then \ + cat $(STAMP_DIR)/log/patch; \ + echo "successful."; \ + else \ + cat $(STAMP_DIR)/log/patch; \ + echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \ + exit 1; \ + fi; \ + else \ + echo "No patches to apply"; \ + fi; \ + >$@ + +# Revert all patches to the upstream source. +.PHONY: unpatch +unpatch: $(STAMP_DIR)/log + rm -f $(STAMP_DIR)/patch + @echo -n "Unapplying patches..."; \ + if $(QUILT) applied >/dev/null 2>/dev/null; then \ + if $(QUILT) pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \ + cat $(STAMP_DIR)/log/unpatch; \ + echo "successful."; \ + else \ + cat $(STAMP_DIR)/log/unpatch; \ + echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \ + exit 1; \ + fi; \ + else \ + echo "nothing to do."; \ + fi + +# Clean the generated maintainer scripts. +.PHONY: cleanscripts +cleanscripts: + rm -f $(STAMP_DIR)/genscripts + rm -f debian/*.config \ + debian/*.postinst \ + debian/*.postrm \ + debian/*.preinst \ + debian/*.prerm + +# Clean the package build tree. +.PHONY: xsfclean +xsfclean: cleanscripts unpatch + dh_testdir + rm -rf .pc + rm -rf $(STAMP_DIR) + dh_clean + +# Remove files from the upstream source tree that we don't need, or which have +# licensing problems. It must be run before creating the .orig.tar.gz. +# +# Note: This rule is for Debian package maintainers' convenience, and is not +# needed for conventional build scenarios. +.PHONY: prune-upstream-tree +prune-upstream-tree: + # Ensure we're in the correct directory. + dh_testdir + grep -rvh '^#' debian/prune/ | xargs --no-run-if-empty rm -rf + +# Verify that there are no offsets or fuzz in the patches we apply. +# +# Note: This rule is for Debian package maintainers' convenience, and is not +# needed for conventional build scenarios. +.PHONY: patch-audit +patch-audit: prepare unpatch + @echo -n "Auditing patches..."; \ + >$(STAMP_DIR)/log/patch; \ + FUZZY=; \ + while [ -n "$$($(QUILT) next)" ]; do \ + RESULT=$$($(QUILT) push -v | tee -a $(STAMP_DIR)/log/patch | grep ^Hunk | sed 's/^Hunk.*\(succeeded\|FAILED\).*/\1/');\ + case "$$RESULT" in \ + succeeded) \ + echo "fuzzy patch: $$($(QUILT) top)" \ + | tee -a $(STAMP_DIR)/log/$$($(QUILT) top); \ + FUZZY=yes; \ + ;; \ + FAILED) \ + echo "broken patch: $$($(QUILT) next)" \ + | tee -a $(STAMP_DIR)/log/$$($(QUILT) next); \ + exit 1; \ + ;; \ + esac; \ + done; \ + if [ -n "$$FUZZY" ]; then \ + echo "there were fuzzy patches; please fix."; \ + exit 1; \ + else \ + echo "done."; \ + fi + +# Generate the maintainer scripts. +.PHONY: genscripts +stampdir_targets+=genscripts +genscripts: $(STAMP_DIR)/genscripts +$(STAMP_DIR)/genscripts: $(STAMP_DIR)/stampdir + for FILE in debian/*.config.in \ + debian/*.postinst.in \ + debian/*.postrm.in \ + debian/*.preinst.in \ + debian/*.prerm.in; do \ + if [ -e "$$FILE" ]; then \ + MAINTSCRIPT=$$(echo $$FILE | sed 's/.in$$//'); \ + sed -n '1,/^#INCLUDE_SHELL_LIB#$$/p' <$$FILE \ + | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >$$MAINTSCRIPT.tmp; \ + cat debian/xsfbs/xsfbs.sh >>$$MAINTSCRIPT.tmp; \ + sed -n '/^#INCLUDE_SHELL_LIB#$$/,$$p' <$$FILE \ + | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >>$$MAINTSCRIPT.tmp; \ + sed -e 's/@SOURCE_VERSION@/$(SOURCE_VERSION)/' \ + -e 's/@OFFICIAL_BUILD@/$(OFFICIAL_BUILD)/' \ + <$$MAINTSCRIPT.tmp >$$MAINTSCRIPT; \ + rm $$MAINTSCRIPT.tmp; \ + fi; \ + done + # Validate syntax of generated shell scripts. + #sh debian/scripts/validate-posix-sh debian/*.config \ + # debian/*.postinst \ + # debian/*.postrm \ + # debian/*.preinst \ + # debian/*.prerm + >$@ + +SERVERMINVERS = $(shell cat /usr/share/xserver-xorg/serverminver 2>/dev/null) +VIDEOABI = $(shell cat /usr/share/xserver-xorg/videoabiver 2>/dev/null) +INPUTABI = $(shell cat /usr/share/xserver-xorg/inputabiver 2>/dev/null) +SERVER_DEPENDS = xserver-xorg-core (>= $(SERVERMINVERS)) +VIDDRIVER_PROVIDES = xserver-xorg-video-$(VIDEOABI) +INPDRIVER_PROVIDES = xserver-xorg-input-$(INPUTABI) +ifeq ($(PACKAGE),) +PACKAGE=$(shell awk '/^Package:/ { print $$2; exit }' < debian/control) +endif + +.PHONY: serverabi +serverabi: install +ifeq ($(SERVERMINVERS),) + @echo error: xserver-xorg-dev needs to be installed + @exit 1 +else + echo "xserver:Depends=$(SERVER_DEPENDS)" >> debian/$(PACKAGE).substvars + echo "xviddriver:Provides=$(VIDDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars + echo "xinpdriver:Provides=$(INPDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars +endif + +# vim:set noet ai sts=8 sw=8 tw=0: --- libxi-1.6.99.1.orig/debian/xsfbs/repack.sh +++ libxi-1.6.99.1/debian/xsfbs/repack.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +if ! [ -d debian/prune ]; then + exit 0 +fi + +if [ "x$1" != x--upstream-version ]; then + exit 1 +fi + +version="$2" +filename="$3" + +if [ -z "$version" ] || ! [ -f "$filename" ]; then + exit 1 +fi + +dir="$(pwd)" +tempdir="$(mktemp -d)" + +cd "$tempdir" +tar xf "$dir/$filename" +cat "$dir"/debian/prune/* | while read file; do rm -f */$file; done + +tar czf "$dir/$filename" * +cd "$dir" +rm -rf "$tempdir" +echo "Done pruning upstream tarball" + +exit 0 --- libxi-1.6.99.1.orig/debian/patches/CVE-2013-1984.patch +++ libxi-1.6.99.1/debian/patches/CVE-2013-1984.patch @@ -0,0 +1,679 @@ +Description: fix denial of service and possible code execution via + incorrect memory size calculations +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=59b8e1388a687f871831ac5a9e0ac11de75e2516 +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=b0b13c12a8079a5a0e7f43b2b8983699057b2cec +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=322ee3576789380222d4403366e4fd12fb24cb6a +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=6dd6dc51a2935c72774be81e5cc2ba2c30e9feff +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=bb922ed4253b35590f0369f32a917ff89ade0830 +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=242f92b490a695fbab244af5bad11b71f897c732 +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=528419b9ef437e7eeafb41bf45e8ff7d818bd845 +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=17071c1c608247800b2ca03a35b1fcc9c4cabe6c +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=ef82512288d8ca36ac0beeb289f158195b0a8cae + +Index: libxi-1.6.99.1/configure.ac +=================================================================== +--- libxi-1.6.99.1.orig/configure.ac 2013-05-29 10:05:36.432395915 -0400 ++++ libxi-1.6.99.1/configure.ac 2013-05-29 10:06:06.924395624 -0400 +@@ -30,6 +30,12 @@ + # Obtain compiler/linker options for dependencies + PKG_CHECK_MODULES(XI, [xproto >= 7.0.13] [x11 >= 1.4.99.1] [xextproto >= 7.0.3] [xext >= 1.0.99.1] [inputproto >= 2.1.99.6]) + ++# Check for _XEatDataWords function that may be patched into older Xlib releases ++SAVE_LIBS="$LIBS" ++LIBS="$XI_LIBS" ++AC_CHECK_FUNCS([_XEatDataWords]) ++LIBS="$SAVE_LIBS" ++ + # Check for xmlto and asciidoc for man page conversion + # (only needed by people building tarballs) + if test "$have_xmlto" = yes && test "$have_asciidoc" = yes; then +Index: libxi-1.6.99.1/src/XGMotion.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XGMotion.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XGMotion.c 2013-05-29 10:06:16.500395533 -0400 +@@ -59,6 +59,7 @@ + #include + #include + #include "XIint.h" ++#include + + XDeviceTimeCoord * + XGetDeviceMotionEvents( +@@ -74,7 +75,7 @@ + xGetDeviceMotionEventsReply rep; + XDeviceTimeCoord *tc; + int *data, *bufp, *readp, *savp; +- long size, size2; ++ unsigned long size; + int i, j; + XExtDisplayInfo *info = XInput_find_display(dpy); + +@@ -104,15 +105,26 @@ + SyncHandle(); + return (NULL); + } +- size = rep.length << 2; +- size2 = rep.nEvents * (sizeof(XDeviceTimeCoord) + (rep.axes * sizeof(int))); +- savp = readp = (int *)Xmalloc(size); +- bufp = (int *)Xmalloc(size2); ++ if (rep.length < (INT_MAX >> 2)) { ++ size = rep.length << 2; ++ savp = readp = Xmalloc(size); ++ } else { ++ size = 0; ++ savp = readp = NULL; ++ } ++ /* rep.axes is a CARD8, so assume max number of axes for bounds check */ ++ if (rep.nEvents < ++ (INT_MAX / (sizeof(XDeviceTimeCoord) + (UCHAR_MAX * sizeof(int))))) { ++ size_t bsize = rep.nEvents * ++ (sizeof(XDeviceTimeCoord) + (rep.axes * sizeof(int))); ++ bufp = Xmalloc(bsize); ++ } else ++ bufp = NULL; + if (!bufp || !savp) { + Xfree(bufp); + Xfree(savp); + *nEvents = 0; +- _XEatData(dpy, (unsigned long)size); ++ _XEatDataWords(dpy, rep.length); + UnlockDisplay(dpy); + SyncHandle(); + return (NULL); +Index: libxi-1.6.99.1/src/XGetDCtl.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XGetDCtl.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XGetDCtl.c 2013-05-29 10:06:09.864395596 -0400 +@@ -61,6 +61,7 @@ + #include + #include + #include "XIint.h" ++#include + + XDeviceControl * + XGetDeviceControl( +@@ -68,8 +69,6 @@ + XDevice *dev, + int control) + { +- int size = 0; +- int nbytes, i; + XDeviceControl *Device = NULL; + XDeviceControl *Sav = NULL; + xDeviceState *d = NULL; +@@ -92,10 +91,14 @@ + goto out; + + if (rep.length > 0) { +- nbytes = (long)rep.length << 2; +- d = (xDeviceState *) Xmalloc((unsigned)nbytes); ++ unsigned long nbytes; ++ size_t size = 0; ++ if (rep.length < (INT_MAX >> 2)) { ++ nbytes = (unsigned long) rep.length << 2; ++ d = Xmalloc(nbytes); ++ } + if (!d) { +- _XEatData(dpy, (unsigned long)nbytes); ++ _XEatDataWords(dpy, rep.length); + goto out; + } + sav = d; +@@ -111,33 +114,46 @@ + case DEVICE_RESOLUTION: + { + xDeviceResolutionState *r; ++ size_t val_size; + + r = (xDeviceResolutionState *) d; +- size += sizeof(XDeviceResolutionState) + +- (3 * sizeof(int) * r->num_valuators); ++ if (r->num_valuators >= (INT_MAX / (3 * sizeof(int)))) ++ goto out; ++ val_size = 3 * sizeof(int) * r->num_valuators; ++ if ((sizeof(xDeviceResolutionState) + val_size) > nbytes) ++ goto out; ++ size += sizeof(XDeviceResolutionState) + val_size; + break; + } + case DEVICE_ABS_CALIB: + { ++ if (sizeof(xDeviceAbsCalibState) > nbytes) ++ goto out; + size += sizeof(XDeviceAbsCalibState); + break; + } + case DEVICE_ABS_AREA: + { ++ if (sizeof(xDeviceAbsAreaState) > nbytes) ++ goto out; + size += sizeof(XDeviceAbsAreaState); + break; + } + case DEVICE_CORE: + { ++ if (sizeof(xDeviceCoreState) > nbytes) ++ goto out; + size += sizeof(XDeviceCoreState); + break; + } + default: ++ if (d->length > nbytes) ++ goto out; + size += d->length; + break; + } + +- Device = (XDeviceControl *) Xmalloc((unsigned)size); ++ Device = Xmalloc(size); + if (!Device) + goto out; + +@@ -150,6 +166,7 @@ + int *iptr, *iptr2; + xDeviceResolutionState *r; + XDeviceResolutionState *R; ++ unsigned int i; + + r = (xDeviceResolutionState *) d; + R = (XDeviceResolutionState *) Device; +Index: libxi-1.6.99.1/src/XGetDProp.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XGetDProp.c 2010-09-07 01:21:05.000000000 -0400 ++++ libxi-1.6.99.1/src/XGetDProp.c 2013-05-29 10:06:23.488395466 -0400 +@@ -38,6 +38,7 @@ + #include + #include + #include "XIint.h" ++#include + + int + XGetDeviceProperty(Display* dpy, XDevice* dev, +@@ -48,7 +49,8 @@ + { + xGetDevicePropertyReq *req; + xGetDevicePropertyReply rep; +- long nbytes, rbytes; ++ unsigned long nbytes, rbytes; ++ int ret = Success; + + XExtDisplayInfo *info = XInput_find_display(dpy); + +@@ -81,30 +83,43 @@ + * data, but this last byte is null terminated and convenient for + * returning string properties, so the client doesn't then have to + * recopy the string to make it null terminated. ++ * ++ * Maximum item limits are set to both prevent integer overflow when ++ * calculating the amount of memory to malloc, and to limit how much ++ * memory will be used if a server provides an insanely high count. + */ + switch (rep.format) { + case 8: +- nbytes = rep.nItems; +- rbytes = rep.nItems + 1; +- if (rbytes > 0 && +- (*prop = (unsigned char *) Xmalloc ((unsigned)rbytes))) +- _XReadPad (dpy, (char *) *prop, nbytes); ++ if (rep.nItems < INT_MAX) { ++ nbytes = rep.nItems; ++ rbytes = rep.nItems + 1; ++ if ((*prop = Xmalloc (rbytes))) ++ _XReadPad (dpy, (char *) *prop, nbytes); ++ else ++ ret = BadAlloc; ++ } + break; + + case 16: +- nbytes = rep.nItems << 1; +- rbytes = rep.nItems * sizeof (short) + 1; +- if (rbytes > 0 && +- (*prop = (unsigned char *) Xmalloc ((unsigned)rbytes))) +- _XRead16Pad (dpy, (short *) *prop, nbytes); ++ if (rep.nItems < (INT_MAX / sizeof (short))) { ++ nbytes = rep.nItems << 1; ++ rbytes = rep.nItems * sizeof (short) + 1; ++ if ((*prop = Xmalloc (rbytes))) ++ _XRead16Pad (dpy, (short *) *prop, nbytes); ++ else ++ ret = BadAlloc; ++ } + break; + + case 32: +- nbytes = rep.nItems << 2; +- rbytes = rep.nItems * sizeof (long) + 1; +- if (rbytes > 0 && +- (*prop = (unsigned char *) Xmalloc ((unsigned)rbytes))) +- _XRead32 (dpy, (long *) *prop, nbytes); ++ if (rep.nItems < (INT_MAX / sizeof (long))) { ++ nbytes = rep.nItems << 2; ++ rbytes = rep.nItems * sizeof (long) + 1; ++ if ((*prop = Xmalloc (rbytes))) ++ _XRead32 (dpy, (long *) *prop, nbytes); ++ else ++ ret = BadAlloc; ++ } + break; + + default: +@@ -112,17 +127,13 @@ + * This part of the code should never be reached. If it is, + * the server sent back a property with an invalid format. + */ +- nbytes = rep.length << 2; +- _XEatData(dpy, (unsigned long) nbytes); +- UnlockDisplay(dpy); +- SyncHandle(); +- return(BadImplementation); ++ ret = BadImplementation; + } + if (! *prop) { +- _XEatData(dpy, (unsigned long) nbytes); +- UnlockDisplay(dpy); +- SyncHandle(); +- return(BadAlloc); ++ _XEatDataWords(dpy, rep.length); ++ if (ret == Success) ++ ret = BadAlloc; ++ goto out; + } + (*prop)[rbytes - 1] = '\0'; + } +@@ -131,9 +142,10 @@ + *actual_format = rep.format; + *nitems = rep.nItems; + *bytes_after = rep.bytesAfter; ++ out: + UnlockDisplay (dpy); + SyncHandle (); + +- return Success; ++ return ret; + } + +Index: libxi-1.6.99.1/src/XGetFCtl.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XGetFCtl.c 2012-12-06 23:37:27.000000000 -0500 ++++ libxi-1.6.99.1/src/XGetFCtl.c 2013-05-29 10:06:12.184395574 -0400 +@@ -61,6 +61,7 @@ + #include + #include + #include "XIint.h" ++#include + + XFeedbackState * + XGetFeedbackControl( +@@ -68,8 +69,6 @@ + XDevice *dev, + int *num_feedbacks) + { +- int size = 0; +- int nbytes, i; + XFeedbackState *Feedback = NULL; + XFeedbackState *Sav = NULL; + xFeedbackState *f = NULL; +@@ -91,17 +90,28 @@ + goto out; + + if (rep.length > 0) { ++ unsigned long nbytes; ++ size_t size = 0; ++ int i; ++ + *num_feedbacks = rep.num_feedbacks; +- nbytes = (long)rep.length << 2; +- f = (xFeedbackState *) Xmalloc((unsigned)nbytes); ++ ++ if (rep.length < (INT_MAX >> 2)) { ++ nbytes = rep.length << 2; ++ f = Xmalloc(nbytes); ++ } + if (!f) { +- _XEatData(dpy, (unsigned long)nbytes); ++ _XEatDataWords(dpy, rep.length); + goto out; + } + sav = f; + _XRead(dpy, (char *)f, nbytes); + + for (i = 0; i < *num_feedbacks; i++) { ++ if (f->length > nbytes) ++ goto out; ++ nbytes -= f->length; ++ + switch (f->class) { + case KbdFeedbackClass: + size += sizeof(XKbdFeedbackState); +@@ -116,6 +126,8 @@ + { + xStringFeedbackState *strf = (xStringFeedbackState *) f; + ++ if (strf->num_syms_supported >= (INT_MAX / sizeof(KeySym))) ++ goto out; + size += sizeof(XStringFeedbackState) + + (strf->num_syms_supported * sizeof(KeySym)); + } +@@ -130,10 +142,12 @@ + size += f->length; + break; + } ++ if (size > INT_MAX) ++ goto out; + f = (xFeedbackState *) ((char *)f + f->length); + } + +- Feedback = (XFeedbackState *) Xmalloc((unsigned)size); ++ Feedback = Xmalloc(size); + if (!Feedback) + goto out; + +Index: libxi-1.6.99.1/src/XGetKMap.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XGetKMap.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XGetKMap.c 2013-05-29 10:06:06.928395624 -0400 +@@ -99,7 +99,7 @@ + if (mapping) + _XRead(dpy, (char *)mapping, nbytes); + else +- _XEatData(dpy, (unsigned long)nbytes); ++ _XEatDataWords(dpy, rep.length); + } + + UnlockDisplay(dpy); +Index: libxi-1.6.99.1/src/XGetMMap.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XGetMMap.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XGetMMap.c 2013-05-29 10:06:06.928395624 -0400 +@@ -92,7 +92,7 @@ + if (res->modifiermap) + _XReadPad(dpy, (char *)res->modifiermap, nbytes); + else +- _XEatData(dpy, (unsigned long)nbytes); ++ _XEatDataWords(dpy, rep.length); + res->max_keypermod = rep.numKeyPerModifier; + } + +Index: libxi-1.6.99.1/src/XGetProp.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XGetProp.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XGetProp.c 2013-05-29 10:06:14.204395555 -0400 +@@ -60,6 +60,7 @@ + #include + #include + #include "XIint.h" ++#include + + XEventClass * + XGetDeviceDontPropagateList( +@@ -68,7 +69,6 @@ + int *count) + { + XEventClass *list = NULL; +- int rlen; + xGetDeviceDontPropagateListReq *req; + xGetDeviceDontPropagateListReply rep; + XExtDisplayInfo *info = XInput_find_display(dpy); +@@ -89,11 +89,11 @@ + } + *count = rep.count; + +- if (*count) { +- rlen = rep.length << 2; +- list = (XEventClass *) Xmalloc(rep.length * sizeof(XEventClass)); ++ if (rep.length != 0) { ++ if ((rep.count != 0) && (rep.length < (INT_MAX / sizeof(XEventClass)))) ++ list = Xmalloc(rep.length * sizeof(XEventClass)); + if (list) { +- int i; ++ unsigned int i; + CARD32 ec; + + /* read and assign each XEventClass separately because +@@ -105,7 +105,7 @@ + list[i] = (XEventClass) ec; + } + } else +- _XEatData(dpy, (unsigned long)rlen); ++ _XEatDataWords(dpy, rep.length); + } + + UnlockDisplay(dpy); +Index: libxi-1.6.99.1/src/XGtSelect.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XGtSelect.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XGtSelect.c 2013-05-29 10:06:06.928395624 -0400 +@@ -104,7 +104,7 @@ + (XEventClass *) Xmalloc(*this_client_count * + sizeof(XEventClass)); + if (!*this_client_list) { +- _XEatData(dpy, (unsigned long)tlen + alen); ++ _XEatDataWords(dpy, rep.length); + UnlockDisplay(dpy); + SyncHandle(); + return (Success); +Index: libxi-1.6.99.1/src/XIProperties.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XIProperties.c 2012-01-26 23:45:08.000000000 -0500 ++++ libxi-1.6.99.1/src/XIProperties.c 2013-05-29 10:06:18.676395512 -0400 +@@ -38,6 +38,7 @@ + #include + #include + #include "XIint.h" ++#include + + Atom* + XIListProperties(Display* dpy, int deviceid, int *num_props_return) +@@ -64,7 +65,7 @@ + props = (Atom*)Xmalloc(rep.num_properties * sizeof(Atom)); + if (!props) + { +- _XEatData(dpy, rep.num_properties << 2); ++ _XEatDataWords(dpy, rep.length); + goto cleanup; + } + +@@ -170,7 +171,7 @@ + { + xXIGetPropertyReq *req; + xXIGetPropertyReply rep; +- long nbytes, rbytes; ++ unsigned long nbytes, rbytes; + + XExtDisplayInfo *info = XInput_find_display(dpy); + +@@ -203,8 +204,7 @@ + * This part of the code should never be reached. If it is, + * the server sent back a property with an invalid format. + */ +- nbytes = rep.length << 2; +- _XEatData(dpy, nbytes); ++ _XEatDataWords(dpy, rep.length); + UnlockDisplay(dpy); + SyncHandle(); + return(BadImplementation); +@@ -217,12 +217,14 @@ + * recopy the string to make it null terminated. + */ + +- nbytes = rep.num_items * rep.format/8; +- rbytes = nbytes + 1; +- *data = Xmalloc(rbytes); ++ if (rep.num_items < (INT_MAX / (rep.format/8))) { ++ nbytes = rep.num_items * rep.format/8; ++ rbytes = nbytes + 1; ++ *data = Xmalloc(rbytes); ++ } + + if (!(*data)) { +- _XEatData(dpy, nbytes); ++ _XEatDataWords(dpy, rep.length); + UnlockDisplay(dpy); + SyncHandle(); + return(BadAlloc); +Index: libxi-1.6.99.1/src/XISelEv.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XISelEv.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XISelEv.c 2013-05-29 10:06:21.004395490 -0400 +@@ -42,6 +42,7 @@ + #include + #include + #include "XIint.h" ++#include + + int + XISelectEvents(Display* dpy, Window win, XIEventMask* masks, int num_masks) +@@ -101,13 +102,14 @@ + XIEventMask* + XIGetSelectedEvents(Display* dpy, Window win, int *num_masks_return) + { +- int i, len = 0; ++ unsigned int i, len = 0; + unsigned char *mask; + XIEventMask *mask_out = NULL; + xXIEventMask *mask_in = NULL, *mi; + xXIGetSelectedEventsReq *req; + xXIGetSelectedEventsReply reply; + XExtDisplayInfo *info = XInput_find_display(dpy); ++ size_t rbytes; + + *num_masks_return = -1; + LockDisplay(dpy); +@@ -129,11 +131,16 @@ + goto out; + } + +- mask_in = Xmalloc(reply.length * 4); +- if (!mask_in) ++ if (reply.length < (INT_MAX >> 2)) { ++ rbytes = (unsigned long) reply.length << 2; ++ mask_in = Xmalloc(rbytes); ++ } ++ if (!mask_in) { ++ _XEatDataWords(dpy, reply.length); + goto out; ++ } + +- _XRead(dpy, (char*)mask_in, reply.length * 4); ++ _XRead(dpy, (char*)mask_in, rbytes); + + /* Memory layout of the XIEventMask for a 3 mask reply: + * [struct a][struct b][struct c][masks a][masks b][masks c] +@@ -142,8 +149,14 @@ + + for (i = 0, mi = mask_in; i < reply.num_masks; i++) + { +- len += mi->mask_len * 4; +- mi = (xXIEventMask*)((char*)mi + mi->mask_len * 4); ++ unsigned int mask_bytes = mi->mask_len * 4; ++ len += mask_bytes; ++ if (len > INT_MAX) ++ goto out; ++ if ((sizeof(xXIEventMask) + mask_bytes) > rbytes) ++ goto out; ++ rbytes -= (sizeof(xXIEventMask) + mask_bytes); ++ mi = (xXIEventMask*)((char*)mi + mask_bytes); + mi++; + } + +Index: libxi-1.6.99.1/src/XIint.h +=================================================================== +--- libxi-1.6.99.1.orig/src/XIint.h 2013-05-29 10:05:36.436395915 -0400 ++++ libxi-1.6.99.1/src/XIint.h 2013-05-29 10:06:06.928395624 -0400 +@@ -82,4 +82,18 @@ + return ret; + } + ++#ifndef HAVE__XEATDATAWORDS ++#include /* for LONG64 on 64-bit platforms */ ++#include ++ ++static inline void _XEatDataWords(Display *dpy, unsigned long n) ++{ ++# ifndef LONG64 ++ if (n >= (ULONG_MAX >> 2)) ++ _XIOError(dpy); ++# endif ++ _XEatData (dpy, n << 2); ++} ++#endif ++ + #endif +Index: libxi-1.6.99.1/src/XListDProp.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XListDProp.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XListDProp.c 2013-05-29 10:06:06.928395624 -0400 +@@ -65,7 +65,7 @@ + props = (Atom*)Xmalloc(rep.nAtoms * sizeof(Atom)); + if (!props) + { +- _XEatData(dpy, rep.nAtoms << 2); ++ _XEatDataWords(dpy, rep.length); + goto cleanup; + } + +Index: libxi-1.6.99.1/src/XListDev.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XListDev.c 2012-12-06 23:37:27.000000000 -0500 ++++ libxi-1.6.99.1/src/XListDev.c 2013-05-29 10:06:26.136395441 -0400 +@@ -60,6 +60,7 @@ + #include + #include + #include "XIint.h" ++#include + + /* Calculate length field to a multiples of sizeof(XID). XIDs are typedefs + * to ulong and thus may be 8 bytes on some platforms. This can trigger a +@@ -179,7 +180,7 @@ + XAnyClassPtr Any; + char *nptr, *Nptr; + int i; +- long rlen; ++ unsigned long rlen; + XExtDisplayInfo *info = XInput_find_display(dpy); + + LockDisplay(dpy); +@@ -198,11 +199,12 @@ + + if ((*ndevices = rep.ndevices)) { /* at least 1 input device */ + size = *ndevices * sizeof(XDeviceInfo); +- rlen = rep.length << 2; /* multiply length by 4 */ +- list = (xDeviceInfo *) Xmalloc(rlen); +- slist = list; ++ if (rep.length < (INT_MAX >> 2)) { ++ rlen = rep.length << 2; /* multiply length by 4 */ ++ slist = list = Xmalloc(rlen); ++ } + if (!slist) { +- _XEatData(dpy, (unsigned long)rlen); ++ _XEatDataWords(dpy, rep.length); + UnlockDisplay(dpy); + SyncHandle(); + return (XDeviceInfo *) NULL; +Index: libxi-1.6.99.1/src/XOpenDev.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XOpenDev.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XOpenDev.c 2013-05-29 10:06:06.928395624 -0400 +@@ -101,7 +101,7 @@ + if (rlen - dlen > 0) + _XEatData(dpy, (unsigned long)rlen - dlen); + } else +- _XEatData(dpy, (unsigned long)rlen); ++ _XEatDataWords(dpy, rep.length); + + UnlockDisplay(dpy); + SyncHandle(); +Index: libxi-1.6.99.1/src/XQueryDv.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XQueryDv.c 2011-12-19 19:28:44.000000000 -0500 ++++ libxi-1.6.99.1/src/XQueryDv.c 2013-05-29 10:06:06.928395624 -0400 +@@ -91,7 +91,7 @@ + if (rlen > 0) { + data = Xmalloc(rlen); + if (!data) { +- _XEatData(dpy, (unsigned long)rlen); ++ _XEatDataWords(dpy, rep.length); + goto out; + } + _XRead(dpy, data, rlen); --- libxi-1.6.99.1.orig/debian/patches/revert-xi2.3.diff +++ libxi-1.6.99.1/debian/patches/revert-xi2.3.diff @@ -0,0 +1,318 @@ +commit 46309aadc55850f6708937db354f7981c2c6e411 +Author: Timo Aaltonen +Date: Thu Feb 7 18:48:52 2013 +0200 + + Revert "Add support for pointer barrier events" + + This reverts commit 60d7386a1b98cc7760d55d6df1f90e6259d122fa. + +diff --git a/configure.ac b/configure.ac +index d2af70f..2e7efb1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -28,7 +28,7 @@ XORG_WITH_ASCIIDOC(8.4.5) + XORG_CHECK_MALLOC_ZERO + + # Obtain compiler/linker options for dependencies +-PKG_CHECK_MODULES(XI, [xproto >= 7.0.13] [x11 >= 1.4.99.1] [xextproto >= 7.0.3] [xext >= 1.0.99.1] [inputproto >= 2.2.99.1]) ++PKG_CHECK_MODULES(XI, [xproto >= 7.0.13] [x11 >= 1.4.99.1] [xextproto >= 7.0.3] [xext >= 1.0.99.1] [inputproto >= 2.1.99.6]) + + # Check for xmlto and asciidoc for man page conversion + # (only needed by people building tarballs) +diff --git a/include/X11/extensions/XInput2.h b/include/X11/extensions/XInput2.h +index a746012..26de695 100644 +--- a/include/X11/extensions/XInput2.h ++++ b/include/X11/extensions/XInput2.h +@@ -169,16 +169,6 @@ typedef struct + int status; + } XIGrabModifiers; + +-typedef XID PointerBarrier; +-typedef unsigned int BarrierEventID; +- +-typedef struct +-{ +- int deviceid; +- PointerBarrier barrier; +- BarrierEventID eventid; +-} XIBarrierReleasePointerInfo; +- + /** + * Generic XI2 event. All XI2 events have the same header. + */ +@@ -338,28 +328,6 @@ typedef struct { + int flags; + } XITouchOwnershipEvent; + +-typedef struct { +- int type; /* GenericEvent */ +- unsigned long serial; /* # of last request processed by server */ +- Bool send_event; /* true if this came from a SendEvent request */ +- Display *display; /* Display the event was read from */ +- int extension; /* XI extension offset */ +- int evtype; +- Time time; +- int deviceid; +- int sourceid; +- Window event; +- Window root; +- double root_x; +- double root_y; +- double dx; +- double dy; +- int dtime; +- int flags; +- PointerBarrier barrier; +- BarrierEventID eventid; +-} XIBarrierEvent; +- + _XFUNCPROTOBEGIN + + extern Bool XIQueryPointer( +@@ -635,21 +603,6 @@ XIGetProperty( + unsigned char **data + ); + +-extern void +-XIBarrierReleasePointers( +- Display* display, +- XIBarrierReleasePointerInfo *barriers, +- int num_barriers +-); +- +-extern void +-XIBarrierReleasePointer( +- Display* display, +- int deviceid, +- PointerBarrier barrier, +- BarrierEventID eventid +-); +- + extern void XIFreeDeviceInfo(XIDeviceInfo *info); + + _XFUNCPROTOEND +diff --git a/src/Makefile.am b/src/Makefile.am +index ee40753..806265c 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -13,8 +13,7 @@ XI2_sources = XIAllowEvents.c \ + XIWarpPointer.c \ + XIHierarchy.c \ + XIDefineCursor.c \ +- XIQueryPointer.c \ +- XIBarrier.c ++ XIQueryPointer.c + + libXi_la_SOURCES = \ + XAllowDv.c \ +diff --git a/src/XExtInt.c b/src/XExtInt.c +index 57d071d..1c668c7 100644 +--- a/src/XExtInt.c ++++ b/src/XExtInt.c +@@ -124,9 +124,6 @@ wireToPropertyEvent(xXIPropertyEvent *in, XGenericEventCookie *cookie); + static int + wireToTouchOwnershipEvent(xXITouchOwnershipEvent *in, + XGenericEventCookie *cookie); +-static int +-wireToBarrierEvent(xXIBarrierEvent *in, +- XGenericEventCookie *cookie); + + static /* const */ XEvent emptyevent; + +@@ -1025,16 +1022,6 @@ XInputWireToCookie( + break; + } + return ENQUEUE_EVENT; +- case XI_BarrierHit: +- case XI_BarrierLeave: +- *cookie = *(XGenericEventCookie*)save; +- if (!wireToBarrierEvent((xXIBarrierEvent*)event, cookie)) +- { +- printf("XInputWireToCookie: CONVERSION FAILURE! evtype=%d\n", +- ge->evtype); +- break; +- } +- return ENQUEUE_EVENT; + default: + printf("XInputWireToCookie: Unknown generic event. type %d\n", ge->evtype); + +@@ -1416,21 +1403,7 @@ copyRawEvent(XGenericEventCookie *cookie_in, + return True; + } + +-static Bool +-copyBarrierEvent(XGenericEventCookie *in_cookie, +- XGenericEventCookie *out_cookie) +-{ +- XIBarrierEvent *in, *out; +- +- in = in_cookie->data; +- +- out = out_cookie->data = calloc(1, sizeof(XIBarrierEvent)); +- if (!out) +- return False; +- *out = *in; + +- return True; +-} + + static Bool + XInputCopyCookie(Display *dpy, XGenericEventCookie *in, XGenericEventCookie *out) +@@ -1486,10 +1459,6 @@ XInputCopyCookie(Display *dpy, XGenericEventCookie *in, XGenericEventCookie *out + case XI_RawMotion: + ret = copyRawEvent(in, out); + break; +- case XI_BarrierHit: +- case XI_BarrierLeave: +- ret = copyBarrierEvent(in, out); +- break; + default: + printf("XInputCopyCookie: unknown evtype %d\n", in->evtype); + ret = False; +@@ -1989,34 +1958,3 @@ wireToTouchOwnershipEvent(xXITouchOwnershipEvent *in, + + return 1; + } +- +-#define FP3232_TO_DOUBLE(x) ((double) (x).integral + (x).frac / (1ULL << 32)) +- +-static int +-wireToBarrierEvent(xXIBarrierEvent *in, XGenericEventCookie *cookie) +-{ +- XIBarrierEvent *out = malloc(sizeof(XIBarrierEvent)); +- +- cookie->data = out; +- +- out->display = cookie->display; +- out->type = in->type; +- out->extension = in->extension; +- out->evtype = in->evtype; +- out->send_event = ((in->type & 0x80) != 0); +- out->time = in->time; +- out->deviceid = in->deviceid; +- out->sourceid = in->sourceid; +- out->event = in->event; +- out->root = in->root; +- out->root_x = FP1616toDBL(in->root_x); +- out->root_y = FP1616toDBL(in->root_y); +- out->dx = FP3232_TO_DOUBLE (in->dx); +- out->dy = FP3232_TO_DOUBLE (in->dy); +- out->dtime = in->dtime; +- out->flags = in->flags; +- out->barrier = in->barrier; +- out->eventid = in->eventid; +- +- return 1; +-} +diff --git a/src/XIBarrier.c b/src/XIBarrier.c +deleted file mode 100644 +index 155b98b..0000000 +--- a/src/XIBarrier.c ++++ /dev/null +@@ -1,81 +0,0 @@ +-/* +- * Copyright © 2009 Red Hat, Inc. +- * +- * Permission is hereby granted, free of charge, to any person obtaining a +- * copy of this software and associated documentation files (the "Software"), +- * to deal in the Software without restriction, including without limitation +- * the rights to use, copy, modify, merge, publish, distribute, sublicense, +- * and/or sell copies of the Software, and to permit persons to whom the +- * Software is furnished to do so, subject to the following conditions: +- * +- * The above copyright notice and this permission notice (including the next +- * paragraph) shall be included in all copies or substantial portions of the +- * Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +- * DEALINGS IN THE SOFTWARE. +- * +- */ +- +-#if HAVE_CONFIG_H +-#include +-#endif +- +-#include +-#include +-#include +-#include +-#include +-#include "XIint.h" +- +-void +-XIBarrierReleasePointers(Display *dpy, +- XIBarrierReleasePointerInfo *barriers, +- int num_barriers) +-{ +- XExtDisplayInfo *info = XInput_find_display(dpy); +- xXIBarrierReleasePointerReq *req; +- int extra = 0; +- int i; +- xXIBarrierReleasePointerInfo *b; +- +- if (!num_barriers) +- return; +- +- extra = (num_barriers * sizeof(xXIBarrierReleasePointerInfo)); +- +- LockDisplay (dpy); +- GetReqExtra (XIBarrierReleasePointer, extra, req); +- req->reqType = info->codes->major_opcode; +- req->ReqType = X_XIBarrierReleasePointer; +- req->num_barriers = num_barriers; +- +- b = (xXIBarrierReleasePointerInfo *) &req[1]; +- for (i = 0; i < num_barriers; i++, b++) { +- b->deviceid = barriers[i].deviceid; +- b->eventid = barriers[i].eventid; +- b->barrier = barriers[i].barrier; +- } +- +- UnlockDisplay (dpy); +- SyncHandle (); +-} +- +-void +-XIBarrierReleasePointer(Display *dpy, +- int deviceid, +- PointerBarrier barrier, +- BarrierEventID eventid) +-{ +- XIBarrierReleasePointerInfo info; +- info.deviceid = deviceid; +- info.barrier = barrier; +- info.eventid = eventid; +- +- XIBarrierReleasePointers(dpy, &info, 1); +-} +diff --git a/src/XIint.h b/src/XIint.h +index 571bb23..be4eafb 100644 +--- a/src/XIint.h ++++ b/src/XIint.h +@@ -22,7 +22,6 @@ + #endif + #define XInput_2_1 8 + #define XInput_2_2 9 +-#define XInput_2_3 10 + + extern XExtDisplayInfo *XInput_find_display(Display *); + +Index: libxi-1.6.99.1/xi.pc.in +=================================================================== +--- libxi-1.6.99.1.orig/xi.pc.in 2010-09-07 07:21:05.000000000 +0200 ++++ libxi-1.6.99.1/xi.pc.in 2013-02-20 09:58:12.153142456 +0100 +@@ -5,7 +5,7 @@ + + Name: Xi + Description: X Input Extension Library +-Version: @VERSION@ ++Version: 1.6.1 + Requires: inputproto + Requires.private: x11 xext + Cflags: -I${includedir} --- libxi-1.6.99.1.orig/debian/patches/CVE-2013-1998.patch +++ libxi-1.6.99.1/debian/patches/CVE-2013-1998.patch @@ -0,0 +1,114 @@ +Description: fix denial of service and possible code execution via + incorrect length and bounds checking +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=f3e08e4fbe40016484ba795feecf1a742170ffc1 +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=91434737f592e8f5cc1762383882a582b55fc03a +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=5398ac0797f7516f2c9b8f2869a6c6d071437352 + +Index: libxi-1.6.99.1/src/XGetBMap.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XGetBMap.c 2013-05-29 10:17:11.112389290 -0400 ++++ libxi-1.6.99.1/src/XGetBMap.c 2013-05-29 10:17:11.108389290 -0400 +@@ -60,6 +60,7 @@ + #include + #include + #include "XIint.h" ++#include + + #ifdef MIN /* some systems define this in */ + #undef MIN +@@ -75,7 +76,6 @@ + { + int status = 0; + unsigned char mapping[256]; /* known fixed size */ +- long nbytes; + XExtDisplayInfo *info = XInput_find_display(dpy); + + register xGetDeviceButtonMappingReq *req; +@@ -92,13 +92,18 @@ + + status = _XReply(dpy, (xReply *) & rep, 0, xFalse); + if (status == 1) { +- nbytes = (long)rep.length << 2; +- _XRead(dpy, (char *)mapping, nbytes); +- +- /* don't return more data than the user asked for. */ +- if (rep.nElts) +- memcpy((char *)map, (char *)mapping, MIN((int)rep.nElts, nmap)); +- status = rep.nElts; ++ if (rep.length <= (sizeof(mapping) >> 2)) { ++ unsigned long nbytes = rep.length << 2; ++ _XRead(dpy, (char *)mapping, nbytes); ++ ++ /* don't return more data than the user asked for. */ ++ if (rep.nElts) ++ memcpy(map, mapping, MIN((int)rep.nElts, nmap)); ++ status = rep.nElts; ++ } else { ++ _XEatDataWords(dpy, rep.length); ++ status = 0; ++ } + } else + status = 0; + UnlockDisplay(dpy); +Index: libxi-1.6.99.1/src/XIPassiveGrab.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XIPassiveGrab.c 2013-05-29 10:17:11.112389290 -0400 ++++ libxi-1.6.99.1/src/XIPassiveGrab.c 2013-05-29 10:17:11.108389290 -0400 +@@ -88,7 +88,7 @@ + return -1; + _XRead(dpy, (char*)failed_mods, reply.num_modifiers * sizeof(xXIGrabModifierInfo)); + +- for (i = 0; i < reply.num_modifiers; i++) ++ for (i = 0; i < reply.num_modifiers && i < num_modifiers; i++) + { + modifiers_inout[i].status = failed_mods[i].status; + modifiers_inout[i].modifiers = failed_mods[i].modifiers; +Index: libxi-1.6.99.1/src/XQueryDv.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XQueryDv.c 2013-05-29 10:17:11.060389291 -0400 ++++ libxi-1.6.99.1/src/XQueryDv.c 2013-05-29 10:17:29.156389118 -0400 +@@ -59,6 +59,7 @@ + #include + #include + #include "XIint.h" ++#include + + XDeviceState * + XQueryDeviceState( +@@ -66,8 +67,8 @@ + XDevice *dev) + { + int i, j; +- int rlen; +- int size = 0; ++ unsigned long rlen; ++ size_t size = 0; + xQueryDeviceStateReq *req; + xQueryDeviceStateReply rep; + XDeviceState *state = NULL; +@@ -87,9 +88,11 @@ + if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) + goto out; + +- rlen = rep.length << 2; +- if (rlen > 0) { +- data = Xmalloc(rlen); ++ if (rep.length > 0) { ++ if (rep.length < (INT_MAX >> 2)) { ++ rlen = (unsigned long) rep.length << 2; ++ data = Xmalloc(rlen); ++ } + if (!data) { + _XEatDataWords(dpy, rep.length); + goto out; +@@ -97,6 +100,10 @@ + _XRead(dpy, data, rlen); + + for (i = 0, any = (XInputClass *) data; i < (int)rep.num_classes; i++) { ++ if (any->length > rlen) ++ goto out; ++ rlen -= any->length; ++ + switch (any->class) { + case KeyClass: + size += sizeof(XKeyState); --- libxi-1.6.99.1.orig/debian/patches/add-missing-xi_rawtouch.diff +++ libxi-1.6.99.1/debian/patches/add-missing-xi_rawtouch.diff @@ -0,0 +1,29 @@ +commit 236be512c81b76dad711bec481e2139584006c4c +Author: Benjamin Tissoires +Date: Mon Jan 14 18:32:05 2013 +0100 + + Add missing XI_RawTouch* in XInputCopyCookie + + Looks like XI_RawTouch* events are missing in the big switch in this function. + When running XIT tests for multitouch devices, several following errors appears: + XInputCopyCookie: Failed to copy evtype 22 + XInputCopyCookie: Failed to copy evtype 23 + XInputCopyCookie: Failed to copy evtype 24 + + Signed-off-by: Benjamin Tissoires + Signed-off-by: Peter Hutterer + +diff --git a/src/XExtInt.c b/src/XExtInt.c +index 57d071d..507573b 100644 +--- a/src/XExtInt.c ++++ b/src/XExtInt.c +@@ -1484,6 +1484,9 @@ XInputCopyCookie(Display *dpy, XGenericEventCookie *in, XGenericEventCookie *out + case XI_RawButtonPress: + case XI_RawButtonRelease: + case XI_RawMotion: ++ case XI_RawTouchBegin: ++ case XI_RawTouchUpdate: ++ case XI_RawTouchEnd: + ret = copyRawEvent(in, out); + break; + case XI_BarrierHit: --- libxi-1.6.99.1.orig/debian/patches/CVE-2013-1995.patch +++ libxi-1.6.99.1/debian/patches/CVE-2013-1995.patch @@ -0,0 +1,68 @@ +Description: fix denial of service and possible code execution via + incorrect memory size calculations from signedness issues +Origin: upstream, http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=81b4df8ac6aa1520c41c3526961014a6f115cc46 + +Index: libxi-1.6.99.1/src/XListDev.c +=================================================================== +--- libxi-1.6.99.1.orig/src/XListDev.c 2013-05-29 10:06:41.916395291 -0400 ++++ libxi-1.6.99.1/src/XListDev.c 2013-05-29 10:06:56.004395156 -0400 +@@ -73,7 +73,7 @@ + return ((base_size + padsize - 1)/padsize) * padsize; + } + +-static int ++static size_t + SizeClassInfo(xAnyClassPtr *any, int num_classes) + { + int size = 0; +@@ -170,7 +170,7 @@ + register Display *dpy, + int *ndevices) + { +- int size; ++ size_t size; + xListInputDevicesReq *req; + xListInputDevicesReply rep; + xDeviceInfo *list, *slist = NULL; +@@ -178,7 +178,7 @@ + XDeviceInfo *clist = NULL; + xAnyClassPtr any, sav_any; + XAnyClassPtr Any; +- char *nptr, *Nptr; ++ unsigned char *nptr, *Nptr; + int i; + unsigned long rlen; + XExtDisplayInfo *info = XInput_find_display(dpy); +@@ -217,9 +217,12 @@ + size += SizeClassInfo(&any, (int)list->num_classes); + } + +- for (i = 0, nptr = (char *)any; i < *ndevices; i++) { ++ Nptr = ((unsigned char *)list) + rlen + 1; ++ for (i = 0, nptr = (unsigned char *)any; i < *ndevices; i++) { + size += *nptr + 1; + nptr += (*nptr + 1); ++ if (nptr > Nptr) ++ goto out; + } + + clist = (XDeviceInfoPtr) Xmalloc(size); +@@ -245,8 +248,8 @@ + } + + clist = sclist; +- nptr = (char *)any; +- Nptr = (char *)Any; ++ nptr = (unsigned char *)any; ++ Nptr = (unsigned char *)Any; + for (i = 0; i < *ndevices; i++, clist++) { + clist->name = (char *)Nptr; + memcpy(Nptr, nptr + 1, *nptr); +@@ -256,6 +259,7 @@ + } + } + ++ out: + XFree((char *)slist); + UnlockDisplay(dpy); + SyncHandle(); --- libxi-1.6.99.1.orig/debian/patches/series +++ libxi-1.6.99.1/debian/patches/series @@ -0,0 +1,5 @@ +add-missing-xi_rawtouch.diff +revert-xi2.3.diff +CVE-2013-1984.patch +CVE-2013-1995.patch +CVE-2013-1998.patch