Imported Debian patch 2:1.15.1-0ubuntu2.6 debian/2%1.15.1-0ubuntu2.6
authorMaarten Lankhorst <maarten.lankhorst@ubuntu.com>
Mon, 3 Nov 2014 11:36:32 +0000 (12:36 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 22 Dec 2014 16:11:58 +0000 (17:11 +0100)
131 files changed:
.dir-locals.el [new file with mode: 0644]
config/dbus-api [new file with mode: 0644]
damageext/damageext.h [new file with mode: 0644]
debian/README.source [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/gbp.conf [new file with mode: 0644]
debian/local/10-kbd.conf [new file with mode: 0644]
debian/local/10-mouse.conf [new file with mode: 0644]
debian/local/64-xorg-xkb.rules [new file with mode: 0644]
debian/local/dh_xsf_substvars [new file with mode: 0644]
debian/local/xsf.pm [new file with mode: 0644]
debian/local/xvfb-run [new file with mode: 0644]
debian/local/xvfb-run.1 [new file with mode: 0644]
debian/patches/001_fedora_extramodes.patch [new file with mode: 0644]
debian/patches/02_kbsd-input-devd.diff [new file with mode: 0644]
debian/patches/03_static-nettle.diff [new file with mode: 0644]
debian/patches/05_Revert-Unload-submodules.diff [new file with mode: 0644]
debian/patches/06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff [new file with mode: 0644]
debian/patches/08_xfree86_fix_ia64_inx_outx.diff [new file with mode: 0644]
debian/patches/105_nvidia_fglrx_autodetect.patch [new file with mode: 0644]
debian/patches/111_armel-drv-fallbacks.patch [new file with mode: 0644]
debian/patches/122_xext_fix_card32_overflow_in_xauth.patch [new file with mode: 0644]
debian/patches/168_glibc_trace_to_stderr.patch [new file with mode: 0644]
debian/patches/188_default_primary_to_first_busid.patch [new file with mode: 0644]
debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch [new file with mode: 0644]
debian/patches/191-Xorg-add-an-extra-module-path.patch [new file with mode: 0644]
debian/patches/208_switch_on_release.diff [new file with mode: 0644]
debian/patches/226_fall_back_to_autoconfiguration.patch [new file with mode: 0644]
debian/patches/227_null_ptr_midispcur.patch [new file with mode: 0644]
debian/patches/228_autobind_gpu.patch [new file with mode: 0644]
debian/patches/232-xf86compatoutput-valgrind.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0000-glx-check-return.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0000-regionsize-size_t.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0001-unchecked-malloc-may-allow-unauthed-client-to-crash-.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0002-dix-integer-overflow-in-ProcPutImage-CVE-2014-8092-1.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0003-dix-integer-overflow-in-GetHosts-CVE-2014-8092-2-4.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0004-dix-integer-overflow-in-RegionSizeof-CVE-2014-8092-3.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0005-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-2014-.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0006-dri2-integer-overflow-in-ProcDRI2GetBuffers-CVE-2014.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0007-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls-CVE-.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0008-Xi-unvalidated-lengths-in-Xinput-extension-CVE-2014-.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0009-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDList-C.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0010-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0011-dri3-unvalidated-lengths-in-DRI3-extension-swapped-p.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0012-present-unvalidated-lengths-in-Present-extension-pro.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0013-randr-unvalidated-lengths-in-RandR-extension-swapped.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0014-render-check-request-size-before-reading-it-CVE-2014.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0015-render-unvalidated-lengths-in-Render-extn.-swapped-p.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0016-xfixes-unvalidated-length-in-SProcXFixesSelectSelect.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0017-Add-request-length-checking-test-cases-for-some-Xinp.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0018-Add-request-length-checking-test-cases-for-some-Xinp.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0019-Add-REQUEST_FIXED_SIZE-testcases-to-test-misc.c.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0020-glx-Be-more-paranoid-about-variable-length-requests-.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0021-glx-Be-more-strict-about-rejecting-invalid-image-siz.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0022-glx-Additional-paranoia-in-__glXGetAnswerBuffer-__GL.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0023-glx-Fix-image-size-computation-for-EXT_texture_integ.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0024-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0025-glx-Length-checking-for-GLXRender-requests-v2-CVE-20.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0026-glx-Integer-overflow-protection-for-non-generated-re.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0027-glx-Length-checking-for-RenderLarge-requests-v2-CVE-.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0028-glx-Top-level-length-checking-for-swapped-VendorPriv.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0029-glx-Request-length-checks-for-SetClientInfoARB-CVE-2.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0030-glx-Length-checking-for-non-generated-vendor-private.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0031-glx-Length-checking-for-non-generated-single-request.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0032-glx-Pass-remaining-request-length-into-varsize-v2-CV.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0033-glx-Fix-mask-truncation-in-__glXGetAnswerBuffer-CVE-.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0034-CVE-2014-8097-additional.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0035-CVE-2014-8098-additional.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0036-CVE-2014-8092-additional.patch [new file with mode: 0644]
debian/patches/CVE-2014-8xxx/0037-CVE-2014-8092-additional-2.patch [new file with mode: 0644]
debian/patches/config-add-no-removal.patch [new file with mode: 0644]
debian/patches/disable-rotation-transform-gpuscreens.patch [new file with mode: 0644]
debian/patches/drm_device_keep_trying.patch [new file with mode: 0644]
debian/patches/fb-24-depth.patch [new file with mode: 0644]
debian/patches/fix-detach-gpu.patch [new file with mode: 0644]
debian/patches/fix-ftbfs-ppc64el.patch [new file with mode: 0644]
debian/patches/mi-dont-process-disabled.patch [new file with mode: 0644]
debian/patches/no-nv.patch [new file with mode: 0644]
debian/patches/pixman-validate.patch [new file with mode: 0644]
debian/patches/ppc64el-endian-fix.patch [new file with mode: 0644]
debian/patches/rotation-slaved-crtc-bounds.patch [new file with mode: 0644]
debian/patches/rrcrtc-brackets-are-hard.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]
debian/patches/xf86-fixup-detection.patch [new file with mode: 0644]
debian/patches/xf86-ignore-conflicting-rr-caps.patch [new file with mode: 0644]
debian/patches/xf86-inactive-gpuscreen.patch [new file with mode: 0644]
debian/patches/xfree86-no-xv-for-gpuscreens.patch [new file with mode: 0644]
debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch [new file with mode: 0644]
debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch [new file with mode: 0644]
debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch [new file with mode: 0644]
debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch [new file with mode: 0644]
debian/patches/xi-dont-copy-too-much.patch [new file with mode: 0644]
debian/patches/xi2-resize-touch.patch [new file with mode: 0644]
debian/patches/xmir.patch [new file with mode: 0644]
debian/patches/xrandr-rroutputchanged-main.patch [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/serverminver [new file with mode: 0644]
debian/watch [new file with mode: 0644]
debian/xdmx-tools.install [new file with mode: 0644]
debian/xdmx.install [new file with mode: 0644]
debian/xnest.install [new file with mode: 0644]
debian/xorg-server-source.install [new file with mode: 0644]
debian/xserver-common.install [new file with mode: 0644]
debian/xserver-xephyr.docs [new file with mode: 0644]
debian/xserver-xephyr.install [new file with mode: 0644]
debian/xserver-xorg-core-udeb.install [new file with mode: 0644]
debian/xserver-xorg-core.bug.script [new file with mode: 0644]
debian/xserver-xorg-core.install [new file with mode: 0644]
debian/xserver-xorg-core.lintian-overrides [new file with mode: 0644]
debian/xserver-xorg-core.postrm [new file with mode: 0644]
debian/xserver-xorg-dev.install [new file with mode: 0644]
debian/xserver-xorg-xmir.install [new file with mode: 0644]
debian/xvfb.install [new file with mode: 0644]
doc/c-extensions [new file with mode: 0644]
dri3/dri3_event.c [new file with mode: 0644]
dri3/dri3int.h [new file with mode: 0644]
fix-miregion [new file with mode: 0644]
fix-miregion-private [new file with mode: 0644]
fix-patch-whitespace [new file with mode: 0644]
fix-region [new file with mode: 0644]
glx/glthread.c [new file with mode: 0644]
hw/kdrive/Xkdrive.man [new file with mode: 0644]
hw/kdrive/fbdev/Xfbdev.man [new file with mode: 0644]
hw/xfree86/dixmods/extmod/modinit.h [new file with mode: 0644]
hw/xfree86/os-support/shared/platform_noop.c [new file with mode: 0644]
hw/xquartz/GL/glcontextmodes.c [new file with mode: 0644]
hw/xquartz/GL/glcontextmodes.h [new file with mode: 0644]
xkb/XKM_file_format.txt [new file with mode: 0644]

diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644 (file)
index 0000000..6aceae3
--- /dev/null
@@ -0,0 +1 @@
+((c-mode . ((c-basic-offset . 4) (indent-tabs-mode . nil))))
\ No newline at end of file
diff --git a/config/dbus-api b/config/dbus-api
new file mode 100644 (file)
index 0000000..018e986
--- /dev/null
@@ -0,0 +1,40 @@
+D-BUS Configuration API v2
+----------------------------
+
+The X server will register the bus name org.x.config.displayN, and the 
+object /org/x/config/N, where N is the display number.
+
+Currently only hotplugging of input devices is supported.
+
+org.x.config.input:
+    org.x.config.input.version:
+        Returns one unsigned int32, which is the API version.
+
+    org.x.config.input.add:
+        Takes an argument of key/value option pairs in arrays, e.g.:
+         [ss][ss][ss][ss]
+        is the signature for four options.  These options will be passed
+        to the input driver as with any others.
+        Option names beginning with _ are not allowed; they are reserved
+        for internal use.
+
+        Returns a number of signed int32s.  Positive integers are the
+        device IDs of new devices; negative numbers are X error codes,
+        as defined in X.h.  BadMatch will be returned if the options
+        given do not match any device.  BadValue is returned for a malformed
+        message.  (Example: 8 is new device ID 8; -8 is BadMatch.)
+
+        Notably, BadAlloc is never returned: the server internally signals
+        to D-BUS that the attempt failed for lack of memory.
+
+    org.x.config.input.remove:
+        Takes one uint32 argument, which is the device ID to remove, i.e.:
+         u
+        is the signature.
+
+        Returns one signed int32 which represents an X status as defined in
+        X.h. See org.x.config.input.add. Error codes are negative numbers.
+
+    org.x.config.input.listDevices:
+        Lists the currently active devices. No argument. 
+        Return value is sequence of [<id> <name>] [<id> <name>] ..., i.e. [us].
diff --git a/damageext/damageext.h b/damageext/damageext.h
new file mode 100644 (file)
index 0000000..bd99635
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright © 2002 Keith Packard
+ *
+ * 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, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission.  Keith Packard makes no
+ * representations about the suitability of this software for any purpose.  It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH 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.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#ifndef _DAMAGEEXT_H_
+#define _DAMAGEEXT_H_
+
+void
+ DamageExtensionInit(void);
+
+#endif                          /* _DAMAGEEXT_H_ */
diff --git a/debian/README.source b/debian/README.source
new file mode 100644 (file)
index 0000000..f33e314
--- /dev/null
@@ -0,0 +1,66 @@
+------------------------------------------------------
+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 using 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.
+
+----------------------------------------------
+Updating xorg-server to a new upstream release
+----------------------------------------------
+
+* The abibumpcheck target helps us notice any ABI bump:
+  - A major ABI bump means drivers have to be rebuilt.
+  - A minor ABI bump means the version in serverminver has to be
+    bumped.
+  Reference documentation about dependencies is available at:
+    http://pkg-xorg.alioth.debian.org/reference/dependencies.html
+* We have to keep track of the SDK_REQUIRED_MODULES variable in
+  configure.ac. It is used to determine xorg-server.pc's dependencies
+  so xserver-xorg-dev's dependencies have to be adjusted when this
+  variable changes. This variable is set to a list of modules, but is
+  updated a few times. It's probably a good idea to use:
+    git grep SDK_REQUIRED_MODULES= -- configure.ac
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..2d85b47
--- /dev/null
@@ -0,0 +1,7947 @@
+xorg-server (2:1.15.1-0ubuntu2.6) trusty-proposed; urgency=medium
+
+  [ Laércio de Sousa ]
+  * Backport support for logind-based multiseat back to trusty. (LP: #1209008)
+
+  [ Maarten Lankhorst ]
+  * Re-enable support for rotation and transforms on gpu-screens with support.
+    - Allows re-enabling intel SNA rotation after fixing it. (LP: #1386620)
+  * Fix black screen when using qemu with cirrus vga.
+    - fb-24-depth.patch (LP: #1318119)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 03 Nov 2014 12:36:32 +0100
+
+xorg-server (2:1.15.1-0ubuntu2.5) trusty-security; urgency=medium
+
+  * SECURITY UPDATE: Dec 2014 security issues - additional fixes
+    - debian/patches/CVE-2014-8xxx/003[4567]*.patch: add additional
+      fixes not included in original pre-advisory bundle.
+
+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com>  Tue, 09 Dec 2014 17:12:42 -0500
+
+xorg-server (2:1.15.1-0ubuntu2.4) trusty-security; urgency=medium
+
+  * SECURITY UPDATE: Dec 2014 protocol handling security issues
+    - debian/patches/CVE-2014-8xxx/*.patch: patches from upstream to fix
+      a multitude of security issues, including a couple of pre-requisite
+      fixes from git.
+    - CVE-2014-8091
+    - CVE-2014-8092
+    - CVE-2014-8093
+    - CVE-2014-8094
+    - CVE-2014-8095
+    - CVE-2014-8096
+    - CVE-2014-8097
+    - CVE-2014-8098
+    - CVE-2014-8099
+    - CVE-2014-8100
+    - CVE-2014-8101
+    - CVE-2014-8102
+    - CVE-2014-8103
+  * This package does _not_ contain the changes from 2:1.15.1-0ubuntu2.3
+    in trusty-proposed.
+
+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com>  Mon, 08 Dec 2014 15:42:08 -0500
+
+xorg-server (2:1.15.1-0ubuntu2.1) trusty-proposed; urgency=medium
+
+  * Copy utopic package back to trusty.
+    - Fix ppc64el byte order. (LP: #1333422)
+      + xi-dont-copy-too-much.patch
+    - Fix valgrind issue with xi copying too much.
+      + xi-dont-copy-too-much.patch
+    - Fix crash related to suspend/shutdown. (LP: #1208473)
+      + mi-dont-process-disabled.patch
+    - Fix touch event history overflow.
+      + xi2-resize-touch.patch
+    - Fix switching to guest sessions. (LP: #1322212)
+      + Revive drm_device_keep_trying.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 02 Jul 2014 12:37:25 +0200
+
+xorg-server (2:1.15.1-0ubuntu6) utopic; urgency=medium
+
+  * ppc64el-endian-fix.patch: Fix PPC endian assumptions (LP: #1333422)
+
+ -- Adam Conrad <adconrad@ubuntu.com>  Mon, 23 Jun 2014 23:47:15 -0600
+
+xorg-server (2:1.15.1-0ubuntu5) utopic; urgency=low
+
+  * Add upstream patch to fix some valgrind issues.
+    - xi-dont-copy-too-much.patch
+  * Fix crash related to suspend/shutdown. (LP: #1208473)
+    - mi-dont-process-disabled.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 20 May 2014 11:32:41 +0200
+
+xorg-server (2:1.15.1-0ubuntu4) utopic; urgency=low
+
+  * Resize touch event history if the array is filled up.
+    - xi2-resize-touch.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 07 May 2014 13:52:59 +0200
+
+xorg-server (2:1.15.1-0ubuntu3) utopic; urgency=medium
+
+  * Revive the old drm_device_keep_trying.patch.
+    - Removing the call to get_drm_info fixes switching to guest sessions.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 28 Apr 2014 10:06:21 +0200
+
+xorg-server (2:1.15.1-0ubuntu2) trusty; urgency=medium
+
+  * Disable support for rotations and transforms
+    on gpu screens for now. (LP: #1308515)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 16 Apr 2014 10:14:39 +0200
+
+xorg-server (2:1.15.1-0ubuntu1) trusty; urgency=medium
+
+  * Merge from unreleased debian unstable.
+    - Unbreaks KDE desktop effects on IVB+. (LP: #1294666)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 14 Apr 2014 12:57:12 +0200
+
+xorg-server (2:1.15.1-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 14 Apr 2014 12:52:18 +0200
+
+xorg-server (2:1.15.0.901-1) unstable; urgency=medium
+
+  [ Robert Millan ]
+  * Add devd input backend for kFreeBSD, and use it instead of hal (closes:
+    #736765, #710196, #683833)
+
+  [ Julien Cristau ]
+  * New upstream release
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 31 Mar 2014 12:19:57 +0200
+
+xorg-server (2:1.15.0-1ubuntu7) trusty; urgency=medium
+
+  * Fix crash in RRCrtcDetachScanoutPixmap. (LP: #1280743)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 13 Mar 2014 13:10:52 +0100
+
+xorg-server (2:1.15.0-1ubuntu6) trusty; urgency=low
+
+  * Add a small patch to hopefully fix FTBFS on ppc64el.
+  * Add breaks/replaces on xserver-common-lts-* to fix upgrades from precise.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 13 Feb 2014 14:06:11 +0100
+
+xorg-server (2:1.15.0-1ubuntu5) trusty; urgency=medium
+
+  * Another no-change rebuild against latest Mir
+
+ -- Łukasz 'sil2100' Zemczak <lukasz.zemczak@canonical.com>  Wed, 12 Feb 2014 18:33:20 +0100
+
+xorg-server (2:1.15.0-1ubuntu4) trusty; urgency=low
+
+  * Only set RR caps that are appropriate to main/gpu screen. (LP: #1277014)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 10 Feb 2014 18:51:19 +0100
+
+xorg-server (2:1.15.0-1ubuntu3) trusty; urgency=low
+
+  * No-change rebuild against correct libgcrypt.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 06 Feb 2014 09:38:39 +0000
+
+xorg-server (2:1.15.0-1ubuntu2) trusty; urgency=medium
+
+  * No-change rebuild against latest Mir
+
+ -- Ricardo Salveti de Araujo <ricardo.salveti@canonical.com>  Tue, 04 Feb 2014 20:35:47 -0200
+
+xorg-server (2:1.15.0-1ubuntu1) trusty; urgency=low
+
+  * New upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 04 Feb 2014 15:45:00 +0000
+
+xorg-server (2:1.15.0-2) unstable; urgency=medium
+
+  [ Julien Cristau ]
+  * Bump debhelper compat level to 7.
+  * Upload to unstable.
+
+  [ Yaroslav Halchenko ]
+  * Adding xorg-server-source binary package to provide a tarball with
+    original (patched, autoreconfed) sources of the xserver (Closes:
+    #730552)
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 06 Feb 2014 16:14:15 +0100
+
+xorg-server (2:1.15.0-1) experimental; urgency=low
+
+  * New upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 06 Jan 2014 11:00:39 +0100
+
+xorg-server (2:1.14.99.904-2) experimental; urgency=medium
+
+  * Pass VERBOSE=1 to make check to make debugging test failures possible.
+  * Disable dri3 on kfreebsd.  xtrans doesn't enable fd passing there yet.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 14 Dec 2013 18:16:17 +0100
+
+xorg-server (2:1.14.99.904-1) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * New upstream release candidate.
+  * Update (build-)dependencies:
+    - bump x11proto-xext-dev, x11proto-gl-dev, xtrans-dev, libgl1-mesa-dev
+    - add x11proto-present-dev, x11proto-dri3-dev, libxshmfence-dev
+  * Enable dri3 (on !hurd) and present extensions.
+  * Point to http://www.debian.org/support instead of the uploader's email
+    address in the Xorg log.
+
+  [ Maarten Lankhorst ]
+  * Disable xorg-server's linux acpi and apm support.  Can only cause bugs.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 12 Dec 2013 12:11:14 +0100
+
+xorg-server (2:1.14.99.3-1) experimental; urgency=low
+
+  * New upstream snapshot.
+  * Drop patches applied upstream:
+    - 02_improve-posix-saved-ids-check.diff
+    - 04_hashtabletest-s390x.diff
+    - 10_Include-missing-selection-h.diff
+    - os-move-arpa-inet.h-for-any-win32-system.patch
+    - xfree86-hurd-include-hurd.h.patch
+  * Update build-deps:
+    - bump libx11-dev to 2:1.6 for _XEatDataWords
+    - require xcb bits for Xephyr
+    - xserver-xorg-dev depends on x11proto-xf86bigfont-dev
+  * Bump ABI versions (should have been done upstream, but hasn't yet).
+  * Stop building Xfbdev.
+  * Reduce noise from dh_install --list-missing by deleting some files from the
+    udeb build after make install.
+  * Run abibumpcheck on build instead of clean so it's done on a patched tree.
+  * Remove Drew and Cyril from Uploaders.
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 21 Oct 2013 23:46:34 +0200
+
+xorg-server (2:1.14.5-1ubuntu4) trusty; urgency=medium
+
+  * Build xserver-xorg-core-udeb on arm64 and ppc64el.
+
+ -- Colin Watson <cjwatson@ubuntu.com>  Mon, 03 Feb 2014 15:44:50 +0000
+
+xorg-server (2:1.14.5-1ubuntu3) trusty; urgency=low
+
+  * Add a workaround for a linker crash bug. (LP: #1266492)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 29 Jan 2014 16:13:36 +0100
+
+xorg-server (2:1.14.5-1ubuntu2) trusty; urgency=medium
+
+  * Don't build XMir on ppc64el.
+
+ -- Matthias Klose <doko@ubuntu.com>  Sun, 15 Dec 2013 22:42:40 +0100
+
+xorg-server (2:1.14.5-1ubuntu1) trusty; urgency=low
+
+  * Merge from released debian-unstable.
+  * Refresh xrandr-rroutputchanged-main.patch.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Fri, 13 Dec 2013 11:24:16 +0100
+
+xorg-server (2:1.14.5-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Fri, 13 Dec 2013 11:10:46 +0100
+
+xorg-server (2:1.14.4.901-0ubuntu2) trusty; urgency=low
+
+  * Re-apply security update again.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 10 Dec 2013 15:25:04 +0100
+
+xorg-server (2:1.14.4.901-0ubuntu1) trusty; urgency=low
+
+  * New upstream release with some optimus fixes.
+  * Include a patch to fix gpu screen output hotplugging. (LP: #1259561)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 10 Dec 2013 15:09:07 +0100
+
+xorg-server (2:1.14.4-1ubuntu2) trusty; urgency=low
+
+  * SECURITY UPDATE: unsafe use of xkb cache files
+    - debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch:
+      updated to not use xkb cache files in /tmp when running a non-root
+      server.
+    - CVE-2013-1056
+
+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com>  Fri, 06 Dec 2013 11:15:23 -0500
+
+xorg-server (2:1.14.4-1ubuntu1) trusty; urgency=low
+
+  * Merge released debian-unstable.
+  * Cherry-pick fix to sync code. (LP: #1238410)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 04 Dec 2013 13:54:02 +0100
+
+xorg-server (2:1.14.4-1) unstable; urgency=low
+
+  * New upstream release.
+  * Drop upstreamed patches.
+    - 02_improve-posix-saved-ids-check.diff
+    - 04_hashtabletest-s390x.diff
+    - 10_Include-missing-selection-h.diff
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 04 Dec 2013 13:09:36 +0100
+
+xorg-server (2:1.14.3-5ubuntu1) trusty; urgency=low
+
+  * Merge released debian-unstable to fix mesa-10 loading.
+  * Drop avoid-use-after-free.diff, upstreamed.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 25 Nov 2013 16:17:49 +0100
+
+xorg-server (2:1.14.3-5) unstable; urgency=low
+
+  * Cherry-pick a upstream commit to fix mesa-10 driver loading.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 25 Nov 2013 14:52:54 +0100
+
+xorg-server (2:1.14.3-3ubuntu4) trusty; urgency=low
+
+  * No-change rebuild for xmir to use the new Mir ABI.
+
+ -- Mathieu Trudel-Lapierre <mathieu-tl@ubuntu.com>  Mon, 28 Oct 2013 13:36:02 -0400
+
+xorg-server (2:1.14.3-3ubuntu3) trusty; urgency=low
+
+  * pixman-validate.patch: Do not render invalid trapezoids. (LP: #1197921)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 23 Oct 2013 12:11:27 +0200
+
+xorg-server (2:1.14.3-3ubuntu2) saucy-proposed; urgency=low
+
+  * avoid-use-after-free.diff: Fix CVE-2013-4396.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 15 Oct 2013 12:05:48 +0300
+
+xorg-server (2:1.14.3-3ubuntu1) saucy; urgency=low
+
+  * Merge from unreleased debian git.
+  * rrcrtc-brackets-are-hard.patch: Replace xf86-detach-scanout.patch
+    with this patch from Fedora. Should fix crashers on hybrid systems
+    (LP: #1210025)
+  * Drop include-selection-h.patch, not needed anymore.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Thu, 03 Oct 2013 15:30:22 +0300
+
+xorg-server (2:1.14.3-4) unstable; urgency=high
+
+  [ Timo Aaltonen ]
+  * rules: Drop defoma support from the font path. (Closes: #689233,
+    LP: #986061)
+
+  [ Julien Cristau ]
+  * Avoid use-after-free in dix/dixfonts.c: doImageText().  Addresses
+    CVE-2013-4396.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 05 Oct 2013 15:57:55 +0200
+
+xorg-server (2:1.14.3-3) unstable; urgency=low
+
+  * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 22 Sep 2013 16:32:19 +0200
+
+xorg-server (2:1.14.3-2) experimental; urgency=low
+
+  * Delete test-driver on clean.
+  * Add a couple patches to fix FTBFS on hurd (closes: #720736).  Thanks, Pino
+    Toscano!
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 20 Sep 2013 00:21:41 +0200
+
+xorg-server (2:1.14.3-1) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * Remove the Replaces: xdmx from xdmx-tools, that was before lenny.  That
+    change was done in the 1.10.x timeframe and then lost when moving to
+    1.11.x.
+
+  [ Michele Cane ]
+  * New upstream release.
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 15 Sep 2013 23:57:26 +0200
+
+xorg-server (2:1.14.2.901-2ubuntu7) saucy; urgency=low
+
+  * Make glx link against glapi for the dispatch table symbols. (LP: #1232000)
+  * Cherry pick a few related glx fixes from upstream.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 01 Oct 2013 13:30:59 +0200
+
+xorg-server (2:1.14.2.901-2ubuntu6) saucy; urgency=low
+
+  * xmir.patch: Drop vestigial libatomic-ops dependency, fixing
+    driver FTBFS.
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 26 Sep 2013 08:29:44 -0700
+
+xorg-server (2:1.14.2.901-2ubuntu5) saucy; urgency=low
+
+  * xmir.patch: Drop input on loss of focus. Fixes "I'm sending all my
+    passwords to IRC when I switch to a VT" with associated 
+    unity-system-compositor change. (LP: #1192843)
+  * xmir.patch: Add DPMS support (LP: #1193222)
+  * Drop os-use-libunwind-to-generate-backtraces.patch; this was not enabled
+    due to libunwind8-dev not shipping a pkg-config file. Now that it does,
+    this causes FTBFS on armhf.
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Tue, 24 Sep 2013 08:58:45 -0700
+
+xorg-server (2:1.14.2.901-2ubuntu4) saucy; urgency=low
+
+  * xmir.patch: Add XRandR support
+  * Bump serverminver for XMir API changes
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 29 Aug 2013 19:42:41 +1000
+
+xorg-server (2:1.14.2.901-2ubuntu3) saucy; urgency=low
+
+  * xmir.patch: Use the API we have, not the API we've documented
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 22 Aug 2013 15:18:55 +1000
+
+xorg-server (2:1.14.2.901-2ubuntu2) saucy; urgency=low
+
+  * xmir.patch: Update for new API
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 22 Aug 2013 14:23:40 +1000
+
+xorg-server (2:1.14.2.901-2ubuntu1) saucy; urgency=low
+
+  * Merge from released debian-experimental.
+  * Drop upstreamed prime patches.
+  * Refresh 228_autobind_gpu.patch.
+  * Pick up some more input fixes from upstream.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 14 Aug 2013 10:52:17 +0200
+
+xorg-server (2:1.14.2.901-2) experimental; urgency=low
+
+  * Use libbsd-overlay to get missing declarations on kfreebsd and fix FTBFS.
+    Require dpkg-dev 1.16.1.
+  * Also improve POSIX_SAVED_IDS check to work on kbsd.
+  * Link against libnettle.a, to unbreak the udeb (there's no libnettle udeb).
+  * Fix a test failure on 64bit big-endian (s390x, ppc64, sparc64).
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 03 Aug 2013 18:17:30 +0200
+
+xorg-server (2:1.14.2.901-1) experimental; urgency=low
+
+  * New upstream release
+
+  [ Maarten Lankhorst ]
+  * Bump minimum required abi, randr, dri2 and gl protos.
+  * Remove upstreamed patches.
+    - 02_Add-libnettle-as-option-for-sha1.diff
+    - 04_int10-fix-pci_device_read_rom-usage.diff
+    - 07_Revert-kinput-allocate-enough-space-for-null-charact.diff
+  * Bump x11proto-input-dev and libpixman-1-dev minimum versions.
+
+  [ Timo Aaltonen ]
+  * Refresh 02_Add-libnettle-as-option-for-sha1.diff.
+  * Remove 03_fix-panning.diff, upstream
+  * Refresh 04_int10-fix-pci_device_read_rom-usage.diff.
+  * Drop 09_EXA-Track...diff, upstream.
+  * control: Mark xvfb as M-A: foreign.
+  * control: Bump inputproto build-dep to 2.3.
+
+  [ Robert Hooker ]
+  * Update to a newer git snapshot, 7fe5e6dfa5c1e71
+  * Bump input ABI version in serverminver
+  * Bump libxi-dev build requirement to 2:1.6.99.1
+
+  [ Julien Cristau ]
+  * Merge sid branch up to 2:1.12.4-6.1.
+  * Drop old --disable-builddocs, --disable-xcalibrate configure options from
+    d/rules.
+  * Make build-deps match xserver-xorg-dev dependencies and configure checks.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 27 Jul 2013 13:18:28 +0200
+
+xorg-server (2:1.14.2-0ubuntu9) saucy; urgency=low
+
+  [ Maarten Lankhorst ]
+  * Fix crash in RRCrtcDetachScanoutPixmap.
+  * Add xmir module to xserver-xorg-core-dbg.
+  * Fix xf86DeleteDriver infinite loop. (LP: 1208715)
+
+  [ Christopher James Halse Rogers ]
+  * Fix damage reporting (LP: 1206744)
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Tue, 06 Aug 2013 16:11:47 +1000
+
+xorg-server (2:1.14.2-0ubuntu8) saucy; urgency=low
+
+  * Don't build XMir on AArch64.
+
+ -- Matthias Klose <doko@ubuntu.com>  Mon, 05 Aug 2013 15:51:01 +0200
+
+xorg-server (2:1.14.2-0ubuntu7) saucy; urgency=low
+
+  * Don't have the -dev package depending on libmirclient-dev on powerpc
+    as unavailable
+
+ -- Didier Roche <didrocks@ubuntu.com>  Mon, 05 Aug 2013 12:33:48 +0200
+
+xorg-server (2:1.14.2-0ubuntu6) saucy; urgency=low
+
+  * As we don't build XMir on PPC we should not try to build the
+    xserver-xorg-xmir package, either.
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Mon, 05 Aug 2013 19:09:47 +1000
+
+xorg-server (2:1.14.2-0ubuntu5) saucy; urgency=low
+
+  * rules,control: Restrict XMir build to !powerpc, as we don't build Mir there
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Mon, 05 Aug 2013 18:46:43 +1000
+
+xorg-server (2:1.14.2-0ubuntu4) saucy; urgency=low
+
+  * Add xmir.patch; First upload with XMir support.
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 01 Aug 2013 13:00:41 +1000
+
+xorg-server (2:1.14.2-0ubuntu3) saucy; urgency=low
+
+  * Oops, refresh xf86-detach-scanout, embarassing bug in the for check.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 30 Jul 2013 12:51:40 +0200
+
+xorg-server (2:1.14.2-0ubuntu2) saucy; urgency=low
+
+  * Add support for Aarch64.
+
+ -- Matthias Klose <doko@ubuntu.com>  Wed, 24 Jul 2013 14:24:25 +0200
+
+xorg-server (2:1.14.2-0ubuntu1) saucy; urgency=low
+
+  * New upstream release. (LP: #1156498)
+  * Remove upstreamed patch.
+    - xf86setdesired-hybrid.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 16 Jul 2013 09:36:06 +0200
+
+xorg-server (2:1.14.1-0ubuntu1) saucy; urgency=low
+
+  * Fix null pointer deref on logout. (LP: #1194343)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 11 Jul 2013 16:52:28 +0200
+
+xorg-server (2:1.14.1-0ubuntu0.8) saucy; urgency=low
+
+  * Use correct version for libxfixes3.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 03 Jul 2013 12:03:57 +0200
+
+xorg-server (2:1.14.1-0ubuntu0.7) saucy; urgency=low
+
+  * Add build-depends on recent enough libxi-dev and libxfixes-dev
+    for the new pointer barriers.
+  * Add breaks on old libxi6, libxfixes3, unity.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 03 Jul 2013 10:37:30 +0200
+
+xorg-server (2:1.14.1-0ubuntu0.6) saucy; urgency=low
+
+  * Add patch to fix nvidia regression.
+    - xf86-inactive-gpuscreen.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 17 Jun 2013 14:18:35 +0200
+
+xorg-server (2:1.14.1-0ubuntu0.5) saucy; urgency=low
+
+  * Add patch to fix device enumeration with nvidia drivers. (LP: #1190546)
+    - xf86-fixup-detection.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 13 Jun 2013 13:03:17 +0200
+
+xorg-server (2:1.14.1-0ubuntu0.4) raring; urgency=low
+
+  * Add patch to fix crash on hybrid systems during shutdown. (LP: #1185035)
+    - xf86-detach-scanout.patch
+  * Add patch to fix build error on saucy.
+    - include-selection-h.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 28 May 2013 16:13:24 +0200
+
+xorg-server (2:1.14.1-0ubuntu0.3) raring; urgency=low
+
+  * Add patch to fixup optimus again.
+    - xf86-dont-enable-gpuscreens.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 01 May 2013 09:38:59 +0200
+
+xorg-server (2:1.14.1-0ubuntu0.2) raring; urgency=low
+
+  * Add patch to run on outputless hybrid systems again.
+    - xf86setdesired-hybrid.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 29 Apr 2013 11:29:10 +0200
+
+xorg-server (2:1.14.1-0ubuntu0.1) raring; urgency=low
+
+  [ Timo Aaltonen ]
+  * Merge from unreleased debian git.
+  * 500_pointer_barrier_thresholds.diff: Dropped, implemented upstream.
+  * Dropped upstreamed patches:
+    165_man_xorg_conf_no_device_ident.patch
+    233-xf86events-valgrind.patch
+    236-use-fbdev-for-poulsbo-oaktrail-medfield.patch
+  * Dropped drm_device_keep_trying.patch, not needed anymore.
+
+  [ Bryce Harrington ]
+  * 157_check_null_modes.patch: Dropped, patch included upstream.
+  * 162_null_crtc_in_rotation.patch: Dropped, no longer relevant
+    (see LP: 139990)
+  * 167_nullptr_xisbread.patch: Dropped, fixed differently upstream.
+
+  [ Maarten Lankhorst ]
+  * Update to 1.14.0 release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 06 Mar 2013 14:49:21 +0100
+
+xorg-server (2:1.13.3-0ubuntu13) saucy; urgency=low
+
+  * Re-enable xf86-fixup-detection.patch.
+  * Add patch to fix nvidia regression.
+    - xf86-inactive-gpuscreen.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 17 Jun 2013 14:16:05 +0200
+
+xorg-server (2:1.13.3-0ubuntu12) saucy; urgency=low
+
+  * Disable xf86-fixup-detection.patch for now as it breaks PRIME
+    with nvidia.
+
+ -- Alberto Milone <alberto.milone@canonical.com>  Fri, 14 Jun 2013 17:21:16 +0200
+
+xorg-server (2:1.13.3-0ubuntu11) saucy; urgency=low
+
+  * Add patch to fix device enumeration with nvidia drivers. (LP: #1190546)
+    - xf86-fixup-detection.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 13 Jun 2013 13:00:58 +0200
+
+xorg-server (2:1.13.3-0ubuntu10) saucy; urgency=low
+
+  * Add patch to fix DPMS. (LP: #1184999)
+    - include-GPU-screens-in-DPMS-code.patch
+  * Add patch to fix crash on hybrid systems during shutdown. (LP: #1185035)
+    - xf86-detach-scanout.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 28 May 2013 16:12:12 +0200
+
+xorg-server (2:1.13.3-0ubuntu9) saucy; urgency=low
+
+  * Cherry-pick patch from 1.14 to fix DRI1 regression. (LP: #1083032)
+    - dri1-fix-dri1-startup-since-459c6da0f907ba33d733c7e6.patch
+
+ -- Tormod Volden <debian.tormod@gmail.com>  Sun, 12 May 2013 11:30:46 +0200
+
+xorg-server (2:1.13.3-0ubuntu8) saucy; urgency=low
+
+  * Fixup build error on saucy.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 08 May 2013 14:02:12 +0200
+
+xorg-server (2:1.13.3-0ubuntu7) saucy; urgency=low
+
+  * Add patch to fixup optimus again.
+    - xf86-dont-enable-gpuscreens.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Wed, 01 May 2013 10:35:55 +0200
+
+xorg-server (2:1.13.3-0ubuntu6) raring; urgency=low
+
+  * SECURITY UPDATE: input event leak via inactive VT
+    - debian/patches/CVE-2013-1940.patch: fix flush input to work with
+      Linux evdev devices in hw/xfree86/os-support/shared/posix_tty.c.
+    - CVE-2013-1940
+
+ -- Jamie Strandboge <jamie@ubuntu.com>  Wed, 17 Apr 2013 09:41:17 -0500
+
+xorg-server (2:1.13.3-0ubuntu5) raring; urgency=low
+
+  [ Bryce Harrington ]
+  * Add no-nv.patch:  Don't autoprobe -nv on linux.
+  * Refresh drm_device_keep_trying.patch (LP: #1161981)
+    - Set empty busid for usb devices
+    - Parse pci path more strictly.
+    - Make platform devices work correctly, try to obtain busid from
+      path if possible.
+    - Fallback if not possible (tegra).
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Mon, 08 Apr 2013 11:40:26 +0200
+
+xorg-server (2:1.13.3-0ubuntu4) raring; urgency=low
+
+  * Do not bother registering xv/xvmc on gpu screens.
+    - xfree86-no-xv-for-gpuscreens.patch
+  * Re-enable GLX on Xephyr. (LP: #1079096)
+    - xephyr-glx-register.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Tue, 26 Mar 2013 16:16:14 +0100
+
+xorg-server (2:1.13.3-0ubuntu3) raring; urgency=low
+
+  * Refresh autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch
+    - Unbind offload sink and render slave simultaneously.
+      This prevents a use-after-free bug.
+  * Add config-add-no-removal.patch (LP: #1157614)
+    - Do not call device_remove when a device is hotplugged.
+  * Refresh drm_device_keep_trying.patch
+    - There is no need for drm master here. This might
+      reopen LP #982889, but I do not think spinning here
+     :is the correct answer.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 21 Mar 2013 15:40:42 +0100
+
+xorg-server (2:1.13.3-0ubuntu2) raring; urgency=low
+
+  * Add patch to improve backtraces in the Xorg log.
+    - os-use-libunwind-to-generate-backtraces.patch
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 14 Mar 2013 16:12:16 +0100
+
+xorg-server (2:1.13.3-0ubuntu1) raring; urgency=low
+
+  * New upstream release.
+  * Drop patches applied upstream.
+    - 237_dix_save_touchpoint_last_coords_before_transform.patch
+    - randr-cleanup-provider-properly.patch
+  * Rework drm_device_keep_trying.patch (LP: #982889)
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Thu, 14 Mar 2013 08:41:51 +0100
+
+xorg-server (2:1.13.2-0ubuntu3) raring; urgency=low
+
+  * Add drm_device_keep_trying.patch: When kernel reports drm device is
+    not available, don't give up immediately, but keep retrying for a
+    little bit.  Fixes boot failures due to a race condition with plymouth
+    or the kernel.  Typical symptom is xserver error exit, "Cannot run in
+    framebuffer mode" and Xorg.0.log messages about "setversion 1.4
+    failed".
+    (LP: #982889)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 19 Feb 2013 07:58:24 -0800
+
+xorg-server (2:1.13.2-0ubuntu2) raring; urgency=low
+
+  * Restore selinux support now that audit has been promoted to main.
+
+ -- Adam Conrad <adconrad@ubuntu.com>  Sat, 09 Feb 2013 00:03:45 -0700
+
+xorg-server (2:1.13.2-0ubuntu1) raring; urgency=low
+
+  * New upstream release.
+  * control: Mark xvfb M-A: foreign.
+  * Refresh autobind patch from fedora, and cherry-pick some fixes from them for
+    reverse-optimus and hotplugging.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 29 Jan 2013 17:23:44 +0200
+
+xorg-server (2:1.13.1.901-0ubuntu2) raring; urgency=low
+
+  * Add 237_dix_save_touchpoint_last_coords_before_transform.patch:
+    Fix sensitive touch settings on Nexus 7 when input is transformed.
+    (LP: #1075415, #1076567, #1076627)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 22 Jan 2013 13:51:16 -0800
+
+xorg-server (2:1.13.1.901-0ubuntu1) raring; urgency=low
+
+  * Merge from unreleased debian git.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 08 Jan 2013 16:40:30 +0200
+
+xorg-server (2:1.13.0.902-0ubuntu1) raring; urgency=low
+
+  [ Timo Aaltonen ]
+  * Merge from unreleased debian git.
+  * Dropped upstream patches:
+    - 229_udev-fix.diff
+    - 231-scan-pci-after-probing-devices.patch
+    - 235-composite-tracking.patch
+    - 237-dix-set-the-device-transformation-matrix.patch
+
+  [ Maarten Lankhorst ]
+  * Dropped upstream patches:
+    - 230-fix-compat-output-selection.patch
+  * Merge 1.13.1.rc2 from unreleased debian git.
+  * Bump ABI_VIDEODRV_VERSION to 13.1
+    - xf86UpdateDesktopDimensions is newly exported for nvidia blob
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com>  Fri, 07 Dec 2012 09:14:37 +0100
+
+xorg-server (2:1.13.0-0ubuntu8) raring; urgency=low
+
+  * Revert the change to 500_pointer_barrier_thresholds.diff, causes
+    issues with unity launcher.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Mon, 19 Nov 2012 12:15:49 +0200
+
+xorg-server (2:1.13.0-0ubuntu7) raring; urgency=low
+
+  [ Maarten Lankhorst ]
+  * Add 233-xf86events-valgrind.patch to fix a xserver corruption
+    when acpid is stopped before Xorg is.
+    (LP: #1070481)
+  * Add 235-composite-tracking.patch to fix exa corruption.
+    (LP: #1010794)
+
+  [ Bryce Harrington ]
+  * Add 236-use-fbdev-for-poulsbo-oaktrail-medfield.patch: Never use Intel
+    driver on Poulsbo/Oaktrail/Medfield.  Thanks to Matthias Klumpp.
+    (LP: #1069031)
+  * Add 237-dix-set-the-device-transformation-matrix.patch: Fix pointer
+    jumping with absolute pointing device.  Initializes device
+    transformation matrix to an identity matrix.  Thanks to a7x.
+    (LP: #1041063)
+
+  [ Tim Lunn ]
+  * 500_pointer_barrier_thresholds.diff: Update to fix gaps above
+    barriers at edge of screen
+    (LP: #1073724)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 16 Nov 2012 11:37:26 -0800
+
+xorg-server (2:1.13.0-0ubuntu6) quantal; urgency=low
+
+  [ Timo Aaltonen ]
+  * patches/series: Reorganize our patches in categories in order to
+    make reviewing and rebasing easier.
+
+  [ Maarten Lankhorst ]
+  * add 232-xf86compatoutput-valgrind.patch to silence a valgrind error
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Mon, 08 Oct 2012 17:58:54 +0300
+
+xorg-server (2:1.13.0-0ubuntu5) quantal; urgency=low
+
+  * Update 228_autobind_gpu.patch to not crash when the device has no
+    randr provider. (LP: #1054051)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 25 Sep 2012 09:46:44 +0300
+
+xorg-server (2:1.13.0-0ubuntu4) quantal; urgency=low
+
+  * Add patches to fix issues with hybrid graphics:
+    - 230-fix-compat-output-selection.patch
+      Fix compat output selection when the GPU has no outputs
+      (LP: #1043458)
+    - 231-scan-pci-after-probing-devices.patch
+      Fix a race condition when dynamically powering off secondary GPU's
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Thu, 20 Sep 2012 14:34:45 +0300
+
+xorg-server (2:1.13.0-0ubuntu3) quantal; urgency=low
+
+  * Try again with the right hotplug patch.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Mon, 17 Sep 2012 16:24:29 +0300
+
+xorg-server (2:1.13.0-0ubuntu2) quantal; urgency=low
+
+  [ Maarten Lankhorst ]
+  * Add patch to autobind gpu's
+
+  [ Timo Aaltonen ]
+  * Add a patch to fix drm device hotplugging.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Mon, 17 Sep 2012 15:58:32 +0300
+
+xorg-server (2:1.13.0-0ubuntu1) quantal; urgency=low
+
+  * Merge from unreleased debian git.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Thu, 06 Sep 2012 12:25:51 +0300
+
+xorg-server (2:1.12.99.905-0ubuntu3) quantal; urgency=low
+
+  * debian/patches/111_armel-drv-fallbacks.patch:
+    - Now that the modesetting is part of xserver-xorg-video-all, enable the
+      arm specific drivers before modesetting is included, otherwise it'll
+      always be the default, even if we have arm-compatible drivers available
+      at the system (LP: #1041686)
+
+ -- Ricardo Salveti de Araujo <ricardo.salveti@linaro.org>  Sat, 25 Aug 2012 19:19:16 -0300
+
+xorg-server (2:1.12.99.905-0ubuntu2) quantal; urgency=low
+
+  * debian/patches/111_armel-drv-fallbacks.patch:
+    - Adding support for omapdrm based devices (using the omap xorg driver),
+      and make xorg to use the recently added platform probe functions, by
+      trying to probe the driver in case there's only one platform device
+      available and without a valid busID (case of Omap3 and Omap4 based
+      devices) (LP: #1040405)
+
+ -- Ricardo Salveti de Araujo <ricardo.salveti@linaro.org>  Thu, 23 Aug 2012 01:20:03 -0300
+
+xorg-server (2:1.12.99.905-0ubuntu1) quantal; urgency=low
+
+  [ Robert Hooker ]
+  * New upstream release snapshot (1.13-rc5)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Wed, 22 Aug 2012 18:29:26 +0300
+
+xorg-server (2:1.12.99.904-0ubuntu2) quantal; urgency=low
+
+  [ Maarten Lankhorst ]
+  * Remove disabled and unwanted patches
+    - 13_debian_add_xkbpath_env_variable.diff
+    - 200_randr-null.patch
+    - 217_revert_bgnonevisitwindow.patch
+    - 219_fedora-pointer-barriers.diff
+
+  [ Christopher James Halse Rogers ]
+  * Bump build-dep on libdrm to 2.4.38-0ubuntu2 and rebuild to pick up correct
+    libdrm2-udeb dependencies on xserver-xorg-core-udeb
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Tue, 21 Aug 2012 16:07:00 +1000
+
+xorg-server (2:1.12.99.904-0ubuntu1) quantal-proposed; urgency=low
+
+  [ Maarten Lankhorst ]
+  * New upstream release snapshot (on the way to 1.13).
+  * Remove 172_cwgetbackingpicture_nullptr_check.patch:
+    - Code is removed now that XAA is gone.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Wed, 08 Aug 2012 14:35:03 +0300
+
+xorg-server (2:1.12.99.904-1) UNRELEASED; urgency=low
+
+  * New upstream release snapshot (on the way to 1.13).
+  * Bump minimum required abi, randr, dri2 and gl protos.
+
+ -- Maarten Lankhorst <maarten.lankhorst@canonical.com>  Thu, 12 Jul 2012 13:54:50 +0200
+
+xorg-server (2:1.12.99.902-0ubuntu1) quantal-proposed; urgency=low
+
+  [ Maarten Lankhorst ]
+  * New upstream release snapshot (on the way to 1.13).
+    - Fixes QT5 app segfaults (LP: #1015292)
+  * Bump minimum required abi, randr, dri2 and gl protos.
+  * Refreshed patches to apply on x1.13
+  * Remove patches merged upstream:
+    - 508_device_off_release_buttons.patch
+    - 510-dix-return-early-from-DisableDevice-if-the-device-is.patch
+    - 511-dix-move-freeing-the-sprite-into-a-function.patch
+    - 512-dix-free-the-sprite-when-disabling-the-device.patch
+    - 513-dix-disable-non-sprite-owners-first-when-disabling-p.patch
+    - 514-Xi-drop-forced-unpairing-when-changing-the-hierarchy.patch
+    - 515-dix-disable-all-devices-before-shutdown.patch
+
+  [ Christopher James Halse Rogers ]
+  * debian/patches/100_rethrow_signals.patch:
+    - Drop, in favour of getting LightDM to pass -core to the server. This
+      upstream mechanism is significantly more reliable at dumping core in
+      my testing. We may later wish to improve this with some processing in
+      the apport hook.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 27 Jul 2013 13:18:28 +0200
+
+
+xorg-server (2:1.12.4-6.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * 10_Include-missing-selection-h.diff: Fix FTBFS with GCC 4.8. Include
+    selection.h in dix/window.c for the missing DeleteWindowFromAnySelections
+    function prototype. Patch by Gerardo Malazdrewicz (closes: #701372)
+
+ -- Michael Biebl <biebl@debian.org>  Thu, 25 Jul 2013 19:45:29 +0200
+
+xorg-server (2:1.12.4-6) unstable; urgency=low
+
+  * Touch: Fix duplicate TouchBegin selection with virtual devices
+    (closes: #696272)
+  * Xi: Don't check for TOUCH_END, it's never set
+  * Xi: Update the device after delivering the emulated pointer event
+    (closes: #702662)
+  * xf86: fix flush input to work with Linux evdev devices.  Addresses
+    CVE-2013-1940.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 17 Apr 2013 12:12:30 +0200
+
+xorg-server (2:1.12.4-5) unstable; urgency=low
+
+  * dmx: don't include dmx-config.h from xdmxconfig (closes: #495816)
+  * xfree86: bail on misformed acpi strings (closes: #696110)
+  * dix: don't allow overriding a grab with a different type of grab
+  * dix: Set focus field on XI2 crossing events (closes: #699907)
+  * Link against -lbsd on kfreebsd.  This gives us access to getpeereid(), and
+    makes MIT-SHM work with non-world-accessible segments (closes: #701469).
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 23 Feb 2013 15:37:44 +0100
+
+xorg-server (2:1.12.4-4) unstable; urgency=low
+
+  * Fix memory leak in libnettle sha1 patch.  Thanks, Yaakov Selkowitz!
+  * Cherry-pick from upstream:
+    - dix: set the device transformation matrix.  Avoids cursor jumps in
+      virtualbox (closes: #694598)
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 29 Nov 2012 19:27:31 +0100
+
+xorg-server (2:1.12.4-3) unstable; urgency=low
+
+  * Replace EXA patch from previous upload with the one actually applied
+    upstream (closes: #666468).
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 05 Nov 2012 10:44:58 +0100
+
+xorg-server (2:1.12.4-2) unstable; urgency=low
+
+  * Fix Xephyr command line option parsing (closes: #689246).  Thanks, Andrzej
+    Pietrasiewicz!
+  * Restore {in,out}{b,w,l} on ia64 (closes: #685750).  Thanks, Stephan
+    Schreiber!
+  * EXA: Fall back earlier and more thoroughly from exaGlyphs (closes:
+    #666468).  Patch by Michel Dänzer stolen from upstream bugzilla.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 24 Oct 2012 16:46:48 +0200
+
+xorg-server (2:1.12.4-1) unstable; urgency=low
+
+  * New upstream stable release.
+  * int10: fix pci_device_read_rom usage (closes: #686153).  Thanks, Stephan
+    Schreiber!
+  * Revert 'Unload submodules' (closes: #686152).  Seems to introduce a
+    regression, let's try that again later.  Thanks, Stephan Schreiber!
+  * Revert "fb: reorder Bresenham error correction to avoid overshoot".  Fixes
+    regression introduced in 1.12.3.902 (fdo#54168, closes: #688908)
+  * Add conflicts against obsolete evtouch input driver (hopefully closes:
+    #687268)
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 30 Sep 2012 12:47:00 +0200
+
+xorg-server (2:1.12.3.902-1) unstable; urgency=low
+
+  * New upstream release candidate
+    + glx: Free DRI2 drawable reference to destroyed GLX drawable
+      (closes: #681265, #674668)
+    + dix: make sure the mask is set for emulated scroll events
+      (closes: #684051)
+  * 03_fix-panning.diff: disable cursor confinement when panning is enabled
+    (closes: #643693)
+  * Video ABI bumped to 12.1, serverminver to 2:1.12.3.901.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 21 Aug 2012 21:35:25 +0200
+
+xorg-server (2:1.12.3-1) unstable; urgency=low
+
+  * New upstream release.
+  * Install /var/lib/xkb/README.compiled in xserver-common.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 18 Jul 2012 08:36:57 +0200
+
+xorg-server (2:1.12.1.902-1ubuntu1) quantal-proposed; urgency=medium
+
+  [ Maarten Lankhorst ]
+  * Refresh patches to apply on x-server 1.12
+    - patch-x-indent.sh from xorg-pkg-tools was used to redo coding style
+  * Deleted following patches because they have been committed upstream
+    - 224_return_BadWindow_not_BadMatch.diff
+    - 225_non-root_config_paths.patch
+    - 505_query_pointer_touchscreen.patch
+    - 506_touchscreen_pointer_emulation_checks.patch
+    - 507_touchscreen_fixes.patch
+  * Non-trivial refresh of 500_pointer_barrier_thresholds.diff, based on 
+    xorg-edgers
+  * Rest was refreshed with patch-x-indent.sh to survive coding style changes
+  * Add upstream patches for proper device disabling:
+    - 510-dix-return-early-from-DisableDevice-if-the-device-is.patch
+    - 511-dix-move-freeing-the-sprite-into-a-function.patch
+    - 512-dix-free-the-sprite-when-disabling-the-device.patch
+    - 513-dix-disable-non-sprite-owners-first-when-disabling-p.patch
+    - 514-Xi-drop-forced-unpairing-when-changing-the-hierarchy.patch
+    - 515-dix-disable-all-devices-before-shutdown.patch
+
+  [ Bryce Harrington ]
+  * Drop 209_add_legacy_bgnone_option.patch: lightdm and other *dm's have
+    switched to the new standard -background option.  No need to continue
+    providing the legacy -nr synonym.
+  * Drop 201_report-real-dpi.patch:  Commented out in series.
+  * Drop 198_nohwaccess.patch: Rootless-X no longer a development focus
+    for us; the patch would need reworked anyway to provide proper
+    support.
+  * Drop 166_nullptr_xinerama_keyrepeat.patch: Fixed differently upstream
+    in commit 24e682d0, as verified by original reporter.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 04 Jun 2012 19:12:23 -0700
+
+xorg-server (2:1.12.1.902-1) unstable; urgency=medium
+
+  [ Julien Cristau ]
+  * xvfb-run: kill Xvfb when the script dies.
+  * xvfb-run: instead of waiting 3 seconds and hoping that's enough for Xvfb
+    to come up (and waiting 2.9 seconds too many in the general case), tell it
+    to send us SIGUSR1 when it's ready to accept connections.  This reduces
+    "xvfb-run -- xterm -e true" from ~3.2s to ~0.4s on a quick test.
+  * xvfb-run: fix xauth handling; setting XAUTHORITY when starting an X server
+    isn't actually useful, we need to use the -auth command-line parameter
+    instead.  Somehow this seems to have been broken all these years and
+    nobody noticed...
+
+  [ Cyril Brulebois ]
+  * New upstream release candidate for the 1.12 stable branch:
+    - Bring the usual lot of stability fixes.
+    - Fix segfault on server shutdown (Closes: #671812).
+    - Refactor logging, fixing a format string vulnerability which could lead
+      to a denial of service (“only”, thanks to the fortified sources). This
+      is CVE-2012-2118 (Closes: #673148).
+  * Bump severity to “medium” for those two important fixes.
+
+ -- Cyril Brulebois <kibi@debian.org>  Sun, 20 May 2012 10:52:52 +0200
+
+xorg-server (2:1.12.1-2) unstable; urgency=low
+
+  * Merge from server-1.12-branch up to 22a1953c4a to get:
+    - many XI 2.2 fixes.
+    - “os: make timers signal-safe”; fixing infinite loops with the
+      synaptics tap handling code.
+
+ -- Cyril Brulebois <kibi@debian.org>  Mon, 07 May 2012 01:46:16 +0200
+
+xorg-server (2:1.12.1-1) unstable; urgency=low
+
+  * New upstream release.
+  * Upload to unstable.
+
+ -- Cyril Brulebois <kibi@debian.org>  Tue, 01 May 2012 01:56:32 +0200
+
+xorg-server (2:1.12.0.902-1) experimental; urgency=low
+
+  * New upstream release candidate (1.12.1 RC2).
+  * Refresh patches, yay for automated re-indenting…
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 11 Apr 2012 19:31:09 +0000
+
+xorg-server (2:1.12.0-1) experimental; urgency=low
+
+  * New upstream release.
+  * Bump x11proto-input-dev in Build-Depends and Depends.
+
+ -- Cyril Brulebois <kibi@debian.org>  Mon, 05 Mar 2012 11:18:41 +0100
+
+xorg-server (2:1.11.99.902-1) experimental; urgency=low
+
+  * New upstream release candidate (1.12 RC2):
+    - Fix FTBFS on ia64 and mips*.
+  * Bump x11proto-input-dev build-dep.
+
+ -- Cyril Brulebois <kibi@debian.org>  Thu, 02 Feb 2012 03:15:00 +0100
+
+xorg-server (2:1.11.99.901-1) experimental; urgency=low
+
+  * New upstream release candidate (1.12 RC1).
+  * Bump input ABI and serverminver again.
+  * Bump x11proto-input-dev build-dep/dep.
+
+ -- Cyril Brulebois <kibi@debian.org>  Fri, 30 Dec 2011 00:01:35 +0100
+
+xorg-server (2:1.11.99.2-1) experimental; urgency=low
+
+  * New upstream snapshot.
+  * Bump input ABI and serverminver again.
+
+ -- Cyril Brulebois <kibi@debian.org>  Tue, 20 Dec 2011 11:39:51 +0100
+
+xorg-server (2:1.11.99.1-1) experimental; urgency=low
+
+  * New upstream release snapshot (on the way to 1.12).
+  * Bump libpciaccess-dev, x11proto-input-dev build-deps.
+  * Update xserver-xorg-dev's dependencies:
+    - Add libpixman-1-dev.
+    - Bump x11proto-input-dev.
+  * Update serverminver with new server and ABI versions.
+  * Drop patches (merged upstream):
+    - 07-xfree86-fix-build-with-xv-disabled.diff
+    - 15-nouveau.diff
+
+ -- Cyril Brulebois <kibi@debian.org>  Thu, 15 Dec 2011 18:49:10 +0100
+
+xorg-server (2:1.11.4-0ubuntu11) quantal; urgency=low
+
+  * Release buttons when device is disabled on suspend (LP: #968845)
+    - Add temporary patch 508_device_off_release_buttons.patch from upstream
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Sat, 05 May 2012 13:17:34 -0700
+
+xorg-server (2:1.11.4-0ubuntu10.1) precise-proposed; urgency=low
+
+  [ Bryce Harrington ]
+  * Enable 227_null_ptr_midispcur.patch to apply
+
+  [ Chase Douglas ]
+  * Update to xserver 1.12.1 for the input stack
+  * Drop patches merged upstream in 1.12.1:
+    - 501_touch_accept_end.patch
+    - 502_indirect_touch_window_set.patch
+    - 503_fix_mouse_warp.patch
+    - 504_implement_passive_touch_ungrab.patch
+  * Fix patch 506_touchscreen_pointer_emulation_checks.patch after upstream
+    review
+  * Fix various touchscreen issues (LP: #974887)
+    - Add temporary patch 506_touchscreen_fixes.patch, which is a combination of
+      multiple upstream patches
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Thu, 19 Apr 2012 12:34:54 -0700
+
+xorg-server (2:1.11.4-0ubuntu10) precise; urgency=low
+
+  * Fix touchscreen pointer emulation (LP: #949791)
+    - Add temporary patch 506_touchscreen_pointer_emulation_checks.patch
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 04 Apr 2012 16:53:33 -0700
+
+xorg-server (2:1.11.4-0ubuntu9) precise; urgency=low
+
+  * Report button press when touchscreen touch is active (LP: #972985)
+    - Add temporary patch 505_query_pointer_touchscreen.patch
+    - Fixes some compiz/unity touchscreen issues
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Tue, 03 Apr 2012 19:04:01 -0700
+
+xorg-server (2:1.11.4-0ubuntu8) precise; urgency=low
+
+  [ Chase Douglas ]
+  * Fix crash at startup due to input option abi break (LP: #931397)
+    - Revert two commits from upstream 1.12 input stack
+
+  [ Bryce Harrington ]
+  * debian/patches/227_null_ptr_midispcur.patch:
+    - Check for NULL pointer before dereferencing pointer from
+      miGetDCDevice.  Fixes crash after connecting a bluetooth keyboard.
+      (LP: #930936)
+
+  [ Chase Douglas ]
+  * Fix mouse warping and clipping (LP: #948938)
+    - Add temporary patch 503_fix_mouse_warp.patch
+  * Implement passive touch ungrab (LP: #968726)
+    - Add temporary patch 503_implement_passive_touch_ungrab.patch
+  * Bump lintian standards to 3.9.3
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Thu, 29 Mar 2012 18:09:19 -0700
+
+xorg-server (2:1.11.4-0ubuntu7) precise; urgency=low
+
+  * debian/patches/111_armel-drv-fallbacks.patch:
+    - Avoid loading the driver to test if it's available. Xorg will later load
+      and validate the module, and if it's already loaded it'll trigger an
+      error and invalidate the driver (LP: #959928)
+
+ -- Ricardo Salveti de Araujo <ricardo.salveti@linaro.org>  Tue, 20 Mar 2012 02:09:18 -0300
+
+xorg-server (2:1.11.4-0ubuntu6) precise; urgency=low
+
+  * debian/patches/500_pointer_barrier_thresholds.diff:
+    - Don't try to send events from the context of the SIGIO handler.  That
+      leads to the dark side, or at least to server freezes when trying to
+      reveal the launcher in Unity (LP: #946954).  May also fix other seemingly
+      random X server crashes.
+    - Add build-time tests to make check for barrier behaviour.  These are
+      disabled, pending gtest, xorg-gtest, and xserver-xorg-video-dummy MIRs.
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Fri, 09 Mar 2012 19:16:02 +1100
+
+xorg-server (2:1.11.4-0ubuntu5) precise; urgency=low
+  * Update to 1.12 input stack 
+  * Drop input patches that have been merged upstream:
+    - 600-Revert-dix-deduplicate-callers-of-DeliverDeviceEvent.patch
+    - 601-Store-window-pointer-in-touch-listener-record.patch
+    - 602-Factor-out-TouchEnd-generation-and-delivery.patch
+    - 603-Export-TouchEventRejected-as-TouchRejected.patch
+    - 604-Move-AllowTouch-to-dix-touch.c-and-rename-to-TouchAc.patch
+    - 605-Check-for-proper-window-ID-when-processing-touch-all.patch
+    - 606-Implement-early-touch-reject.patch
+    - 607-Implement-touch-early-accept.patch
+    - 608-dix-fix-an-out-of-memory-crash.patch
+    - 609-Xi-handle-new-XIAllowEvents-request-in-inputproto-2..patch
+    - 610-Fix-scrolling.patch
+    - 611-Fix-touch-punt-crash.patch
+    - 612-Fix-vcp-touches-corruption.patch
+    - 613-Keep-vcp-touch-class.patch
+  * Fix indirect touch grab handling (LP: #929408)
+    - Add temporary patch 501_touch_accept_end.patch
+    - Add temporary patch 502_indirect_touch_window_set.patch
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 07 Mar 2012 15:36:20 -0800
+
+xorg-server (2:1.11.4-0ubuntu4) precise; urgency=low
+
+  * debian/patches/500_pointer_barrier_thresholds.diff:
+    - Make the velocity calculation more robust on screen edges.  Fixes reveal
+      behaviour on nVidia 295.20 driver, which now clamps the pointer to the
+      visible screen area. (LP: #937792)
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Tue, 21 Feb 2012 17:04:41 +1100
+
+xorg-server (2:1.11.4-0ubuntu3) precise; urgency=low
+
+  * Fix touch class memory corruption
+    - Add 612-Fix-vcp-touches-corruption.patch
+    - Add 613-Keep-vcp-touch-class.patch
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Mon, 13 Feb 2012 15:54:04 -0800
+
+xorg-server (2:1.11.4-0ubuntu2) precise; urgency=low
+
+  * Fix crash when punting a touch to a non-existent owner
+    - Add 611-Fix-touch-punt-crash.patch
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Mon, 13 Feb 2012 12:10:02 -0800
+
+xorg-server (2:1.11.4-0ubuntu1) precise; urgency=low
+
+  [ Chase Douglas ]
+  * Allow for non-root config paths so xorg-gtest can be run without root
+    - Add 225_non-root_config_paths.patch backported from upstream
+
+  [ Alberto Milone]
+  * debian/patches/226_fall_back_to_autoconfiguration.patch:
+    - Fall back to autoconfiguration for graphics drivers in some cases
+      instead of letting X fail when configuration files are available.
+
+  [ Chase Douglas ]
+  * Update to 1.11.99.902 input stack
+  * Update to 1.11.4 for everything else
+  * Drop input patches that have been merged upstream:
+    - 220_dont_scale_indirect.patch
+    - 221_pointer_motion_update_fix.patch
+    - 222_touch_valuators_absolute.patch
+    - 223_indirect_touch_x_y_valuators.patch
+  * Add reviewed input patches that have not been merged upstream yet:
+    - 600-Revert-dix-deduplicate-callers-of-DeliverDeviceEvent.patch
+    - 601-Store-window-pointer-in-touch-listener-record.patch
+    - 602-Factor-out-TouchEnd-generation-and-delivery.patch
+    - 603-Export-TouchEventRejected-as-TouchRejected.patch
+    - 604-Move-AllowTouch-to-dix-touch.c-and-rename-to-TouchAc.patch
+    - 605-Check-for-proper-window-ID-when-processing-touch-all.patch
+    - 606-Implement-early-touch-reject.patch
+    - 607-Implement-touch-early-accept.patch
+    - 608-dix-fix-an-out-of-memory-crash.patch
+    - 609-Xi-handle-new-XIAllowEvents-request-in-inputproto-2..patch
+    - 610-Fix-scrolling.patch (LP: #925785)
+  * Bump deps on x11proto-input-dev to 2.1.99.6
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Fri, 10 Feb 2012 16:27:25 -0800
+
+xorg-server (2:1.11.3-0ubuntu10) precise; urgency=low
+
+  * Drop 214_glx_dri_searchdirs.patch, drisearchdirs is no longer
+    exported in mesa's dri.pc because of multiarch and the only consumer
+    (dri-alternates) is no longer used.
+
+ -- Robert Hooker <sarvatt@ubuntu.com>  Thu, 02 Feb 2012 12:08:55 -0500
+
+xorg-server (2:1.11.3-0ubuntu9) precise; urgency=low
+
+  * debian/patches/500_pointer_barrier_thresholds.diff:
+    - Implement proposed XFIXES 6.0 protocol.  This protocol is subject to
+      change, use at own risk!
+  * debian/control:
+    - Bump build-dep on x11proto-fixes to pick up new protocol definition
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Fri, 27 Jan 2012 20:05:42 +1100
+
+xorg-server (2:1.11.3-0ubuntu8) precise; urgency=low
+
+  * debian/patches/224_return_BadWindow_not_BadMatch.diff:
+    - Fix the error values of a whole slew of window-related calls.
+      Fixes some gnome-settings-daemon aborts in XLib (LP: #903973)
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Mon, 23 Jan 2012 16:09:29 +1100
+
+xorg-server (2:1.11.3-0ubuntu7) precise; urgency=low
+
+  * Fixes for relative devices
+    - Add 220_dont_scale_indirect.patch
+    - Add 221_pointer_motion_update_fix.patch
+    - Add 222_touch_valuators_absolute.patch
+    - Add 223_indirect_touch_x_y_valuators.patch
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Thu, 19 Jan 2012 16:23:28 -0800
+
+xorg-server (2:1.11.3-0ubuntu6) precise; urgency=low
+
+  * Bump Build-Depends on x11proto-input-dev to 2.1.99.5
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Tue, 17 Jan 2012 22:22:57 +0100
+
+xorg-server (2:1.11.3-0ubuntu5) precise; urgency=low
+
+  * Add Breaks clause for XInput changes
+    - qt4-x11 < 4:4.8.0-1ubuntu2 (crashes due to XI ABI change)
+    - utouch-geis < 2.2.3 (infinite loop if utouch XCB backend is unavailable)
+    - utouch-frame < 2.1.0 (crashes due to XI ABI change)
+    - unity < 5.0.0 (crashes if utouch stack is unavailable)
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Tue, 17 Jan 2012 22:03:35 +0100
+
+xorg-server (2:1.11.3-0ubuntu4) precise; urgency=low
+
+  * Merge in input changes from upstream master through commit 954bb99
+  * Remove temporary patch 220_grab_event_time.patch
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Tue, 17 Jan 2012 19:52:04 +0100
+
+xorg-server (2:1.11.3-0ubuntu3) precise; urgency=low
+
+  * Add temporary patch for fixing grab time bug
+    - Add 220_grab_event_time.patch
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 11 Jan 2012 07:41:04 -0800
+
+xorg-server (2:1.11.3-0ubuntu2) precise; urgency=low
+
+  * Merge in input changes from upstream master through commit 8722ad6
+  * Remove temporary patch 220_test-loop.patch, merged upstream
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Tue, 10 Jan 2012 10:48:31 +0100
+
+xorg-server (2:1.11.3-0ubuntu1) precise; urgency=low
+
+  * New upstream bugfix release
+  * Merge in input changes from upstream master through commit e7df42a
+  * Bump input ABI
+  * Bump x11proto-input-dev build dependency version
+  * Add temporary patch for fixing a test case loop
+    - Add 220_test-loop.patch
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Thu, 22 Dec 2011 12:11:39 -0800
+
+xorg-server (2:1.11.2.902-1ubuntu1) precise; urgency=low
+
+  * Drop prototype XI multitouch patches
+  * Merge in input changes from upstream master through commit 7da7aa9
+  * Bump input ABI
+  * Refresh patches
+    - Drop 210_pixman_null_ptr_check.patch, merged upstream
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Wed, 14 Dec 2011 16:06:37 -0800
+
+xorg-server (2:1.11.2.902-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * New upstream release candidate (1.11.3 RC2)
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 10 Dec 2011 22:36:42 +0100
+
+xorg-server (2:1.11.2.901-1) unstable; urgency=low
+
+  * New upstream release candidate (1.11.3 RC1):
+    - As usual: Fixes for various crashes and correctness issues.
+    - In particular: Fix for crash when starting a game (in wine) twice
+      (Closes: #637448).
+    - Also: Fix crashes with server regeneration (Closes: #649420).
+  * Add some lintian overrides:
+    - xserver-xorg-core: breaks-without-version against virtual packages
+      is perfectly OK.
+  * Don't forget to ship xorg.conf.d(5) in xserver-xorg-core.
+
+ -- Cyril Brulebois <kibi@debian.org>  Tue, 29 Nov 2011 17:04:09 +0100
+
+xorg-server (2:1.11.1.902-1) unstable; urgency=low
+
+  * New upstream release candidate (1.11.2 RC2):
+    - Fixes for various crashes and correctness issues.
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 02 Nov 2011 11:10:03 +0100
+
+xorg-server (2:1.11.1.901-2) unstable; urgency=high
+
+  * Merge from upstream to get CVEs fixed:
+    - Fix CVE-2011-4028: File disclosure vulnerability.
+    - Fix CVE-2011-4029: File permission change vulnerability.
+  * Set urgency to “high” accordingly.
+
+ -- Cyril Brulebois <kibi@debian.org>  Thu, 20 Oct 2011 15:04:53 +0200
+
+xorg-server (2:1.11.1.901-1) unstable; urgency=low
+
+  * New upstream release candidate (1.11.2 RC1)
+    + Disable check of double-aligned in test/input.c on Renesas SH
+      (closes: #636673)
+  * Use dpkg-buildflags to enable hardening with recent dpkg.
+  * Enable PIE with DEB_BUILD_MAINT_OPTIONS, but add -Bsymbolic to LDFLAGS to
+    reduce performance loss from PIE.
+  * Pass --disable-silent-rules to configure.
+  * Drop dh_testroot from clean target.
+  * Add dummy build-{arch,indep} targets depending on build.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 15 Oct 2011 19:05:41 +0200
+
+xorg-server (2:1.11.1-1) unstable; urgency=high
+
+  [ Cyril Brulebois ]
+  * Bump glproto dependency for xserver-xorg-dev (Closes: #639651).
+  * Set urgency to “high” since there were no issues other than the libwfb
+    one (see below) in the last 4 weeks.
+
+  [ Julien Cristau ]
+  * New upstream bugfix release
+    - belatedly bump extension ABI major
+    - add missing fbFoo → wfbFoo renames for libwfb.so, fixing issues with the
+      nvidia driver (closes: #641344)
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 24 Sep 2011 11:23:17 +0200
+
+xorg-server (2:1.11.0-1ubuntu1~prep1) oneiric; urgency=low
+
+  * Merge from Debian experimental.  Remaining Ubuntu changes
+    - Fill in later
+  * Drop all XI2.1 multitouch patches, pending Chase's rework.
+  * 217_revert_bgnonevisitwindow.patch:
+  * 219_fedora-pointer-barriers.diff:
+    - Drop; included in the new upstream release.
+
+ -- Christopher James Halse Rogers <chris@cooperteam.net>  Sat, 10 Sep 2011 21:26:49 -0700
+
+xorg-server (2:1.11.0-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * Make xvfb, xnest, xserver-xephyr and xserver-xfbdev provide the xserver
+    virtual package again.
+
+  [ Cyril Brulebois ]
+  * New upstream release:
+    - Fix assertion failure when calling dixSetPrivate (Closes: #632549).
+      Thanks, Mohammed Sameer!
+    - Fix memcpy abuse in the fb layer (Closes: #626682).
+
+ -- Cyril Brulebois <kibi@debian.org>  Sun, 28 Aug 2011 12:53:06 +0200
+
+xorg-server (2:1.10.99.901+git20110731-1) experimental; urgency=low
+
+  [ Cyril Brulebois ]
+  * New upstream release candidate.
+  * Bump serverminver, as well as input and video ABI.
+  * Adapt 15-nouveau.diff to cope with the glxdricommon-ification of
+    GLX probing. Nouveau users might still see an error (EE) mentioning
+    the fallback to software rendering.
+  * Bump pixman build-dep/dep to 0.21.8.
+  * Bump xutils-dev build-dep for new macros.
+  * Drop libglib2.0-dev build-dep, no longer needed for unit tests.
+  * Bump x11proto-fixes-dev build-dep for pointer barriers support.
+
+  [ Julien Cristau ]
+  * Update to git HEAD.
+    + DIX: Set backgroundState correctly for root window (Closes: #632134)
+  * Bump xproto, dri2proto and glproto build-dependencies.
+  * Merge packaging changes from the 1.10.x branch:
+    + Bump libgl1-mesa-dri versioned Recommends to 7.10.2-4, to lower the
+      odds of having a server built against multiarched mesa, installed
+      along a pre-multiarch mesa. The Breaks in mesa packages take care of
+      the other way round already.
+    + And since the server's binNMU managed to migrate to testing way too
+      early, add a Breaks against pre-multiarch libgl1-mesa-dri and
+      libgl1-mesa-dri-experimental.
+    + Bump Standards-Version to 3.9.2 (no changes).
+    + Add Breaks on drivers abandoned between lenny and squeeze.  This helps
+      apt decide to remove them instead of removing all of X.  Thanks, David
+      Kalnischkies!
+  * Drop obsolete 20-workaround-36986.diff.
+  * Fix patch stamp dependency.
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 31 Jul 2011 22:15:07 +0200
+
+xorg-server (2:1.10.4-1ubuntu1) oneiric; urgency=low
+
+  [ Christopher James Halse Rogers ]
+  * Drop i8xx-disablement patch.  2.6.39 and later kernels contain a patch
+    which alledgedly fixes the cache-incoherency problems. (LP: #817814)
+
+  [ Ricardo Salveti de Araujo ]
+  * debian/patches/112_armel-pvr-drv.patch:
+    - Include support for the pvr driver available on OMAP 4 (LP: #828494)
+
+  [ Timo Aaltonen ]
+  * Merge from Debian unstable.
+    - Fixes Xephyr assert failure in dixGetPrivateAddr (LP: #821090)
+  * debian/rules: Modify the patch stampdir creation.
+  * Update patch 500_xi2.1.patch to apply.
+  * Refresh patches.
+  * debian/rules: Add PATH for the xvfb-run check, otherwise Xvfb is not found.
+  * debian/rules: Shift the xvfb-run test to be run later, to ensure that the
+    binaries are installed.
+
+  [ Bryce Harrington ]
+  * debian/rules: Add check target invoking xvfb-run to test that it works
+  * debian/control: Add build dependency on xauth, required by xvfb-run
+
+  [ Chase Douglas ]
+  * Add fixes for touch grab handling, courtesy of Carlos Garnacho
+    - 505_Xi_ensure_replayed_touch_events_have_devices.patch
+    - 506_Xi_ensure_touch_events_update_currentTime.patch
+    - 507_dix_Ensure_touch_events_are_delivered_to_next_client.patch
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 09 Sep 2011 14:13:07 +0300
+
+xorg-server (2:1.10.4-1) unstable; urgency=low
+
+  [ Timo Aaltonen ]
+  * New upstream release.
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 24 Aug 2011 10:44:42 +0200
+
+xorg-server (2:1.10.3-1) unstable; urgency=medium
+
+  [ Cyril Brulebois ]
+  * New upstream release (with just a version bump).
+  * Remove the Replaces: xdmx from xdmx-tools, that was before lenny.
+  * Add a Breaks: libgl1-mesa-dri-no-multiarch, to handle upgrades from
+    squeeze-backports (without multiarch) to wheezy (with multiarch).
+  * Set urgency to “medium” to speed things up. Migration to testing is
+    a prerequisite for squeeze backports.
+
+  [ Julien Cristau ]
+  * Merge packaging changes lost from the 1.7 (squeeze) branch:
+    + Add Breaks on drivers abandoned between lenny and squeeze.  This helps
+      apt decide to remove them instead of removing all of X.  Thanks, David
+      Kalnischkies!
+    + Set default xkb rules to evdev on linux, to work around a wrong default in
+      configure.ac and an Xorg issue where it reverts to the default on reset.
+      Thanks to Bastian Blank for the report.
+
+ -- Cyril Brulebois <kibi@debian.org>  Sun, 07 Aug 2011 19:35:07 +0200
+
+xorg-server (2:1.10.2.902-1ubuntu3) oneiric; urgency=low
+
+  * debian/patches/220_xi21_always_deliver_raw_events.diff:
+    - Backport patch from the mailing list to deliver raw events regardless of
+      grab state.  Bon appétit, DX!
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Mon, 11 Jul 2011 10:03:26 +1000
+
+xorg-server (2:1.10.2.902-1ubuntu2) oneiric; urgency=low
+
+  [ Bryce Harrington ]
+  * rules:  patch needs to depend on stampdir, else it doesn't get created,
+    and 'debian/rules patch' malfunctions.
+
+  [ Chase Douglas ]
+  * Fix event handling when neither X nor Y coordinates are set (LP: #806256)
+    - Added 504_fix_no_coords.patch
+
+  [ Christopher James Halse Rogers ]
+  * rules: Add both /usr/lib/xorg/extra-modules and
+    /usr/lib/$MULTIARCH/xorg/extra-modules for extra modules.
+    Fixes GLX for the proprietary drivers after a mesa upgrade (LP: #807209)
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Fri, 08 Jul 2011 13:16:59 +1000
+
+xorg-server (2:1.10.2.902-1ubuntu1) oneiric; urgency=low
+
+  * Merge from Debian unstable. (LP: #441653)
+    - Update 500_xi2.1.patch to apply.
+    - Drop patch 218_randr-check-rotated-virtual-size-limits-correctly.diff,
+      fixed upstream.
+  * Update the crtc confinement patch with one that should work, with
+    further fixes from upstream. (LP: #389519)
+  * Dropped a bunch of old Breaks from xserver-xorg-core.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 05 Jul 2011 16:22:23 +0300
+
+xorg-server (2:1.10.2.902-1) unstable; urgency=low
+
+  * New upstream release (1.10.3 rc2):
+    - DIX: Set backgroundState correctly for root window (Closes: #632134).
+  * Drop 20-workaround-36986.diff, fixed upstream.
+  * Bump Standards-Version to 3.9.2 (no changes).
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 02 Jul 2011 11:58:58 +0200
+
+xorg-server (2:1.10.2-2) unstable; urgency=low
+
+  * Bump libgl1-mesa-dri versioned Recommends to 7.10.2-4, to lower the
+    odds of having a server built against multiarched mesa, installed
+    along a pre-multiarch mesa. The Breaks in mesa packages take care of
+    the other way round already.
+  * And since the server's binNMU managed to migrate to testing way too
+    early, add a Breaks against pre-multiarch libgl1-mesa-dri and
+    libgl1-mesa-dri-experimental.
+
+ -- Cyril Brulebois <kibi@debian.org>  Fri, 17 Jun 2011 18:09:36 +0200
+
+xorg-server (2:1.10.2-1ubuntu1) oneiric; urgency=low
+
+  [ Timo Aaltonen ]
+  * Merge from Debian unstable, remaining changes:
+     - rules:
+      + Disable SELinux, libaudit-dev is not in main yet. (LP #406226)
+      + Add --with-extra-module-dir to support GL alternatives.
+      + Mention Ubuntu support in builderstring rather than package uploader's
+        email address.
+      + Enable multitouch gestures.
+    - control:
+      + Xvfb depends on xauth, x11-xkb-utils, recommends libgl1-mesa-dri.
+        (LP #500102)
+      + Add breaks for incompatible drivers. (LP #614993)
+      + Drop libaudit-dev from build-deps.
+      + Build-depend on newer mesa to pick up DRI search paths variable.
+      + Bump dependency on x11proto-input-dev for Xi 2.1
+      + Drop linux-any specifier to make pbuilder less narky.
+    - local/xvfb-run*: Add correct docs about error codes. (LP #328205)
+    - debian/patches:
+      + 100_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 105_nvidia_fglrx_autodetect.patch:
+        Load proprietary drivers automatically when installed.
+      + 109_fix-swcursor-crash.patch:
+        Avoid dereferencing null pointer while reloading cursors during
+        resume. (LP #371405)
+      + 111_armel-drv-fallbacks.patch:
+        Add support for armel driver fallbacks.
+      + 122_xext_fix_card32_overflow_in_xauth.patch:
+        Fix server crash when “xauth generate” is called with large timeout.
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP #459512)
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+        Cache keyboard settings.
+      + 191-Xorg-add-an-extra-module-path.patch:
+        Add support for the alternative module path.
+      + 198_nohwaccess.patch:
+        Adds a -nohwaccess argument to make X not access the hardware
+        ports directly.
+      + 200_randr-null.patch:
+        Clarify a pointer initialization.
+      + 206_intel_8xx_default_to_fbdev.patch:
+        Makes 8xx class intel GPUs default to fbdev for stability. (LP #633593)
+      + 208_switch_on_release.diff:
+        Switch keyboard layouts on key-release rather than key-press
+       (LP #36812)
+      + 209_add_legacy_bgnone_option.patch:
+        Add -nr as a synonym for -background none until all ?DM are updated for
+       the new option.
+      + 210_pixman_null_ptr_check.patch:
+        Catch NULL pointer access after pixman_image_create_bits() failure
+       (LP #705078)
+      + 214_glx_dri_searchdirs.patch:
+        Search in same paths as mesa for DRI drivers for AIGLX so we can handle
+        UMS fallback for radeon gracefully.
+      + 217_revert_bgnonevisitwindow.patch:
+        Revert a commit that causes brief graphical corruption. (LP: 726807)
+      + 218_randr-check-rotated-virtual-size-limits-correctly.diff:
+        Fix rotation with nvidia driver. (LP: 740933)
+      + 500_xi2.1.patch,
+        501_xf86CoordinatesToWindow.patch,
+        502_gestures-extension.patch:
+        Add Xi 2.1 and Gesture extension support.
+      + 503_fix_masked_transformed_valuators.patch:
+        Fix masked transformed valuator handling (LP #774938)
+  * Drop patch 215_glx_drawable_refcounting.diff, similar fix included
+    upstream.
+  * Drop patch 121_only_switch_vt_when_active.diff, doesn't seem to
+    work anymore.
+  * videoabiver, inputabiver, xserver-xorg-dev.install:
+    Drop changes that are obsolete post-natty.
+  * Add 219_fedora-pointer-barrier.diff:
+    Pointer barrier and cursor confinement patch backported to 1.10.
+
+  [ Christopher James Halse Rogers ]
+  * debian/control:
+    Bump mesa-common-dev build-dep to pick up multiarch DRI paths.
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Wed, 15 Jun 2011 10:51:18 +1000
+
+xorg-server (2:1.10.2-1) unstable; urgency=low
+
+  * New upstream release.
+  * Add 20-workaround-36986.diff to avoid test failures on *i386.
+  * On GNU/kFreeBSD, enable HAL support for the main build, but disable it
+    for the udeb build, thanks to Robert Millan (Closes: #596586).
+
+ -- Cyril Brulebois <kibi@debian.org>  Mon, 30 May 2011 11:37:37 +0200
+
+xorg-server (2:1.10.1.901-1) experimental; urgency=low
+
+  * New upstream release (1.10.2 rc1):
+    - Comes with some Xi fixes.
+    - Comes with many GLX fixes.
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 07 May 2011 13:27:28 +0200
+
+xorg-server (2:1.10.1-2) unstable; urgency=low
+
+  * Build xserver-xorg-core-udeb on hurd-i386.  Thanks, Samuel Thibault!
+  * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 28 Apr 2011 13:28:58 +0200
+
+xorg-server (2:1.10.1-1ubuntu3) oneiric; urgency=low
+
+  * Add 218_randr-check-rotated-virtual-size-limits-correctly.diff
+    - Fix rotation with nvidia driver. (LP: #740933)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 20 May 2011 00:07:11 +0300
+
+xorg-server (2:1.10.1-1ubuntu2) oneiric; urgency=low
+
+  * Fix masked transformed valuator handling (LP: #774938)
+    - Added debian/patches/503_fix_masked_transformed_valuators.patch
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 17 May 2011 14:44:58 -0700
+
+xorg-server (2:1.10.1-1ubuntu1) natty; urgency=low
+
+  * Merge from Debian experimental (LP: #757972)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 19 Apr 2011 16:12:14 +0300
+
+xorg-server (2:1.10.1-1) experimental; urgency=low
+
+  * New upstream release.
+
+ -- Cyril Brulebois <kibi@debian.org>  Tue, 19 Apr 2011 03:08:08 +0200
+
+xorg-server (2:1.10.0.902-1ubuntu1) natty; urgency=low
+
+  * Merge from Debian experimental.
+    - dropped patches, included upstream:
+      213_xichangehierarchy-check-oom.patch
+      216_fix_sdksyms_build.diff, included upstream.
+      218_getValuatorEvents_cleanup.patch
+      219_xi1_handle_noncontinuous_valuator_data.patch
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Mon, 11 Apr 2011 09:51:56 +0300
+
+xorg-server (2:1.10.0.902-1) experimental; urgency=low
+
+  * New upstream release (1.10.1 rc2).
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 09 Apr 2011 04:18:28 +0200
+
+xorg-server (2:1.10.0.901-1) experimental; urgency=low
+
+  * New upstream release (1.10.1 rc1).
+  * Relax build-dep and dep on x11proto-randr-dev since the XRandR 1.4
+    bits were finally reverted upstream.
+  * Remove patch: 16-construct-paths-in-doxygen.conf.diff (merged
+    upstream).
+  * Pass --enable-xcsecurity to the main build to restore the XC-SECURITY
+    extension, thanks to Stefan Fritsch's report (Closes: #599657).
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 30 Mar 2011 02:22:56 +0200
+
+xorg-server (2:1.10.0-0ubuntu3) natty; urgency=low
+
+  [ Bryce Harrington ]
+  * patches/111_armel-drv-fallbacks.patch: Always fallback to -fbdev,
+    not just when no other X driver matches. (Thanks jcristau)
+
+  [ Chase Douglas ]
+  * Fix jumpy cursor in XI 1.x applications.
+    (LP: #736500)
+    - Added 218_getValuatorEvents_cleanup.patch
+    - Added 219_xi1_handle_noncontinuous_valuator_data.patch
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 31 Mar 2011 23:58:07 -0700
+
+xorg-server (2:1.10.0-0ubuntu2) natty; urgency=low
+
+  [ Chase Douglas ]
+  * patches/500_xi2.1.patch: Process ownership properly when activating an
+    async passive grab.
+    (LP: #733483)
+
+  [ Bryce Harrington ]
+  * 217_revert_bgnonevisitwindow.patch: Cherrypick from upstream.  Drops
+    recent change that inhibits drawing backfill for non-bg-None windows.
+    This causes a regression on -ati (at least) where menus and other
+    windows display graphical corruption briefly.
+    (LP: #726807)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 24 Mar 2011 15:27:40 -0700
+
+xorg-server (2:1.10.0-0ubuntu1) natty; urgency=low
+
+  * Update to new upstream final release.
+    + Drop 16-construct-paths-in-doxygen.conf.diff; included in new upstream.
+  * debian/patches/216_fix_sdksyms_build.diff:
+    + Cherry-pick from 1.10 branch, fixing the stale sdksyms.c file picked up
+      in the udeb build, causing the udeb build to fail with missing symbols.
+  * Merge from unreleased Debian experimental.  Remaining Ubuntu changes:
+    - rules:
+      + Disable SELinux, libaudit-dev is not in main yet. (LP #406226)
+      + Enable xcsecurity. (LP #247537)
+      + Add --with-extra-module-dir to support GL alternatives.
+      + Mention Ubuntu support in builderstring rather than package uploader's
+        email address.
+    - control:
+      + Xvfb depends on xauth, x11-xkb-utils. (LP #500102)
+      + Add breaks for incompatible drivers. (LP #614993)
+      + Drop libaudit-dev from build-deps.
+      + Build-depend on newer mesa to pick up DRI search paths variable.
+      + Bump dependency on x11proto-input-dev for Xi 2.1
+      + Drop linux-any specifier to make pbuilder less narky.
+      + Bump build-depends on mesa-common-dev to pick up dri.pc DRI search
+        paths change for 214_glx_dri_searchdirs.patch
+    - local/xvfb-run*: Add correct docs about error codes. (LP #328205)
+    - debian/patches:
+      + 100_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 105_nvidia_fglrx_autodetect.patch:
+        Load proprietary drivers automatically when installed.
+      + 109_fix-swcursor-crash.patch:
+        Avoid dereferencing null pointer while reloading cursors during
+        resume. (LP #371405)
+      + 111_armel-drv-fallbacks.patch:
+        Add support for armel driver fallbacks.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 122_xext_fix_card32_overflow_in_xauth.patch:
+        Fix server crash when “xauth generate” is called with large timeout.
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP #459512)
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+      + 191-Xorg-add-an-extra-module-path.patch:
+        Add support for the alternatives module path.
+      + 198_nohwaccess.patch:
+        Adds a -nohwaccess argument to make X not access the hardware
+        ports directly.
+      + 200_randr-null.patch:
+        Clarify a pointer initialization.
+      + 206_intel_8xx_default_to_fbdev.patch:
+        Makes 8xx class intel GPUs default to fbdev for stability. (LP #633593)
+      + 208_switch_on_release.diff:
+        Switch keyboard layouts on key-release rather than key-press
+       (LP #36812)
+      + 209_add_legacy_bgnone_option.patch:
+        Add -nr as a synonym for -background none until all ?DM are updated for
+       the new option.
+      + 210_pixman_null_ptr_check.patch:
+        Catch NULL pointer access after pixman_image_create_bits() failure
+       (LP #705078)
+      + 213_xichangehierarchy-check-oom.patch:
+        Add NULL pointer check for out-of-memory conditions. (LP #720445)
+      + 214_glx_dri_searchdirs.patch:
+        Search in same paths as mesa for DRI drivers for AIGLX so we can handle
+        UMS fallback for radeon gracefully.
+      + 215_glx_drawable_refcounting.diff:
+        Prevents segfault on logout and server regenerate, and possibly other
+        times. (LP #711422)
+      + 500_xi2.1.patch,
+        501_xf86CoordinatesToWindow.patch,
+        502_gestures-extension.patch:
+        Add Xi 2.1 and Gesture extension support.
+  * debian/serverminver:
+    - Bump to 1.10.0-0ubuntu1~ for Xi 2.1 ABI
+  * New upstream release fixes crash in Record, trigerred by x11vnc
+    (LP: #525066)
+  * Refresh 500_xi2.1.patch for new upstream version
+  * debian/videoabiver:
+    - Bump to 10 for XRandR 1.4 revert.
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 30 Mar 2011 02:22:56 +0200
+
+
+xorg-server (2:1.9.99.903-1) experimental; urgency=low
+
+  * New upstream release candidate (1.10 rc3).
+  * Remove patch: 17-fix-ftbfs-on-sparc.diff (merged upstream).
+  * Remove patch: 20-update-gpu-pitch.diff (merged upstream).
+  * Refresh patch: 07-xfree86-fix-build-with-xv-disabled.diff
+  * Replace patch fixing out-of-tree-build:
+    - 16-oot-build.diff (dirty local hack).
+    + 16-construct-paths-in-doxygen.conf.diff (from upstream,
+      without the gitignore hunk to get patching working).
+  * Bump video ABI version, and serverminver accordingly.
+
+ -- Cyril Brulebois <kibi@debian.org>  Fri, 25 Feb 2011 15:22:39 +0100
+
+xorg-server (2:1.9.99.902-3) experimental; urgency=low
+
+  * Merge from master up to 93a7399370.
+  * New patch: 17-fix-ftbfs-on-sparc.diff; let's try it for real before
+    asking for its being merged upstream.
+  * Refresh all patches.
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 23 Feb 2011 13:36:13 +0100
+
+xorg-server (2:1.9.99.902-2ubuntu2) natty; urgency=low
+
+  [ Timo Aaltonen ]
+  * Remove 169_mipointer_nullptr_checks.patch, fixed in another way
+    upstream since 1.6.1.901.
+
+  [ Chase Douglas ]
+  * Cancel touch clients if emulated button press is delivered.
+    (LP: #725191)
+  * Check slave device touch selection mask during implicit grab.
+    (LP: #725241)
+  * Cancel slave touch selections when attached to master device.
+    (LP: #723904)
+  * Check for touch selections only when there are active clients.
+    (LP: #723900)
+  * Prevent pointer motion when more than one touch on touchpad.
+    (LP: #730881)
+
+  [ Bryce Harrington ]
+  * Drop specification for linux-any.  Breaks pbuilder test builds.
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Mon, 07 Mar 2011 14:28:02 -0500
+
+xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low
+
+  [ Christopher James Halse Rogers ]
+  * Merge from Debian experimental.  Remaining Ubuntu changes:
+    - rules:
+      + Disable SELinux, libaudit-dev is not in main yet. (LP #406226)
+      + Enable xcsecurity. (LP #247537)
+      + Add --with-extra-module-dir to support GL alternatives.
+      + Mention Ubuntu support in builderstring rather than package uploader's
+        email address.
+    - control:
+      + Xvfb depends on xauth, x11-xkb-utils. (LP #500102)
+      + Add breaks for incompatible drivers. (LP #614993)
+      + Drop libaudit-dev from build-deps.
+      + Build-depend on newer mesa to pick up DRI search paths variable.
+    - local/xvfb-run*: Add correct docs about error codes. (LP #328205)
+    - debian/patches:
+      + 100_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 105_nvidia_fglrx_autodetect.patch:
+        Load proprietary drivers automatically when installed.
+      + 109_fix-swcursor-crash.patch:
+        Avoid dereferencing null pointer while reloading cursors during
+        resume. (LP: #371405)
+      + 111_armel-drv-fallbacks.patch:
+        Add support for armel driver fallbacks.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 122_xext_fix_card32_overflow_in_xauth.patch:
+        Fix server crash when “xauth generate” is called with large timeout.
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        169_mipointer_nullptr_checks.patch,
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP: #459512)
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+      + 191-Xorg-add-an-extra-module-path.patch:
+        Add support for the alternatives module path.
+      + 198_nohwaccess.patch:
+        Adds a -nohwaccess argument to make X not access the hardware
+        ports directly.
+      + 200_randr-null.patch:
+        Clarify a pointer initialization.
+      + 206_intel_8xx_default_to_fbdev.patch:
+        Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593)
+      + 208_switch_on_release.diff:
+        Switch keyboard layouts on key-release rather than key-press
+       (LP #36812)
+      + 209_add_legacy_bgnone_option.patch:
+        Add -nr as a synonym for -background none until all ?DM are updated for
+       the new option.
+      + 210_pixman_null_ptr_check.patch:
+        Catch NULL pointer access after pixman_image_create_bits() failure
+       (LP #705078)
+      + 213_xichangehierarchy-check-oom.patch:
+        Add NULL pointer check for out-of-memory conditions. (LP #720445)
+      + 214_glx_dri_searchdirs.patch:
+        Search in same paths as mesa for DRI drivers for AIGLX so we can handle
+        UMS fallback for radeon gracefully.
+  * 211_glx_fix_bindtextimageext_length_check.patch:
+  * 212_fix_request_length_check_for_createglxpbuffersgix.patch:
+    - Drop; these cherry-picks are included in 1.10RC2
+  * 214_glx_dri_searchdirs.patch:
+    - Fix dlclose/free snafu. (LP: #722563)
+    - Fix nouveau check to downgrade missing DRI error messages to info.
+      We don't support nouveau's 3D, so let's not complain too strenuously
+      when it's not installed.
+  * 215_glx_drawable_refcounting.diff:
+    - Refcount GLXDrawables to avoid use-after-free crashes.  Patch from
+      xorg-devel mailing list.  Prevents segfault on logout and server
+      regenerate, and possibly other times. (LP: #711422)
+  * debian/inputabiver,
+    debian/videoabiver,
+    debian/xserver-xorg-dev.install
+    - Temporarily re-add these to xserver-xorg-dev so we don't need to merge
+      all the driver changes from Debian en masse.  These should be dropped
+      once all drivers have been merged from Debian, and certainly in Natty+1.
+  * debian/serverminver:
+    - Include 2ubuntu1 string; Xi 2.1 bumps the minor input ABI, so drivers
+      built against it need the Xi 2.1 patched server.
+
+  [ Timo Aaltonen ]
+  * debian/patches/216_dix-valuator-count-of-0-is-valid.diff:
+    - For all but motion and proximity events, having no valuators is ok.
+      Regression from 1.9, keyboard events are not converted to protocol
+      events. (LP: #714696)
+
+  [ Chase Douglas ]
+  * Add in preliminary xi2.1 support
+    - Added 500_xi2.1.patch
+    - Moved 202_xf86CoordinationsToWindows.patch to
+      501_xf86CoordinatesToWindow.patch
+    - Moved 203_gestures-extension.patch to 502_gestures-extension.patch
+    - Bump dependency on x11proto-input for xi 2.1
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Wed, 23 Feb 2011 09:40:07 +1100
+
+xorg-server (2:1.9.99.902-2) experimental; urgency=low
+
+  * Bump dependency on x11proto-randr-dev, needed since xorg-server.pc
+    pulls a newer randrproto version.
+  * Merge from debian-unstable (picking packaging updates from 2:1.9.4-3).
+  * Mention some basic checks to perform when updating to a new upstream
+    release, in README.source: ABI bumps and SDK_REQUIRED_MODULES updates.
+  * Accordingly:
+    - Bump the x11proto-xext-dev dependency.
+    - Don't bump the x11proto-kb-dev dependency (even etch had a
+      sufficient version).
+
+ -- Cyril Brulebois <kibi@debian.org>  Sun, 20 Feb 2011 07:02:20 +0100
+
+xorg-server (2:1.9.99.902-1) experimental; urgency=low
+
+  [ Christopher James Halse Rogers ]
+  * New upstream release (1.10 rc1)
+  * Drop 16-xaa-fbcomposite-fix-negative-size.diff, the mod macro that this
+    patch fixes is no longer used.
+  * debian/control:
+    - Bump x11proto-randr-dev and x11proto-xext-dev build-deps to 1.3.99 and
+      7.1.99 for new XRandR and XSync extension protocols.
+
+  [ Julien Cristau ]
+  * Bump serverminver and ABI versions.
+
+  [ Cyril Brulebois ]
+  * New upstream release (1.10 rc2).
+  * bug script: Report libGL-related diversions.
+  * Bump serverminver again, since ABI_XINPUT_VERSION was bumped from 12.0
+    to 12.2.
+  * Update debian/copyright from upstream COPYING.
+  * Add patch to work around out-of-tree issues: 16-oot-build.diff
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 19 Feb 2011 15:29:54 +0100
+
+xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu6) natty; urgency=low
+
+  * debian/patches/214_glx_dri_searchdirs.patch:
+    - Search for DRI drivers for AIGLX in the same set of directories as mesa.
+      Allows us to fall back to the classic radeon drivers when KMS is not
+      available.
+  * debian/rules:
+    - --disable-builddocs → --disable-devel-docs to match upstream rename.
+      Makes local builds faster and less prone to doxygen errors.
+  * debian/control:
+    - Bump build-depends on mesa to pick up new drisearchdirs variable in
+      dri.pc
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Fri, 18 Feb 2011 17:03:46 +1100
+
+xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu5) natty; urgency=low
+
+  * Add 213_xichangehierarchy-check-oom.patch: Another NULL pointer check
+    for out-of-memory conditions, this time leading to a segfault in an
+    unchecked calloc in XISendDeviceHierarchyEvent().
+    (LP: #720445)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 16 Feb 2011 16:46:35 -0800
+
+xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu4) natty; urgency=low
+
+  * Add 211_glx_fix_bindtextimageext_length_check.patch,
+    212_fix_request_length_check_for_createglxpbuffersgix.patch:
+    - Correct wrong request size match for xGLXCreateGLXPbufferSGIXReq.
+      This can result in some invalid BadLength errors.
+      (LP: #714280)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 14 Feb 2011 12:07:45 -0800
+
+xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu3) natty; urgency=low
+
+  * Restore 208_switch_on_release.diff - the patch does not appear to be
+    upstream actually.  Users confirm the fix regressed without it.
+    (LP: #711842)
+  * Add 210_pixman_null_ptr_check.patch: pixman_image_create_bits() can
+    return NULL under a variety of circumstances, thus needs checked
+    before dereferencing it in the pixman_image_set_has_client_clip()
+    call.
+    (LP: #705078, deb: 596155, fdo: 28882)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 03 Feb 2011 22:42:52 -0800
+
+xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu1) natty; urgency=low
+
+  * Merge from (unreleased) debian-experimental.  Remaining Ubuntu changes:
+    - rules:
+      + Disable SELinux, libaudit-dev is not in main yet. (LP: #406226)
+      + Enable xcsecurity. (LP: #247537)
+      + Add --with-extra-module-dir to support GL alternatives.
+    - control:
+      + Xvfb depends on xauth, x11-xkb-utils. (LP: #500102)
+      + Add breaks for incompatible drivers. (LP: #614993)
+      + Drop libaudit-dev from build-deps.
+    - local/xvfb-run*: Add correct docs about error codes. (LP #328205)
+    - debian/patches:
+      + 100_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 109_fix-swcursor-crash.patch:
+        Avoid dereferencing null pointer while reloading cursors during
+        resume. (LP: #371405)
+      + 111_armel-drv-fallbacks.patch:
+        Add support for armel driver fallbacks.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 122_xext_fix_card32_overflow_in_xauth.patch:
+        Fix server crash when “xauth generate” is called with large timeout.
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        169_mipointer_nullptr_checks.patch,
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP: #459512)
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+      + 191-Xorg-add-an-extra-module-path.patch:
+        Add support for the alternatives module path.
+      + 198_nohwaccess.patch:
+        Adds a -nohwaccess argument to make X not access the hardware
+        ports directly.
+      + 200_randr-null.patch:
+        Clarify a pointer initialization.
+      + 206_intel_8xx_default_to_fbdev.patch:
+        Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593)
+  * Refresh 121_only_switch_vt_when_active.diff for new upstream.
+  * Drop 187_edid_quirk_hp_nc8430.patch; upstream.
+  * Drop 189_xserver_1.5.0_bg_none_root.patch; functionality now upstream.
+  * Refresh 190_cache-xkbcomp_output_for_fast_start_up.patch for new upstream.
+  * Drop 197_xvfb-randr.patch:
+    - miRandR, which this used, has been removed from the server.
+  * Drop 204_fix-neg-sync-transition.patch; upstream.
+  * Drop 207_dga_master_device.patch; upstream.
+  * Drop 208_switch_on_release.diff; upstream.
+  * debian/patches/209_add_legacy_bgnone_option.patch:
+    - Add "-nr" as a synonym for "-background none" to ease the transition from
+      the old 189_xserver_1.5.0_bg_none_root.patch patch.  Can be dropped once
+      all the ?DM have been updated to use the new option.
+  * debian/control:
+    - Add Breaks: to xserver-xorg-video-8 and current fglrx.  These proprietary
+      drivers don't yet have appropriate dependency information, so manually
+      handle them here to prevent broken upgrades.
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Mon, 31 Jan 2011 19:45:19 +1100
+
+xorg-server (2:1.9.4-3) unstable; urgency=low
+
+  * Maintainer script clean-up:
+    - xserver-xorg-core.preinst.in: Remove, 1.5 is long gone.
+    - xserver-xorg-core.postinst.in: Remove, 1.5 is long gone, and 1.7.4
+      was between lenny and squeeze.
+    - xserver-xorg-core.postrm.in: Rename as xserver-xorg-core.postrm,
+      handling upgrades from 1.5 is no longer needed, only keep the logs
+      removal and the #DEBHELPER# placeholder.
+  * Move remaining xsfbs bits to debian/rules:
+    - Create/clean stampdir/.
+    - Use quilt.make, $(QUILT_STAMPFN), unpatch.
+    - Define SOURCE_NAME and SOURCE_VERSION.
+  * Remove debian/xsfbs accordingly.
+  * Remove reference to xsfbs in README.source accordingly.
+  * Add patch: 20-update-gpu-pitch.diff (from upstream bug 33929), fixing
+    issues with the radeon driver (Closes: #613957).
+
+ -- Cyril Brulebois <kibi@debian.org>  Sun, 20 Feb 2011 05:35:50 +0100
+
+xorg-server (2:1.9.4-2) unstable; urgency=low
+
+  * Put an end to the dependency hell! Now that we have proper
+    dependencies between drivers and the server, remove xserver-xorg from
+    xserver-xorg-core's Depends (Closes: #362313). In a nutshell, one may
+    want to choose between installing:
+    - xserver-xorg-core: the server itself, with no strings attached.
+    - xserver-xorg: pulls the server and drivers, contains the X wrapper
+      and some documentation.
+    - xorg: pulls xserver-xorg as well as various X11 clients and fonts.
+  * bug script: Report KMS configuration files and their contents.
+  * bug script: Keep only one lspci call (with proper filtering), which
+    makes PCI IDs come back.
+  * bug script: Report libGL-related diversions.
+  * Stop providing xorg-input-abi-11.0 and xorg-video-abi-8.0 now that
+    drivers have reached unstable.
+  * Merge server-1.9-branch up to 0a4b0de9af.
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 16 Feb 2011 23:17:07 +0100
+
+xorg-server (2:1.9.4-1) unstable; urgency=low
+
+  * The “squeeze is released, target sid!” upload.
+  * New upstream release.
+  * Unfuzzy all patches.
+  * Get rid of long obsolete NEWS file.
+  * Replace “--remaining-packages” with “-Nfoo -Nbar” in the “dh_strip -s”
+    call, to avoid non-stripped binaries if the build is resumed.
+  * Use “dh_prep” instead of deprecated “dh_clean -k”.
+  * Bump debhelper build-dep accordingly.
+  * Introduce dh_xsf_substvars, to be used in driver packages to set
+    appropriate substitution variables for Depends and Provides, before
+    calling dh_gencontrol. Ship it in xserver-xorg-dev.
+  * Also ship a debhelper sequence: xsf.pm, to insert dh_xsf_substvars
+    before dh_gencontrol. Usage: “dh $@ --with xsf” when using dh.
+  * Get rid of inputabiver and videoabiver files, they've been deprecated
+    for a while, and drivers should all have switched by now.
+  * rules: Only read the first line of debian/serverminver to set the
+    serverminver variable, used to prepare xinputdep and videodrvdep
+    files.
+  * rules: Keep only the major ABI version from pkg-config's output to
+    build xorg-{input,video}-abi-$ABI. To handle minor ABI versions, we
+    have the serverminver mechanism.
+  * To avoid having to binNMU all drivers to update their Depends from
+    xorg-*-abi-$MAJOR-$MINOR to xorg-*-abi-$MAJOR, add xorg-video-abi-8.0
+    and xorg-input-abi-11.0 to the server's Provides temporarily (until
+    the next ABI bump).
+  * Add ${videoabi}, ${inputabi} to the udeb's Provides. There's no reason
+    for udebs to have loose dependencies.
+  * Accordingly, copy server's substvars as udeb's substvars once the
+    videoabi/inputabi variables are computed.
+  * Add an abibumpcheck target which checks for xinput and videodrv ABI
+    updates, based on the versions stored in debian/serverminver; make
+    clean depend on it to make sure such an update is noticed at the very
+    beginning of the build.
+  * Add current versions to debian/serverminver accordingly.
+  * Remove “xserver” from Provides, it's deprecated.
+  * Use architecture wildcards for build-deps.
+  * Make xserver-xfbdev linux-any; add armhf and powerpcspe to the udeb
+    (Closes: #585697, #605764).
+  * Cherry-pick, thanks to Samuel Thibault (Closes: #590715):
+    - xserver: enable TLS even if AIGLX is not enabled
+  * Update Uploaders list. Thanks, David & Steve & Brice!
+  * Bump Standards-Version to 3.9.1 (no changes needed).
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 05 Feb 2011 10:40:55 +0100
+
+xorg-server (2:1.9.3.902-1) experimental; urgency=low
+
+  * New upstream release (1.9.4 rc2).
+  * Improve bug script:
+    - Stop reporting about roster and checksum for config file and server
+      symlink, they are no longer used.
+    - Replace printf with echo everywhere, it's slightly more readable and
+      all lines are newline-terminated anyway.
+    - Also use a “pecho” (pretty echo) function to underline some strings,
+      making the output slightly more readable.
+    - Fix listing xorg.conf.d's contents. Previously, that was only done
+      if xorg.conf existed.
+    - Check for local libraries by running ldd on the server.
+    - Check for obsolete libraries in the same way (/usr/X11R6/lib might
+      still exist in some cases, and be referenced in /etc/ld.so.conf, so
+      using ldd is sufficient to find out, see #546836 for an example).
+
+ -- Cyril Brulebois <kibi@debian.org>  Mon, 31 Jan 2011 14:00:41 +0100
+
+xorg-server (2:1.9.3.901-1) experimental; urgency=low
+
+  * New upstream release (1.9.4 rc1).
+
+ -- Cyril Brulebois <kibi@debian.org>  Sun, 09 Jan 2011 03:10:13 +0100
+
+xorg-server (2:1.9.2.902-1) experimental; urgency=low
+
+  * New upstream release (1.9.3 rc2).
+  * Drop 06_dont_trap_access_to_timer_and_keyboard.diff, merged upstream.
+
+ -- Cyril Brulebois <kibi@debian.org>  Sun, 05 Dec 2010 02:16:14 +0100
+
+xorg-server (2:1.9.2-1) experimental; urgency=low
+
+  * New upstream release.
+
+ -- Cyril Brulebois <kibi@debian.org>  Wed, 10 Nov 2010 00:10:19 +0100
+
+xorg-server (2:1.9.0.902-1ubuntu4) natty; urgency=low
+
+  * Add 208_switch_on_release.diff: Perform keyboard layout switches on
+    key-release rather than key-press events.  This solves a very
+    long-standing issue where e.g. <ctrl>+<shift>+<key> fails when
+    ctrl+shift is configured for layout switching.
+    (LP: #36812)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 06 Jan 2011 14:35:59 -0800
+
+xorg-server (2:1.9.0.902-1ubuntu3) natty; urgency=low
+
+  * Add 207_dga_master_device.patch: Cherrypick from upstream xserver git
+    to fix crash with a bluetooth keyboard when using XBMC full screen.
+    (LP: #597895)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 06 Jan 2011 12:17:16 -0800
+
+xorg-server (2:1.9.0.902-1ubuntu2) natty; urgency=low
+
+  [ Christopher James Halse Rogers ]
+  * Cherry-pick 3effb61e from server-1.9 branch.  Fixes a typo in Xinerama
+    support which caused Qt apps to crash X when using Xinerama multi-head
+    (LP: #650539)
+
+  [ Robert Hooker ]
+  * Add 105_nvidia_fglrx_autodetect.patch, enables fglrx and nvidia to work
+    without an xorg.conf.
+  * debian/local/64-xorg-xkb.rules, control: Use keyboard-configuration
+    information for keymaps (/etc/default/keyboard)
+
+ -- Robert Hooker <sarvatt@ubuntu.com>  Wed, 05 Jan 2011 11:29:17 -0500
+
+xorg-server (2:1.9.0.902-1ubuntu1) natty; urgency=low
+
+  * Merge from Debian experimental.  Remaining Ubuntu changes:
+    - rules:
+      + Disable SELinux, libaudit-dev is not in main yet. (LP: #406226)
+      + Enable xcsecurity. (LP: #247537)
+      + Add --with-extra-module-dir to support GL alternatives.
+    - control: 
+      + Xvfb depends on xauth, x11-xkb-utils. (LP: #500102)
+      + Add breaks for incompatible drivers. (LP: #614993)
+      + Drop libaudit-dev from build-deps.
+    - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration
+      until it's available.
+    - local/xvfb-run*: Add correct docs about error codes. (LP #328205)
+    - debian/patches:
+      + 100_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 109_fix-swcursor-crash.patch:
+        Avoid dereferencing null pointer while reloading cursors during
+        resume. (LP: #371405)
+      + 111_armel-drv-fallbacks.patch:
+        Add support for armel driver fallbacks.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 122_xext_fix_card32_overflow_in_xauth.patch:
+        Fix server crash when “xauth generate” is called with large timeout.
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        169_mipointer_nullptr_checks.patch,
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 187_edid_quirk_hp_nc8430.patch:
+        Quirk for another LPL monitor (LP: #380009)
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP: #459512)
+      + 189_xserver_1.5.0_bg_none_root.patch:
+        Create a root window with no background.
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+      + 191-Xorg-add-an-extra-module-path.patch:
+        Add support for the alternatives module path.
+      + 197_xvfb-randr.patch:
+        Adds xrandr support to xvfb. (LP: #516123)
+      + 198_nohwaccess.patch:
+        Adds a -nohwaccess argument to make X not access the hardware
+        ports directly.
+      + 200_randr-null.patch:
+        Clarify a pointer initialization.
+      + 203_gestures-extension.patch:
+      + 202_xf86CoordinationsToWindows.patch:
+        Add gesture extension support (LP: #616678)
+      + 204_fix-neg-sync-transition.patch:
+        Fixes gnome screensaver fade being uninterruptable. (LP: #595555)
+      + 206_intel_8xx_default_to_fbdev.patch:
+        Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593)
+  * Drop 205_udev-product-ids.patch, merged upstream.
+
+ -- Robert Hooker <robert.hooker@canonical.com>  Mon, 18 Oct 2010 11:19:33 -0400
+
+xorg-server (2:1.9.0.902-1) experimental; urgency=low
+
+  * New upstream release (1.9.1 rc2).
+  * Drop 20-Revert-for-bug-30267.diff, merged upstream.
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 16 Oct 2010 15:24:48 +0200
+
+xorg-server (2:1.9.0.901-1) experimental; urgency=low
+
+  [ Christopher James Halse Rogers ]
+  * New upstream release (1.9.0):
+    - Fixes crash in DamageUnregister on session close (LP: #343694)
+    - Fixes crash with extremely large windows exposed by xpdf (Closes: #320627)
+  * Drop 17-fix-DRI2-segfault-when-clientGone.diff: fixed upstream in more
+    generality.
+
+  [ Cyril Brulebois ]
+  * New upstream release (1.9.1 rc1).
+  * Add patch: 20-Revert-for-bug-30267.diff, to fix FTBFS due to test
+    failures, see https://bugs.freedesktop.org/show_bug.cgi?id=30267 for
+    reference.
+  * Bump xutils-dev build-dep for new macros.
+  * Remove --disable-multibuffer from configure flags, that extension is
+    gone for real now.
+
+ -- Cyril Brulebois <kibi@debian.org>  Tue, 12 Oct 2010 22:13:20 +0200
+
+xorg-server (2:1.9.0-0ubuntu6) maverick; urgency=low
+
+  [ Chase Douglas ] 
+  * Fix udev USB product ID parsing (LP: #628214)
+    - debian/patches:
+      + 205_udev-product-ids.patch
+
+  [ Christopher James Halse Rogers ]
+  * debian/patches/206_intel_8xx_default_to_fbdev.patch:
+    - Don't autoload the intel driver on i830, i845g and i855.  These are
+      still too unstable with KMS/GEM.  X will autoload the fbdev driver
+      (if using KMS) or the vesa driver instead.  (LP: #633593)
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Mon, 13 Sep 2010 18:48:54 +1000
+
+xorg-server (2:1.9.0-0ubuntu5) maverick; urgency=low
+
+  * debian/control:
+    - fix duplicated breaks for xserver-xorg-video-v4l
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Wed, 08 Sep 2010 10:57:49 +0200
+
+xorg-server (2:1.9.0-0ubuntu4) maverick; urgency=low
+
+  * debian/control:
+    - add more "breaks" for leftover drivers that have no
+      xserver 1.9 abi version, thanks to Jean-Baptiste Lallement
+      (LP: #614993)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 31 Aug 2010 10:52:29 +0200
+
+xorg-server (2:1.9.0-0ubuntu3) maverick; urgency=low
+
+  * debian/control:
+    - add additional breaks for video drivers that have no ABI for
+      xserver 1.9 (LP: #614993)
+    - merge the "breaks" list from the debian git tree
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 31 Aug 2010 10:04:01 +0200
+
+xorg-server (2:1.9.0-0ubuntu2) maverick; urgency=low
+
+  * debian/control:
+    - add explict breaks from xserver-xorg-core against 
+      xserver-xorg-video-v4l (<< 1:0.2.0-4ubuntu1) to ensure that
+      upgrades with universe disabled work (LP: #614993)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 30 Aug 2010 15:40:07 +0200
+
+xorg-server (2:1.9.0-0ubuntu1) maverick; urgency=low
+  
+  * Merge from (unreleased) Debian experimental.  Remaining Ubuntu changes:
+    - rules, control:
+      + Disable SELinux, libaudit-dev is not in main yet (LP 406226).
+        Drop libaudit-dev from build-deps.
+    - rules: Enable xcsecurity (LP 247537).
+    - local/xvfb-run*: Add correct docs about error codes (LP 328205)
+    - rules: Add --with-extra-module-dir to support GL alternatives.
+    - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102)
+    - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration
+      until it's available.
+    - control: Update some versioned Breaks for Ubuntu versions.
+    - debian/patches:
+      + 100_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 109_fix-swcursor-crash.patch:
+        Avoid dereferencing null pointer while reloading cursors during
+        resume. (LP 371405)
+      + 111_armel-drv-fallbacks.patch:
+        Add support for armel driver fallbacks.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 122_xext_fix_card32_overflow_in_xauth.patch:
+        Fix server crash when “xauth generate” is called with large timeout.
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        169_mipointer_nullptr_checks.patch,
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 187_edid_quirk_hp_nc8430.patch:
+        Quirk for another LPL monitor (LP 380009)
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP 459512)
+      + 189_xserver_1.5.0_bg_none_root.patch:
+        Create a root window with no background.
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+        Cache keyboard settings.
+      + 191-Xorg-add-an-extra-module-path.patch:
+        Add support for the alternatives module path.
+      + 197_xvfb-randr.patch:
+        Adds xrandr support to xvfb. (LP 516123)
+      + 198_nohwaccess.patch:
+        Adds a -nohwaccess argument to make X not access the hardware
+        ports directly.
+      + 200_randr-null.patch:
+        Clarify a pointer initialization.  
+      + 203_gestures-extension.patch:
+      + 202_xf86CoordinationsToWindows.patch:
+        Add gesture extension support (LP: 616678)
+      + debian/serverminver:
+        Bump for gesture support
+  * New upstream release:
+    - Fixes crash in DamageUnregister on session close (LP: #343694)
+    - Fixes crash with extremely large windows exposed by xpdf (Closes: #320627)
+  * Drop 17-fix-DRI2-segfault-when-clientGone.diff: fixed upstream in more
+    generality.
+  * debian/patches/204_fix-neg-sync-transition.patch:
+    - Fix edge case in SYNC extension resulting in GNOME screensaver's 
+      fade-to-screensaver being uninteruptible.  (LP: #595555)
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Tue, 24 Aug 2010 15:44:10 +1000
+
+xorg-server (2:1.8.99.905-1ubuntu3) maverick; urgency=low
+
+  * Bump debian/serverminver for gesture support
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Fri, 20 Aug 2010 16:35:22 -0400
+
+xorg-server (2:1.8.99.905-1ubuntu2) maverick; urgency=low
+  
+    * Add in gesture support (LP: #616678)
+      - add debian/patches/203_gestures-extension.patch
+        and debian/patches/202_xf86CoordinationsToWindows.patch
+      - debian/rules:
+        - add configure option to enable gesture
+
+ -- Chase Douglas <chase.douglas@ubuntu.com>  Mon, 09 Aug 2010 14:33:40 +0000
+
+xorg-server (2:1.8.99.905-1ubuntu1) maverick; urgency=low
+
+  * Merge from (unreleased) Debian experimental.  Remaining Ubuntu changes:
+    - rules, control:
+      + Disable SELinux, libaudit-dev is not in main yet (LP 406226).
+        Drop libaudit-dev from build-deps.
+    - rules: Enable xcsecurity (LP 247537).
+    - local/xvfb-run*: Add correct docs about error codes (LP 328205)
+    - rules: Add --with-extra-module-dir to support GL alternatives.
+    - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102)
+    - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration
+      until it's available.
+    - control: Update some versioned Breaks for Ubuntu versions.
+    - debian/patches:
+      + 100_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 109_fix-swcursor-crash.patch:
+        Avoid dereferencing null pointer while reloading cursors during
+        resume. (LP 371405)
+      + 111_armel-drv-fallbacks.patch:
+        Add support for armel driver fallbacks.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 122_xext_fix_card32_overflow_in_xauth.patch:
+        Fix server crash when “xauth generate” is called with large timeout.
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        169_mipointer_nullptr_checks.patch,
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 187_edid_quirk_hp_nc8430.patch:
+        Quirk for another LPL monitor (LP 380009)
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP 459512)
+      + 189_xserver_1.5.0_bg_none_root.patch:
+        Create a root window with no background.
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+        Cache keyboard settings.
+      + 191-Xorg-add-an-extra-module-path.patch:
+        Add support for the alternatives module path.
+      + 197_xvfb-randr.patch:
+        Adds xrandr support to xvfb. (LP 516123)
+      + 198_nohwaccess.patch:
+        Adds a -nohwaccess argument to make X not access the hardware
+        ports directly.
+      + 200_randr-null.patch:
+        Clarify a pointer initialization.
+  * Update changelog entries for 1.8.1.902-1 which became 1.8.99.904-1
+  * Drop 196_xvfbscreeninit-handling.patch: it's semantically empty, and now 
+    doesn't apply.  Merge remaining #include change into 197_xvfb-randr.patch
+  * New upstream version will start correctly when no outputs are connected,
+    as long as the video driver can dynamically resize the framebuffer
+    (true for all KMS drivers) (LP: #337889)
+  * New upstream version fixes crash on non-admin logout with KDE (LP: #569879)
+  * Refresh 111_armel-drv-fallbacks.patch to fix the build on armel
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 05 Aug 2010 11:25:14 +1000
+
+xorg-server (2:1.8.99.905-1) experimental; urgency=low
+
+  * Drop recommends on xbase-clients.
+  * Add xauth to xserver-common recommends.
+  * Bump Standards-Version to 3.9.0.
+  * Don't install serverminver, drivers shouldn't use this anymore.
+  * New upstream release candidate.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 17 Jul 2010 11:13:32 +0100
+
+xorg-server (2:1.8.99.904-1) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * Install the upstream changelog in xserver-common, instead of duplicating
+    its 1MB in all other packages.
+  * Stop repacking the tarball: the non-modifiable README.DRI was removed
+    upstream.
+  * Bump build-deps on x11proto-core-dev, x11proto-dri2-dev, libxfont-dev.
+  * Bump xserver-xorg-dev dependency on x11proto-core-dev and
+    x11proto-dri2-dev, add dependency on x11proto-xinerama-dev.
+  * Bump serverminver, videoabiver, inputabiver.
+
+  [ Christopher James Halse Rogers ]
+  * New upstream RC
+    - A number of DRI2 fixes.
+    - Fix for hanging OpenGL clients with multiple heads.
+  * 17-fix-DRI2-segfault-when-clientGone.diff:
+    - Pick up fix from https://bugs.freedesktop.org/show_bug.cgi?id=27497 to
+      fix server crash in DRI2SwapEvent handling (LP: #595182).
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 09 Jul 2010 12:45:09 +0100
+
+xorg-server (2:1.8.1.902-0ubuntu2) maverick; urgency=low
+
+  * debian/rules:
+    - Drop the upstream changelog harder.  We're scrabbling for CD space
+      and this is an easy 1MB saving.
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Wed, 30 Jun 2010 09:50:33 +1000
+
+xorg-server (2:1.8.1.902-0ubuntu1) maverick; urgency=low
+
+  * Merge from (unreleased) Debian experimental.  Remaining changes:  
+    - rules, control:
+      + Disable SELinux, libaudit-dev is not in main yet (LP 406226).
+        Drop libaudit-dev from build-deps.
+    - rules: Enable xcsecurity (LP 247537).
+    - local/xvfb-run*: Add correct docs about error codes (LP 328205)
+    - rules: Add --with-extra-module-dir to support GL alternatives.
+    - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102)
+    - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration
+      until it's available.
+    - control: Update some versioned Breaks for Ubuntu versions.
+    - debian/patches:
+      + 100_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 109_fix-swcursor-crash.patch:
+        Avoid dereferencing null pointer while reloading cursors during
+        resume. (LP 371405)
+      + 111_armel-drv-fallbacks.patch:
+        Add support for armel driver fallbacks.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 122_xext_fix_card32_overflow_in_xauth.patch:
+        Fix server crash when “xauth generate” is called with large timeout.
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        169_mipointer_nullptr_checks.patch,
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 187_edid_quirk_hp_nc8430.patch:
+        Quirk for another LPL monitor (LP 380009)
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP 459512)
+      + 189_xserver_1.5.0_bg_none_root.patch:
+        Create a root window with no background.
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+        Cache keyboard settings.
+      + 191-Xorg-add-an-extra-module-path.patch:
+        Add support for the alternatives module path.
+      + 196_xvfb-fbscreeninit-handling.patch, 197_xvfb-randr.patch:
+        Adds xrandr support to xvfb. (LP 516123)
+      + 198_nohwaccess.patch:
+        Adds a -nohwaccess argument to make X not access the hardware
+        ports directly.
+      + 200_randr-null.patch:
+        Clarify a pointer initialization.
+  * Update changelog entries for previously unreleased Debian 1.8.1.901-1
+  
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Wed, 23 Jun 2010 11:19:49 +1000
+
+xorg-server (2:1.8.1.901-1ubuntu1) maverick; urgency=low
+
+  [ Timo Aaltonen ]
+  * Merged from Debian experimental, remaining changes:
+    - rules, control:
+      + Disable SELinux, libaudit-dev is not in main yet (LP 406226).
+        Drop libaudit-dev from build-deps.
+    - rules: Enable xcsecurity (LP 247537).
+    - local/xvfb-run*: Add correct docs about error codes (LP 328205)
+    - rules: Add --with-extra-module-dir to support GL alternatives.
+    - control: Xvfb depends on xauth, x11-xkb-utils, recommends
+      libgl1-mesa-dri. (LP 500102)
+    - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration
+      until it's available.
+    - debian/patches:
+      + 100_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 109_fix-swcursor-crash.patch:
+        Avoid dereferencing null pointer while reloading cursors during
+        resume. (LP 371405)
+      + 111_armel-drv-fallbacks.patch:
+        Add support for armel driver fallbacks.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 122_xext_fix_card32_overflow_in_xauth.patch:
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        169_mipointer_nullptr_checks.patch,
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 187_edid_quirk_hp_nc8430.patch:
+        Quirk for another LPL monitor (LP 380009)
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP 459512)
+      + 189_xserver_1.5.0_bg_none_root.patch:
+        Create a root window with no background.
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+        Cache keyboard settings.
+      + 191-Xorg-add-an-extra-module-path.patch:
+        Add support for the alternatives module path.
+      + 196_xvfb-fbscreeninit-handling.patch, 197_xvfb-randr.patch:
+        Adds xrandr support to xvfb. (LP 516123)
+      + 198_nohwaccess.patch:
+        Adds a -nohwaccess argument to make X not access the hardware
+        ports directly.
+      + 200_randr-null.patch:
+        Clarify a pointer initialization.
+  * Dropped patches:
+    - 106_nouveau_autodetect.patch: obsoleted by 15-nouveau.diff
+    - 112_xaa-fbcomposite-fix-negative-size.patch: adopted by Debian
+    - 113_quell_nouveau_aiglx.patch: obsoleted by 15-nouveau.diff
+    - 115_xext_fix_cursor_ref_counting.patch: merged upstream
+    - 116_fix_typos_in_swap_functions.patch: merged upstream
+    - 118_xkb_fix_garbage_init.patch: merged upstream
+    - 123_exa_sys_ptr_nullpointer_check.patch: merged upstream
+    - 199_xfvb-help-typo.patch: merged upstream
+  * debian/xserver-xorg-core.preinst.in: Drop the removal of the wrong
+    alternative, obsolete by now.
+  * debian/control: Build the udeb and bump the relaxed build-deps.
+  * debian/local/xvfb-run: Don't disable composite, seems to run fine
+    with it nowadays.
+
+  [ Robert Hooker ]
+  * Fix 190_cache-xkbcomp_output_for_fast_start_up.patch so it works.
+  * Drop 164_trap-aspect-ratios.patch: obsolete.
+  * debian/rules: Adjust confflag targets so xcsecurity isn't enabled for udeb
+    with disabled xace.
+  * Drop 184_virtual_devices_autodetect.patch: It's a noop with todays autoconfig.
+  
+  [ Bryce Harrington ]
+  * debian/rules: Don't reference the package uploader for support; instead point
+    users to the standard Ubuntu support page.
+    (LP: #589811)
+
+  [ Christopher James Halse Rogers ]
+  * Add debian/gbp.conf pointing at ubuntu branch.
+  * Drop 109_fix-swcursor-crash.patch; merged upstream in 3a3edb2c.
+  * 122_xext_fix_card32_overflow_in_xauth.patch: Update to most recent patch
+    on patchwork.  This patch actually works! (tested with 
+    “xauth generate :0 . trusted timeout 99999999) (LP: #519049)
+  
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 07 Jun 2010 14:50:49 -0700
+
+xorg-server (2:1.8.1.901-1) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * New upstream release
+  * Merge changes from 2:1.7.7-2.
+
+  [ Christopher James Halse Rogers ]
+  * 16-xaa-fbcomposite-fix-negative-size.diff:
+    - mi hunk merged upstream.  Update to keep just the fbpict.c hunk.
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 07 Jun 2010 23:22:48 +0200
+
+xorg-server (2:1.8.1-1) experimental; urgency=low
+
+  * New upstream release
+    - 02_Add-libgcrypt-and-libnettle-as-options-for-sha1.diff: partly merged
+      upstream, rest renamed to 02_Add-libnettle-as-option-for-sha1.diff and
+      ported to new version
+    - 05_only_call_gamma_set_if_nonnull.diff: merged upstream
+    - 07-xfree86-fix-build-with-xv-disabled.diff: rediffed
+    - 08-config-xorg-conf-d.diff: merged upstream
+    - 09-inputclass-sans-abi9.diff: likewise
+    - 10-config-libudev-backend.diff: likewise
+    - 11-xfree86-fix-video-fallback.diff: likewise
+    - 12-xfree86-dont-complain-about-missing-coredevices.diff: likewise
+    - 13-unbreak-input-abi.diff: obsolete
+    - 14-tone-down-nidr-errors.diff: merged upstream
+    - 15-nouveau.diff: rediffed
+    - 17-xfree86-saner-conf-search-paths.diff: merged upstream
+    - 18-Add-10-evdev.conf.diff: likewise
+  * Bump xutils-dev build-dep for new macros.
+  * Add build-dep on xfonts-utils for fontutil.pc.
+  * Bump build-deps on mesa, glproto and dri2proto.
+  * Drop obsolete configure options --disable-xsdl and
+    --disable-null-root-cursor.
+  * --enable-werror has been replaced by --enable-strict-compilation, adjust
+    rules.
+  * xdmx-tools.install: xdmx was renamed to dmxinfo.
+  * Bump debian/serverminver and ABI versions.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 12 May 2010 18:01:39 +0200
+
+xorg-server (2:1.7.7-2) unstable; urgency=low
+
+  * autoconfig: load the nouveau driver for nvidia hw.  Stolen from F13.
+  * Try to catch non-event devices when running udevadm info in the bug
+    script.
+  * Pull from upstream server-1.7-nominations branch
+    - dix: make DeviceEvent coordinates signed for Xinerama (closes: #581763)
+    - xfree86: dga needs to use the master keyboard state (closes: #576393)
+    - Fix null pointer dereference in xf86_reload_cursors (closes: #507916)
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 03 Jun 2010 17:00:18 +0200
+
+xorg-server (2:1.7.7-1) unstable; urgency=low
+
+  [ Timo Aaltonen ]
+  * Update patch 17; Add missing __datadir__ to cpprules.in.
+
+  [ Cyril Brulebois ]
+  * Add listing files under /etc/X11/xorg.conf.d in bug script.
+  * Fix typo in 10-mouse.conf: s/Mouse/Pointer/ (Closes: #579130).
+
+  [ Julien Cristau ]
+  * Drop the GLX 1.4 patches to fix server crashes with DRI2 (closes:
+    #567677).
+  * Change driver ABI Conflicts to Breaks.  Drop old Conflicts/Replaces on
+    pre-modular xserver packages.
+  * Unset PRERELEASE to avoid the prerelease warning in the log.
+  * New upstream release:
+    - fixes Xvfb crash with XI2 (closes: #575905)
+    - EXA: Check sys_ptr isn't NULL before passing it to the UploadToScreen
+      hook (closes: #576656)
+  * 19-exa-handle-pixmap-create-destroy-in-lower-layers.diff is now upstream,
+    remove it.
+  * Drop mention of input_id from debian/copyright since we stopped shipping
+    it a while back.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 04 May 2010 15:17:59 +0200
+
+xorg-server (2:1.7.6.901-3) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * On !linux, install mouse and kbd catchall snippets in the xorg.conf.d
+    directory.  Fixes FTBFS on those archs.
+
+  [ Cyril Brulebois ]
+  * Cherry-pick “exa: handle pixmap create/destroy in lower layers” which
+    fixes server crashes when pixmaps are created in the course of
+    software fallbacks (Closes: #576816). Many thanks to Arthur Marsh for
+    the tests!
+
+ -- Cyril Brulebois <kibi@debian.org>  Mon, 19 Apr 2010 15:26:15 +0200
+
+xorg-server (2:1.7.6.901-2) unstable; urgency=low
+
+  * Fix dependency generation: Replace PKG_CONFIG_DIR with PKG_CONFIG_PATH
+    (/usr/share/xserver-xorg/{videodrv,xinput}dep may lack a version
+    otherwise).
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 17 Apr 2010 18:38:17 +0200
+
+xorg-server (2:1.7.6.901-1) unstable; urgency=low
+
+  * New upstream release candidate.
+    - Fix crash when all glyphs of a given depth are freed, but not all
+      glyphsets (closes: #568533)
+
+  [ Cyril Brulebois ]
+  * Steal patch 112_xaa-fbcomposite-fix-negative-size.patch from ubuntu,
+    and rename it 16-xaa-fbcomposite-fix-negative-size.diff as it's now
+    applied in Debian as well. It fixes arithmetic bugs in mod(); thanks to
+    Bryce Harrington.
+  * Merge 'xsfbs/debian-unstable' to fix target dependencies, which fixes
+    useless rebuilds.
+  * Add support for “noudeb” in DEB_BUILD_OPTIONS to disable building the
+    udeb flavour (even on architectures where udebs are supposed to be
+    built) to speed up debug builds. When this is used, the udeb is still
+    built, but rather empty…
+  * Modify bug script to include kernel version (from /proc/version) since
+    the uname in Xorg.*.log might not give enough details (like the Debian
+    revision).
+
+  [ Julien Cristau ]
+  * Remove from debian/rules an obsolete reference to
+    /usr/share/debhelper/dh_make/debianm/rules.
+  * Make xserver-xorg-core provide ABI-versioned virtual packages for drivers
+    to depend on.  This is a first step in making our ABI handling saner (see
+    #573371).
+  * xvfb-run: don't rely on /tmp/X$i-lock to bump $SERVERNUM in auto-servernum
+    mode (closes: #577195).  Thanks, Jozef Kutej!
+  * Bump serverminver for new handling of input config.
+  * Add Breaks on input drivers installing files in /usr/lib/X11/xorg.conf.d
+    since we're changing the path.
+  * Stop looking for x11_driver property in udev, since we're migrating the
+    drivers over to xorg.conf.d anyway.
+  * Install 10-evdev.conf in /usr/share/X11/xorg.conf.d (from upstream, patch
+    18-Add-10-evdev.conf.diff).
+
+  [ Timo Aaltonen ]
+  * Add 17-xfree86-saner-conf-search-paths.diff. Allows using another
+    xorg.conf.d directory for local changes.
+
+ -- Cyril Brulebois <kibi@debian.org>  Sat, 17 Apr 2010 16:55:39 +0200
+
+xorg-server (2:1.7.6-2ubuntu8) lucid-updates; urgency=low
+
+  [Bryce Harrington]
+  * Add 123_exa_sys_ptr_nullpointer_check.patch: Patch from upstream to
+    verify a pointer is not NULL before dereferencing it.  Fixes X
+    segfault in miCopyRegion which occurs while using firefox (e.g. typing
+    into fields in AOL).  Issue found by Jerry Lamos.
+    (LP: #539772)
+  * Add 19-exa-handle-pixmap-create-destroy-in-lower-layers.diff: Patch
+    from Debian to fix X segfault on mouse click in xfig, when pixmaps
+    are created in the course of software fallbacks.
+    (LP: #553647)
+
+  [Martin Pitt]
+  * debian/local/64-xorg-xkb.rules: Ignore XKBMODEL=="SKIP" and
+    XKBVARIANT=="U.S. English", which happen to get into
+    /etc/default/console-setup in some cases like the VMWare automatic
+    installer.
+    (LP: #548891)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 28 Apr 2010 13:10:44 -0700
+
+xorg-server (2:1.7.6-2ubuntu7) lucid; urgency=low
+
+  * Drop 117_fix_crash_with_createglyphset.patch
+    - Dupe of patch 110
+  * Drop 03_fedora_glx_versioning.diff, 04_fedora_glx14-swrast.diff
+    - These patches were brought in by Debian to provide glx 1.4 support
+      which Fedora backported from xserver 1.8, however testing in
+      Ubuntu showed they caused a crash when closing Clutter apps (#550218),
+      and graphics corruption when opening windows.  Dropping these patches
+      returns us to GLX 1.2, which has been found to be stable; Debian has
+      also dropped these two patches.
+      (Fixes #565903).
+  * Drop 114_dri2_make_sure_x_drawable_exists.patch
+    - This was an early attempt by upstream which fixed the aforementioned
+      Clutter crash, but which introduced a memory leak.
+      (Fixes #565981)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 22 Apr 2010 17:24:38 -0700
+
+xorg-server (2:1.7.6-2ubuntu6) lucid; urgency=low
+
+  * Add 122_xext_fix_card32_overflow_in_xauth.patch:  Prevent overflow
+    of a CARD32 variable millis by doing bounds checking.  This is a
+    patch currently in discussion at fdo #27134, so this patch can be
+    dropped in favor of whatever upstream decides to include.
+    (LP: #519049)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 15 Apr 2010 14:10:53 -0700
+
+xorg-server (2:1.7.6-2ubuntu5) lucid; urgency=low
+
+  * Update patches in previous upload to fix FTBS issue.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 15 Apr 2010 11:03:01 -0700
+
+xorg-server (2:1.7.6-2ubuntu4) lucid; urgency=low
+
+  * Add several cherrypicks of fixes from upstream git tree which fix various
+    issues and that look safe with low or no risk of regression.
+    + 115_xext_fix_cursor_ref_counting.patch: Xext: Fix cursor reference
+      counting hazard.
+    + 116_fix_typos_in_swap_functions.patch: Fixes typos in several of the
+      glxcmdsswap routines.
+    + 117_fix_crash_with_createglyphset.patch:  Fixes crash introduced in
+      FindGlyphsByHash() if one client disconnects while a second is in
+      the middle of doing certain Glyph operations.
+    + 118_xkb_fix_garbage_init.patch: Fixes typo that can cause garbage
+      bits to get appended on the xkbControlsNotify changedControls mask
+      because it was uninitialized on the stack.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 14 Apr 2010 18:49:56 -0700
+
+xorg-server (2:1.7.6-2ubuntu3) lucid; urgency=low
+
+  * add support for omapfb to 111_armel-drv-fallbacks.patch
+
+ -- Alexander Sack <asac@ubuntu.com>  Mon, 12 Apr 2010 14:43:42 +0200
+
+xorg-server (2:1.7.6-2ubuntu2) lucid; urgency=low
+
+  [Bryce Harrington]
+  * Add 113_quell_nouveau_aiglx.patch: Don't emit error message about
+    AIGLX on nouveau.  3D is not supported yet on -nouveau so this error
+    message serves only to confuse bug reporters.
+    (LP: #529590)
+
+  [Robert Sarvatt]
+  * Add 114_dri2_make_sure_x_drawable_exists.patch: Makes sure
+    a corresponding X drawable exists before trying to use it, fixing
+    xserver segfaults under DRI2 when closing down GLX apps.
+    (LP: #550218)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 31 Mar 2010 16:37:45 -0700
+
+xorg-server (2:1.7.6-2ubuntu1) lucid; urgency=low
+
+  [ Timo Aaltonen ]
+  * Merge from Debian unstable. (LP: #546933)
+
+  [ Michael Casadevall ]
+  * Updated 111_armel-drv-fallbacks.patch to also add support for finding
+    dovefb devices in addition to imx51 ones. (LP: #550701)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 30 Mar 2010 22:01:12 +0300
+
+xorg-server (2:1.7.6-2) unstable; urgency=low
+
+  [ Timo Aaltonen ]
+  * Add 08-config-xorg-conf-d.diff, 09-inputclass-sans-abi9.diff,
+    10-config-libudev-backend.diff. Backport xorg.conf.d, inputclass
+    and libudev support from xserver 1.8. Replaces the patches we had
+    before. This allows us to migrate from a temporary udev based
+    input device configuration straight to the long term solution
+    introduced in 1.8.
+  * Add 11-xfree86-fix-video-fallback.diff from SUSE. Allows the video
+    fallback method to work when there's an xorg.conf around.
+  * Add 12-xfree86-dont-complain-about-missing-coredevices.diff.
+    No reason to complain about these, unless AEI is off.
+  * Add 13-unbreak-input-abi.diff. Keep the old NewInputDeviceRequest(),
+    rename the new as NIDR18() and call it from NIDR(). This way we
+    don't break the input ABI.
+  * Add 14-tone-down-nidr-errors.diff. Use X_INFO instead of X_ERROR.
+
+  [ Julien Cristau ]
+  * 15-keep-udev-x11-driver.diff: keep looking for the x11_driver udev
+    property as a transitional measure.  This should allow the new server to
+    work while drivers aren't transitioned to xorg.conf.d yet.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 30 Mar 2010 21:32:52 +0300
+
+xorg-server (2:1.7.6-1ubuntu3) lucid; urgency=low
+
+  * Extend 112_xaa-fbcomposite-fix-negative-size.patch to also correct a
+    mod() definition in the mi code which suffers the same flaw.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 29 Mar 2010 14:15:07 -0700
+
+xorg-server (2:1.7.6-1ubuntu2) lucid; urgency=low
+
+  * Add 112_xaa-fbcomposite-fix-negative-size.patch:  Prevent 3rd-party
+    controllable Xorg crash/exploit when XAA and compositing is in use.
+    Be more careful in sign-changes with mod().
+    (LP: #551193)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 29 Mar 2010 13:37:06 -0700
+
+xorg-server (2:1.7.6-1ubuntu1) lucid; urgency=low
+
+  [Timo Aaltonen]
+  * Merge from Debian unstable.
+  * Drop patch 107, included in Debian.
+  * Drop patch 108, included upstream.
+  * control: Drop the udeb, we don't need it for lucid.
+  * control: Relax/drop some build-deps caused by the udeb.
+
+  [Bryce Harrington]
+  * Add 110_findglyphbyhash-fix.patch from upstream to fix a sporadic
+    crash in FindGlyphByHash.
+    (LP: #401045)
+  * Renumber patch 201_armel-drv-fallbacks.patch to 111
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 24 Mar 2010 12:04:20 -0700
+
+xorg-server (2:1.7.6-1) unstable; urgency=low
+
+  [ Brice Goglin ]
+  * Add 06_dont_trap_access_to_timer_and_keyboard.diff,
+    thanks Samuel Thibault.
+
+  [ Timo Aaltonen ]
+  * New upstream release, closes: #574354.
+
+  [ Julien Cristau ]
+  * Don't build xserver-xorg-core-udeb on sparc.  The linker fails because
+    relocations have to be truncated when building statically against
+    libnettle.
+
+ -- Cyril Brulebois <kibi@debian.org>  Tue, 23 Mar 2010 16:59:08 +0100
+
+xorg-server (2:1.7.5.902-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * config/udev: fix adding unnamed devices.
+  * Build two flavours, one for the main package and one for the udeb.
+  * Add patch to fix Xorg build with XV disabled.
+
+  [ Timo Aaltonen ]
+  * Add 16-config-dont-filter-input-subsys.diff so for instance serial
+    wacom devices are initialized by the udev backend (LP: #522318,
+    closes: #568236).
+
+  [ Brice Goglin ]
+  * New upstream release.
+    + Allow for missing or disabled compat_output, closes: #572268, #554450.
+    + Reenable RECORD extension, closes: #570680.
+    + dix: try to ring the bell even if the current device doesn't have one,
+      closes: #564200.
+  * Refresh patches.
+  * Fix typo in xvfb-run.1, thanks Joey Hess, closes: #527490.
+  * Add 06_dont_trap_access_to_timer_and_keyboard.diff,
+    thanks Samuel Thibault.
+
+  [ Cyril Brulebois ]
+  * Add udeb needed for the graphical installer: xserver-xorg-core-udeb.
+  * Version/Bump some B-D to make sure xserver-xorg-core-udeb gets its
+    dependencies on the (recently-added) udebs rather than on the
+    libraries:
+     - libpciaccess-dev
+     - libudev-dev
+     - libxau-dev
+     - libxfont-dev
+  * Replace 02_Add-libgcrypt-as-an-option-for-sha1.diff with
+    02_Add-libgcrypt-and-libnettle-as-options-for-sha1.diff so that it's
+    also possible to link against libnettle. Link (unconditionally)
+    statically against libnettle.a to avoid an extra udeb for a few bytes.
+  * Add nettle-dev to Build-Depends; and pass --with-sha1=libnettle for
+    the udeb build (and --with-sha1=libgcrypt for the main build).
+  * Add myself to Uploaders.
+  * Tweak builderstring to use the name of the person responsible for the
+    upload instead of an host-specific one (Closes: #574017).
+
+ -- Cyril Brulebois <kibi@debian.org>  Mon, 15 Mar 2010 22:19:01 +0100
+
+xorg-server (2:1.7.5-1ubuntu4) lucid; urgency=low
+
+  * 201_armel-drv-fallbacks.patch: use imx driver if available on
+    armel imx51 systems; the current test checks for mxc_gpu
+    devices listed in /sys/devices/platform and ensures that the
+    imx_drv module can be loaded; if both succeed, imx driver is
+    used instead of fbdev; note: the mxc_gpu device test should be
+    replaced with parsing output of /proc/fb once the mxc driver
+    provides reasonable content there.
+
+ -- Alexander Sack <asac@ubuntu.com>  Wed, 24 Mar 2010 13:03:41 +0100
+
+xorg-server (2:1.7.5-1ubuntu3) lucid; urgency=low
+
+  * Add 109_fix-swcursor-crash.patch: Avoid dereferencing null pointer
+    while reloading cursors during resume.
+    (LP: #371405)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 11 Mar 2010 17:16:12 -0800
+
+xorg-server (2:1.7.5-1ubuntu2) lucid; urgency=low
+
+  [ Bryce Harrington ]
+  [Timo Aaltonen]
+  * Add 107_dont_filter_input_subsys.diff so for instance serial wacom
+    devices are initialized by the udev backend (LP: #522318)
+
+  [Bryce Harrington]
+  * Add 108_reenable_record_ext.patch: Upstream patch to make the
+    record callback work with the new internal core/Xi events mechanism
+    instead of xEvents. With this fix, the record extension can be
+    re-enabled.
+    (LP: #315456)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 02 Mar 2010 17:09:33 +0200
+
+xorg-server (2:1.7.5-1ubuntu1) lucid; urgency=low
+
+  [ Bryce Harrington ]
+  [Robert Hooker]
+  * Add 106_nouveau_autodetect.patch: makes nouveau the default driver
+    for supported cards when not explicitly named in xorg.conf.
+
+  [Timo Aaltonen]
+  * Merge from Debian unstable.
+  * Drop patch 101, included in Debian.
+
+  [Robert Collins]
+  * Add 199_xfvb-help-typo.patch to fix typo in help for xvfb (fdo #32990)
+  * Add 200_randr-null.patch to clarify a pointer initialization (fdo #26389)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 19 Feb 2010 13:24:15 +0200
+
+xorg-server (2:1.7.5-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * Remove myself from Uploaders
+
+  [ Brice Goglin ]
+  * New upstream release.
+    + Restore lastDeviceEventTime update in dixSaveScreens,
+      closes: #563816.
+    + Don't double-swap the RandR PropertyNotify event,
+      closes: #569036.
+    + Xi: reset the sli pointers after copying device classes,
+      closes: #566147.
+  * Bump Standards-Version to 3.8.4.
+
+ -- Brice Goglin <bgoglin@debian.org>  Tue, 16 Feb 2010 08:00:27 +0100
+
+xorg-server (2:1.7.4-2) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no
+    good reason.  Thanks, Colin Watson!
+
+  [ Brice Goglin ]
+  * Add 05_only_call_gamma_set_if_nonnull.diff to unbreak the nv driver,
+    closes: #564203.
+
+ -- Brice Goglin <bgoglin@debian.org>  Wed, 20 Jan 2010 23:51:26 +0100
+
+xorg-server (2:1.7.4-1) unstable; urgency=low
+
+  [ Timo Aaltonen ]
+  * New upstream release.
+
+  [ Julien Cristau ]
+  * Don't call config_init() until after InitInput() has initialized the event
+    queue, so that devices don't get enabled too early (closes: #564256,
+    #564324).
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 12 Jan 2010 10:49:22 +0000
+
+xorg-server (2:1.7.3.902-1ubuntu12) lucid; urgency=low
+
+  * Add 198_nohwaccess.patch: Needed for rootless X.  Adds a -nohwaccess
+    argument to make X not access the hardware ports directly.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 05 Feb 2010 22:17:20 -0800
+
+xorg-server (2:1.7.3.902-1ubuntu11) lucid; urgency=low
+
+  * Add 196_xvfb-fbscreeninit-handling.patch and 197_xvfb-randr.patch:
+    Adds xrandr support to xvfb.  Thanks lifeless!
+    (LP: #516123)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 04 Feb 2010 10:56:12 -0800
+
+xorg-server (2:1.7.3.902-1ubuntu10) lucid; urgency=low
+
+  * 100_rethrow_signals.patch: Fix SigAbortServer to cleanly exit(1) on a
+    non-signal crash, as the original upstream code does. Not exiting leads to
+    continuing back into the code which threw the error, which eventually
+    leads to writing into the already closed log file and other operations
+    which cause segfaults.
+  * Re-enable 100_rethrow_signals.patch.  Hello apport.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com>  Wed, 03 Feb 2010 17:29:53 -0800
+
+xorg-server (2:1.7.3.902-1ubuntu9) lucid; urgency=low
+
+  * Fully disable 100_rethrow_signals.patch as it seems to still cause
+    crashes.  Goodbye apport.
+    (LP: #506510)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 18 Jan 2010 23:31:08 -0800
+
+xorg-server (2:1.7.3.902-1ubuntu8) lucid; urgency=low
+
+  * Drop 160_log_timestamping.patch.  The bootup time objectives have been
+    met so this patch is no longer required.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Sat, 16 Jan 2010 02:28:30 -0800
+
+xorg-server (2:1.7.3.902-1ubuntu7) lucid; urgency=low
+
+  * Update 100_rethrow_signals.patch: Don't log more error messages after
+    the log has been closed, else it causes a SIGSEGV (signal 11) crash
+    under several different conditions, including on even ordinary error
+    exits.
+    (LP: #506510, #507345, #506977, #504497, #507083)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 15 Jan 2010 15:22:34 -0800
+
+xorg-server (2:1.7.3.902-1ubuntu6) lucid; urgency=low
+
+  * debian/xserver-xorg-core.preinst.in:
+    - Correct the name of the alternative that we need to remove.
+      Thanks to Steve Langasek for spotting the error.
+
+ -- Alberto Milone <alberto.milone@canonical.com>  Thu, 14 Jan 2010 12:50:19 +0100
+
+xorg-server (2:1.7.3.902-1ubuntu5) lucid; urgency=low
+
+  * debian/xserver-xorg-core.preinst.in:
+    - Make sure that the alternative which was previously provided by
+      xserver-xorg-core is removed.
+
+ -- Alberto Milone <alberto.milone@canonical.com>  Tue, 12 Jan 2010 11:37:49 +0100
+
+xorg-server (2:1.7.3.902-1ubuntu4) lucid; urgency=low
+
+  * debian/patches/191-Xorg-add-an-extra-module-path.patch:
+    - Patch from Mandriva to allow the use of an extra-modules-dir so that
+      the modules installed in this dir will override the ones in the
+      default directory.
+  * debian/rules:
+    - Remove alternatives stuff introduced in a previous upload.
+    - Configure with --with-extra-module-dir="/usr/lib/xorg/extra-modules".
+    - Do not install libglx.so and libdri.so in a different place any more.
+    - Do not install ld.so.conf file any more. Mesa will deal with this.
+  * debian/xserver-xorg-core.links:
+    - Do not create link to /usr/lib/xvmcconfig-standard/XvMCConfig.
+    - Remove links file.
+  * debian/xserver-xorg-core.postinst.in:
+    - Do not install an alternative any more. Mesa will deal with this.
+  * debian/xserver-xorg-core.prerm.in:
+    - Remove file.
+
+ -- Alberto Milone <alberto.milone@canonical.com>  Mon, 11 Jan 2010 14:48:35 +0100
+
+xorg-server (2:1.7.3.902-1ubuntu3) lucid; urgency=low
+
+  [ Julien Cristau ]
+  * Don't call config_init() until after InitInput() has initialized the event
+    queue, so that devices don't get enabled too early (closes: #564256,
+    #564324). (LP: #504254)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Sat, 09 Jan 2010 19:34:30 +0200
+
+xorg-server (2:1.7.3.902-1ubuntu2) lucid; urgency=low
+
+  * debian/rules:
+    - Make sure that /usr/lib/standard-x11/ld.so.conf points to
+      the libraries provided by mesa.
+
+ -- Alberto Milone <alberto.milone@canonical.com>  Fri, 08 Jan 2010 18:55:52 +0100
+
+xorg-server (2:1.7.3.902-1ubuntu1) lucid; urgency=low
+
+  [ Timo Aaltonen ]
+  * Merge from Debian unstable.
+
+  [ Michael Vogt ]
+  * Add 101_nv-crash-fix.diff: Do not crash if gamma_set is NULL.
+    (LP: #494627)
+
+  [ Alberto Milone ]
+  * Install libglx.so and libdri.so in /usr/lib/standard-x11 as X
+    seems to prefer the file in /usr/lib/xorg/modules/extensions/standard/
+    over links in /usr/lib/xorg/modules/extensions/.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 08 Jan 2010 14:21:15 +0200
+
+xorg-server (2:1.7.3.902-1) unstable; urgency=low
+
+  [ Timo Aaltonen ]
+  * Run udevadm trigger on postinst, and depend on udev [linux-any].
+
+  [ Julien Cristau ]
+  * Add xserver-common dependency on x11-xkb-utils for xkbcomp.
+  * Remove our copy of input_id, add Depends on new enough udev instead.
+  * New upstream release.
+  * Make xserver-common recommend xfonts-base, some clients don't work without
+    those.
+  * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 06 Jan 2010 17:44:59 +0000
+
+xorg-server (2:1.7.3.901-1ubuntu5) lucid; urgency=low
+
+  * Use alternatives to make it easier to switch between X11 and 3rd
+    party modules.
+  * Add link to /usr/lib/xvmcconfig-standard/XvMCConfig and use it
+    for alternatives.
+
+ -- Alberto Milone <alberto.milone@canonical.com>  Mon, 04 Jan 2010 12:08:17 +0100
+
+xorg-server (2:1.7.3.901-1ubuntu4) lucid; urgency=low
+
+  * xvfb: Depend again on xauth. Depend on x11-xkb-utils. LP: #500102.
+
+ -- Matthias Klose <doko@ubuntu.com>  Thu, 24 Dec 2009 12:20:02 +0100
+
+xorg-server (2:1.7.3.901-1ubuntu3) lucid; urgency=low
+
+  * Update 100_rethrow_signals.patch to work with xserver 1.7
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 18 Dec 2009 18:55:56 -0800
+
+xorg-server (2:1.7.3.901-1ubuntu2) lucid; urgency=low
+
+  [ Alberto Milone ]
+  * debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch:
+    Make the patch build again with xserver 1.7.
+
+  [ Timo Aaltonen ]
+  * Enable patch 190 now that it works.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 15 Dec 2009 14:49:39 +0200
+
+xorg-server (2:1.7.3.901-1ubuntu1) lucid; urgency=low
+
+  * Merge from Debian experimental.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Mon, 14 Dec 2009 11:34:33 +0200
+
+xorg-server (2:1.7.3.901-1) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * Enable GLX 1.4 on DRI2 and swrast (from upstream, via F12).
+  * xserver-xorg-dev: add Depends on x11proto-kb-dev and libxkbfile-dev for
+    xkbsrv.h (closes: #559676).  Thanks, Ron!
+  * Update input_id to the version in udev 149.
+  * Update xserver-xorg-core bug script to run udevadm info instead of lshal.
+
+  [ Brice Goglin ]
+  * New upstream release.
+    + Refresh patches.
+
+ -- Brice Goglin <bgoglin@debian.org>  Sat, 12 Dec 2009 17:46:45 +0100
+
+xorg-server (2:1.7.2-2ubuntu2) lucid; urgency=low
+
+  * local/64-xorg-xkb.rules: Use "program" instead of "file" when
+    grepping the XKB settings from console-setup.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 08 Dec 2009 13:17:04 +0200
+
+xorg-server (2:1.7.2-2ubuntu1) lucid; urgency=low
+
+  * Merge from Debian experimental. Remaining Ubuntu changes:
+    - debian/rules, debian/control:
+      + Disable SELinux, libaudit-dev is not in main yet (LP 406226).
+        Drop libaudit-dev from build-deps.
+    - debian/rules: Enable xcsecurity (LP 247537).
+    - local/xvfb-run*: Add correct docs about error codes (LP 328205)
+    - local/xvfb-run: Use "-extension Composite" to fix xvfb-run crashing.
+    - debian/patches:
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 135_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        169_mipointer_nullptr_checks.patch,
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 164_trap-aspect-ratios.patch:
+        Correct monitor EDIDs that have misreported aspect ratios.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 187_edid_quirk_hp_nc8430.patch:
+        Quirk for another LPL monitor (LP: #380009)
+      + 188_default_primary_to_first_busid.patch:
+        Pick the first device and carry on (LP 459512)
+      + 189_xserver_1.5.0_bg_none_root.patch:
+        Create a root window with no background.
+      + 190_cache-xkbcomp_output_for_fast_start_up.patch:
+        Cache keyboard settings.
+  * debian/control: Drop obsolete Conflicts/Breaks against -psb,
+    -synaptics and -evdev.
+  * debian/local/xserver-xephyr.1: Delete, upstream has Xephyr.1 now.
+  * Dropped patches:
+    - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch:
+      Upstream dropped it.
+    - 102_ubuntu_sharevts_load_cpu.patch: Upstream.
+    - 103_psb_auto.patch: Fallback to vesa done differently upstream.
+    - 110_fedora_no_move_damage.patch: Upstream dropped it.
+    - 140_quell_acpi_errmsgs.patch: Superseded.
+    - 153_make_dmx_compile.patch: Xdmx is fixed upstream.
+    - 156_exevents_copykeyclass_nullptrcheck.patch: No longer needed.
+      Appropriate checks are done on the pointers prior to CopyKeyClass
+      being called now.
+    - 158_raise_maxclients.patch: Breaks binary drivers.  We've had this
+      reverted for some time now, may as well just get rid of it entirely.
+    - 174_set_bg_pixmap_of_cow_to_none.patch: Upstream
+    - 177_animated_cursor_change_master.patch: Different fix upstream.
+    - 180_fedora_no_synaptics_mouse_synthesis.patch: Superseded.
+    - 181_fedora_log_proc_cmdline.patch: Upstream.
+    - 185_dix_badwindow.patch: Upstream.
+    - 186_autoconfig_geode.patch: Upstream.
+  * 189_xserver_1.5.0_bg_none_root.patch: Fetched a new version.
+  * 135_rethrow_signals.patch, 168_glibc_trace_to_stderr.patch:
+    Disabled until fixed to work with the current version.
+  * 160_log_timestamping.patch: Updated and re-enabled for boot speed
+    testing in Lucid.  This patch should be disabled by beta2.
+  * 169_mipointer_nullptr_checks.patch: Updated.  MIPOINTER() still
+    can return NULL under some circumstances, and its return values
+    are still being dereferenced without checking for NULL.
+  * 188_default_primary_to_first_busid.patch: Updated.  Still looks to be
+    relevant for certain multi-card systems.
+  * 190_cache-xkbcomp_output_for_fast_start_up.patch: Updated.
+  * control, local/64-xorg-xkb.rules: Don't depend on keyboard-configuration
+    until we have it.
+  * rules, local/64-xorg-xkb.rules: Use input_id from udev.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Mon, 07 Dec 2009 15:30:18 +0200
+
+xorg-server (2:1.7.2-2) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * debian/rules: upstream build system got fixed, no need to remove
+    configure-generated files.
+  * Steal input_id helper from udev, install it in /lib/xorg.  Thanks, Martin
+    Pitt!
+
+  [ Brice Goglin ]
+  * Cherry pick upstream commit to fix the ABI.
+
+ -- Brice Goglin <bgoglin@debian.org>  Mon, 30 Nov 2009 20:10:27 +0100
+
+xorg-server (2:1.7.2-1) experimental; urgency=low
+
+  * New upstream release
+    + Xorg sets umask to 022 (closes: #555308)
+  * Delete 09_debian_xserver_rtff.diff.  Was disabled since 1.3.99, and is not
+    necessary since the fall back to builtin fonts was added.
+  * Change the server's dependency on xserver-common to >= ${source:Version},
+    to allow installation of different versions of the various servers.
+  * Add build-dep on libglib2.0-dev, xkb-data and x11-xkb-utils for unit
+    tests, and run the tests unless nocheck is in DEB_BUILD_OPTIONS.
+  * Cherry-pick upstream commit to turn ModeDebug on during server startup,
+    replacing our Turn-on-ModeDebug-by-default.patch.
+  * Number our patches to make it easier to keep track of things.  Requested
+    by the Ubuntu folks.
+  * xvfb-run: retry a few times if Xvfb can't be started when using
+    --auto-servernum, to make concurrent invocations work (closes: #521075).
+    Thanks, Kees Cook!
+  * Use libudev instead of libhal for input hotplug on linux.
+  * Add udev rule to get keymap from /etc/default/keyboard.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 28 Nov 2009 16:48:43 +0100
+
+xorg-server (2:1.7.0-1) experimental; urgency=low
+
+  * Add missing Conflicts on xserver-xorg-video-5 and xserver-xorg-input-4.
+  * Add xkb-data to xserver-common's Depends.  XKB is mandatory in 1.7.
+  * Make all servers depend on xserver-common (= ${source:Version}).
+  * New upstream release
+    + fixes Xvfb crashes (closes: #529927)
+    + fixes DGA init crash (closes: #548716)
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 04 Oct 2009 15:57:01 +0200
+
+xorg-server (2:1.6.99.903-1) experimental; urgency=low
+
+  * New upstream snapshot.
+    + doesn't fill log file with errors when acpid isn't running
+      (closes: #487904, #500583)
+    + adds autoconfig for geode variants (closes: #544988)
+    + fixes idle time computation (closes: #542064)
+    + Xnest uses the host's mouse acceleration and speed (closes: #325181)
+    + Xephyr now has a manpage (closes: #427121)
+    + Xdmx works again (closes: #541254)
+  * Update build deps
+  * Update patch stack:
+    - 20_hurd-i386.diff applied upstream
+    - fedora-bad-fbdev-thats-mine.patch applied upstream
+    - fedora-pci-primary.diff superseded upstream
+    - fedora-vboxvideo.diff applied upstream
+    - kfreebsd-ftbfs.diff applied upstream
+    - Add-libgcrypt-as-an-option-for-sha1.diff refreshed
+    - Turn-on-ModeDebug-by-default.patch refreshed
+  * Cleanup some libtool cruft in debian/rules clean.
+  * Bump serverminver, videoabiver and inputabiver.
+  * Bump debhelper compat level to 5:
+    - handle dh_strip behaviour change
+    - fix xserver-xorg-core.install
+  * Bump Standards-Version to 3.8.3.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 29 Sep 2009 17:51:05 +0200
+
+xorg-server (2:1.6.4-2ubuntu6) lucid; urgency=low
+
+  * 189_xserver_1.5.0_bg_none_root.patch: Moblin patch to allow X to
+    create a root window with no background by passing the -nr
+    argument.  This will make X no longer clear the framebuffer when it
+    starts, thus eliminating a flicker between bootsplash and gdm.  -nr
+    is ignored if this feature is not supported by the driver.  This patch
+    is not upstream yet.
+    TESTERS:  Watch for screen corruption issues during X or app start.
+  * 190_cache-xkbcomp_output_for_fast_start_up.patch: Causes the X
+    Keyboard Compiler (xkbcomp) to create a cache file of the keyboard
+    settings.  This will make the 2nd and later boots slightly faster.
+    TESTERS:  Watch for issues relating to keyboard customizations not
+    taking effect properly following boot.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 23 Nov 2009 13:59:44 -0800
+
+xorg-server (2:1.6.4-2ubuntu5) lucid; urgency=low
+
+  * Rework xvfb-run patch to wait for server to come up before checking
+    status (LP: #481591, Debian bug 521075).
+
+ -- Kees Cook <kees@ubuntu.com>  Fri, 13 Nov 2009 16:15:36 -0800
+
+xorg-server (2:1.6.4-2ubuntu4) karmic; urgency=low
+
+  * Add 188_default_primary_to_first_busid.patch: X can abort if multiple
+    video devices are present, and none are marked as primary.  This makes
+    X just pick the first one it sees and carry on.
+    (LP: #459512)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 26 Oct 2009 10:05:44 -0700
+
+xorg-server (2:1.6.4-2ubuntu3) karmic; urgency=low
+
+  * local/xvfb-run: Fix race condition in xvfb-run that can cause
+    concurrent invocations to fail.
+    (LP: #348052)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 14 Oct 2009 15:21:51 -0700
+
+xorg-server (2:1.6.4-2ubuntu2) karmic; urgency=low
+
+  * Add 187_edid_quirk_hp_nc8430.patch: Quirk for another LPL monitor, to
+    fix huge font sizes due to invalid EDID from the hardware.
+    (LP: #380009)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 13 Oct 2009 02:25:46 -0700
+
+xorg-server (2:1.6.4-2ubuntu1) karmic; urgency=low
+
+  * Merge from Debian unstable.  (LP: #447010)
+    Remaining Ubuntu changes:
+    - debian/control:
+      + set Conflicts: xkb-data (<< 0.9), since xkb-path is
+        different from previous releases
+      + do not Conflict with xserver-xorg-video
+      + xvfb Depends on xauth, xfonts-base
+      + Set Maintainer to Ubuntu Core Developers
+    - debian/rules:
+      + build using -fno-stack-protector
+      + --with-os-vendor=Ubuntu
+    - debian/xserver-xorg-core.install:
+      + Add ioport, pcitweak, scanpci scripts & man pages
+    - debian/patches:
+      + 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch:
+        Specify correct paths to fonts
+      + 102_ubuntu_sharevts_load_cpu.patch:
+        close console fd only when ShareVTs
+      + 103_psb_auto.patch:
+        Autodetect poulsbo devices (but use -vesa since -psb is broken)
+      + 110_fedora_no_move_damage.patch:
+        further aiglx support
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 135_rethrow_signals.patch:
+        When aborting, re-raise signals for apport
+      + 140_quell_acpi_errmsgs.patch:
+        Avoid generating extraneous warnings when acpi is missing
+      + 153_make_dmx_compile.patch:
+        Change xcalloc -> calloc, so that dmx compiles.
+      + 156_exevents_copykeyclass_nullptrcheck.patch,
+        157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
+        166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
+        169_mipointer_nullptr_checks.patch,
+        172_cwgetbackingpicture_nullptr_check.patch:
+        Fix various segfaults in xserver by checking pointers for NULL
+        values before dereferencing them.
+      + 164_trap-aspect-ratios.patch:
+        Correct monitor EDIDs that have misreported aspect ratios.
+      + 165_man_xorg_conf_no_device_ident.patch
+        Correct man page
+      + 168_glibc_trace_to_stderr.patch:
+        Report abort traces to stderr instead of terminal
+      + 174_set_bg_pixmap_of_cow_to_none.patch:
+        Set background pixmap of composite overlay window to no background
+      + 177_animated_cursor_change_master.patch:
+        Don't create animated cursors for slave devices
+      + 180_fedora_no_synaptics_mouse_synthesis.patch:
+        Don't synthesize a mouse section if a synaptics device is found
+      + 181_fedora_log_proc_cmdline.patch:
+        Dump /proc/cmdline in the log file too
+      + 184_virtual_devices_autodetect.patch:
+        Use vesa for qemu device, which is not supported by cirrus
+      + 185_dix_badwindow.patch:
+        Don't return BadMatch from GetProperty if window isn't actually a window
+      + 186_autoconfig_geode.patch
+        Perform autodetection correctly for various geode devices
+  * Update 184_virtual_devices_autodetect.patch to only include inserting
+    cirrus, since vbox is covered by the new fedora patch.
+  * Drop patches already included upstream:
+    - 187_lastdeviceeventtime-no-reset.patch
+    - 178_glx_flush_cache.patch
+    - 179_glx_cleanup_drawables.patch
+    - 183_dont_reset_event_time.patch
+    - 182_negative_sync_transitions.patch
+  * Ubuntu bugs fixed as of this release:
+    - Generate key up event only when key is released.  (Fixed previously)
+      (LP: #403339)
+    - Fix XDPMS change event idle handling
+      (LP: #114336, #152999)
+    - Don't shutdown the libhal ctx if it failed to initialize.  Fixes
+      crash if HAL or dbus is not running or is interrupted.
+      (LP: #114336)
+    - Fix crash if SendCoreEvents is off.  Don't send events through
+      master in this case.
+      (LP: #368135)
+    - Fix SWCursor check in xf86CursorSetCursor to prevent cursor image
+      showing up on every screen with Xinerama.
+      (LP: #357901)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 09 Oct 2009 12:01:52 -0700
+
+xorg-server (2:1.6.4-2) unstable; urgency=low
+
+  * Add fix-dga-removal.patch, closes: #548724.
+
+ -- Brice Goglin <bgoglin@debian.org>  Wed, 30 Sep 2009 22:40:29 +0200
+
+xorg-server (2:1.6.4-1) unstable; urgency=low
+
+  * New upstream release.
+  * Update 20_hurd-i386.diff, thanks Samuel Thibault, closes: #548606.
+  * Drop render-return-the-supported-version.patch, applied upstream.
+
+ -- Brice Goglin <bgoglin@debian.org>  Mon, 28 Sep 2009 07:23:07 +0200
+
+xorg-server (2:1.6.3.901-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * Add patch stolen from Fedora to add the vboxvideo driver to the
+    autodetection routine (closes: #540884).
+  * Add built-ins to the default font path so that non-Xorg servers can use
+    them (closes: #542707).  Thanks, Josselin Mouette!
+  * Add avr32 to the libselinux-dev/libaudit-dev build-deps (closes: #543540).
+    Thanks, Bradley Smith!
+  * Add patch to return the actually supported version in RenderQueryVersion
+    rather than whatever renderproto version the server built against.
+  * New upstream release.
+    + idle counter computation fixes (closes: #542064)
+  * Cherry-pick three more patches nominated on
+    http://www.x.org/wiki/Server16Branch:
+    - Don't reset the lastDeviceEventTime when doing DPMS actions
+    - dri2: Don't crash if pPriv is NULL
+    - EXA: Only take special code path for 1x1 fill for pixmaps
+
+  [ David Nusinow ]
+  * Update xsfbs to 5693792171d885769e58dcccc053c08b11acd12a
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 14 Sep 2009 15:33:46 +0200
+
+xorg-server (2:1.6.3-1ubuntu7) karmic; urgency=low
+
+  * Add 187_lastdeviceeventtime-no-reset.patch: Avoids resetting IDLETIME on
+    DPMS events.  Cherrypick from upstream.
+    (LP: #397839)
+
+ -- Loïc Minier <loic.minier@ubuntu.com>  Mon, 28 Sep 2009 10:54:08 +0200
+
+xorg-server (2:1.6.3-1ubuntu6) karmic; urgency=low
+
+  * Add 186_autoconfig_geode.patch:  Add autoconfiguration support for
+    older geode cards.  Cherrypick from upstream.
+    (LP: #423866)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 08 Sep 2009 15:43:28 -0700
+
+xorg-server (2:1.6.3-1ubuntu5) karmic; urgency=low
+
+  * Add 185_dix_badwindow.patch: dixLookupWindow may return BadMatch if
+    the window in question isn't actually a window. In this case,
+    GetProperty needs to return BadWindow - not BadMatch.  Fixes unexpected
+    crash in some GNOME applications not expecting to get BadMatch returned
+    from this function call.
+    (LP: #321041)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 03 Sep 2009 18:27:04 -0700
+
+xorg-server (2:1.6.3-1ubuntu4) karmic; urgency=low
+
+  * Add 184_virtual_devices_autodetect.patch: Automatic driver detection
+    for vbox and kvm for non-cirrus devices.
+    (LP: #338219, #348497)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 24 Aug 2009 14:58:22 -0700
+
+xorg-server (2:1.6.3-1ubuntu3) karmic; urgency=low
+
+  * Add 183_dont_reset_event_time.patch:  Upstream cherrypick.
+    Fix another random display blanking issue.  When we turn off DPMS with
+    DPMSModeOff and do dixSaveScreens, don't reset the event time else
+    session clients using IDLETIME will be reset.
+    See http://blogs.gnome.org/hughsie/2009/08/17/
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 19 Aug 2009 10:21:45 -0700
+
+xorg-server (2:1.6.3-1ubuntu2) karmic; urgency=low
+
+  * Add 182_negative_sync_transitions.patch:  Upstream cherrypick.
+    Fix random blanking display when system is not idle, caused by
+    mishandling of negative transition triggers in XSync.
+    (LP: #397839)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 14 Aug 2009 11:21:09 -0700
+
+xorg-server (2:1.6.3-1ubuntu1) karmic; urgency=low
+
+  * Merge from Debian unstable.
+  * control: Drop libaudit-dev from build-deps, since SELinux-support
+    is still disabled anyway.
+  * Drop 182_fedora_quirk_pea.patch, included in 1.6.3.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Wed, 05 Aug 2009 14:11:01 +0300
+
+xorg-server (2:1.6.3-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Brice Goglin <bgoglin@debian.org>  Sat, 01 Aug 2009 08:55:40 +0200
+
+xorg-server (2:1.6.2.901-1ubuntu3) karmic; urgency=low
+
+  * Add 182_fedora_quirk_pea.patch:  Quirk for Peacock Ergovision 19
+    to use first detailed mode.
+  * Add 181_fedora_log_proc_cmdline.patch: Log the /proc/cmdline into
+    Xorg.0.log
+  * Add 180_fedora_no_synaptics_mouse_synthesis.patch: Don't synthesise a
+    mouse section if synaptics devices are found.
+    (LP: #406291, #405281, #396908)
+  * Actually enable patches 178 and 179
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 04 Aug 2009 02:37:12 -0700
+
+xorg-server (2:1.6.2.901-1ubuntu2) karmic; urgency=low
+
+  * Add 178_glx_flush_cache.patch and 179_glx_cleanup_drawables.patch:
+    - Cleanup destroyed windows and drawables, to prevent crash during
+      compiz startup.
+      (LP: #408293)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 03 Aug 2009 07:55:12 -0700
+
+xorg-server (2:1.6.2.901-1ubuntu1) karmic; urgency=low
+
+  [ Timo Aaltonen ]
+  * Merge from Debian unstable. (LP: #403316)
+  * Drop 170_primary_pci_video_device.patch, included in Debian
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 28 Jul 2009 15:34:16 +0300
+
+xorg-server (2:1.6.2.901-1) unstable; urgency=low
+
+  * New upstream release candidate.
+  * Bump mesa Build-Depends to >= 7.5 to fix DRI2 madness again,
+    closes: #538637.
+
+ -- Brice Goglin <bgoglin@debian.org>  Mon, 27 Jul 2009 00:17:42 +0200
+
+xorg-server (2:1.6.2-1) unstable; urgency=low
+
+  [ Brice Goglin ]
+  * New upstream release.
+    + Fixes dri2 madness introduced in previous upload
+      (closes: #534522, #536019, #534766, #534771, #534890).
+    + Fixes xkb bogus length in write keyboard desc, closes: #529625.
+    + Fixes SWCursor being multiply rendered, closes: #526260.
+    + Drop Change-default-for-ExaOptimizeMigration-to-false.diff,
+      applied upstream.
+    + Pull upstream server-1.6-branch up to commit 606f6dba.
+  * Bump serverminver to 2:1.6.2 for the dri2 upstream changes in the
+    previous upload.
+
+  [ Julien Cristau ]
+  * Bump xserver-xorg-dev's dependency on dri2proto to >= 2.1 for the same
+    reason.
+  * Don't set PCI_TXT_IDS_DIR, we don't use that anymore.
+  * xserver-xorg-core.bug.script: add a newline between X log and lshal
+    output.
+
+ -- Brice Goglin <bgoglin@debian.org>  Mon, 13 Jul 2009 23:35:13 +0200
+
+xorg-server (2:1.6.1.901-3) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * xvfb-run: don't pass the magic cookie to xauth on the command line
+    (CVE-2009-1573; closes: #526678).  Thanks, Loïc Minier!
+  * xvfb-run: use mktemp to create the temporary directory.
+  * Change default for ExaOptimizeMigration to false.  This option still
+    causes visual corruption in some cases.  Thanks, Michel Dänzer!
+  * Only include hal info for keyboards, mice, touchpads and tablets in the
+    bug script.
+  * In the bug script, grep dmesg for agp in addition to drm.
+  * Add patch stolen from Fedora to disable the fbdev driver when it's loaded
+    together with a PCI or SBUS driver, instead of calling FatalError (closes:
+    #508476).
+  * Add patch stolen from Fedora to try and detect the primary PCI device by
+    mapping the legacy VGA bios and comparing the vendor and device ids.
+    Previously if there was more than one VGA device and the config didn't
+    specify BusIDs, the server would just fail to start, so this hack should
+    improve things.
+  * Update configure options:
+    + use --enable-xvfb instead of --enable-vfb
+    + drop --disable-builtin-fonts, --enable-xtrap, --disable-kdrive-vesa,
+      --disable-lbx, --disable-xprint, --disable-xorgconfig, --disable-xorgcfg
+      which don't exist anymore
+    + use --disable-config-hal and --disable-dri on hurd-i386
+    + reorder options to match configure.ac, and use explicit
+      --enable/--disable instead of using the defaults / autodetection
+  * Don't recommend xfonts-base.  libXfont provides builtin versions of the
+    fixed and cursor fonts, which are the only required ones.  Keep xfonts-*
+    packages in Suggests for xserver-xorg-core.
+  * Bump Standards-Version to 3.8.2 now that we have README.source.
+  * Drop Build-Conflicts on xlibs-static-dev; it's only in oldstable at this
+    point.
+  * Pull from upstream server-1.6-branch as of June 23rd (commit dbac41b).
+  * Bump build-dep on dri2proto to 2.1 for new protocol.
+  * Bump build-dep on libselinux1-dev to 2.0.80 for avc_netlink_acquire_fd.
+
+  [ David Nusinow ]
+  * Add README.source
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 23 Jun 2009 19:52:10 +0200
+
+xorg-server (2:1.6.1.901-2ubuntu2) karmic; urgency=low
+
+  * Add xserver-1.5.0-bad-fbdev-thats-mine.patch - If no xorg.conf is
+    specified, framebuffer device can erroneously grab the PCI.  Make
+    it fail instead in this case.
+    (LP: #383407)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 24 Jun 2009 15:24:44 -0700
+
+xorg-server (2:1.6.1.901-2ubuntu1) karmic; urgency=low
+
+  * Merge from Debian unstable.
+  * Dropped patches:
+    - obsolete:
+      100_xserver_exa_force_greedy.patch
+      107_fedora_dont_backfill_bg_none.patch
+    - upstream:
+      163_thinko_in_xf86targetpreferred.patch
+      171_xkb_geometry_copying.patch
+      173_edid_quirk_philips_lcd.patch
+      175_set_pointer_screen_in_xtestfakeinput.patch
+      176_quell_warning_exacopydirty.patch
+    - included by Debian: 999_default_modedebug_on.patch
+  * Disable 143_default_to_vesa.patch for now, breaks autoconfiguration
+    when the pci-ids directory exists but has no match. (LP: #379504)
+  * Disable SELinux support for now, because libaudit-dev needs to be
+    moved to main first.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Sun, 24 May 2009 00:32:37 +0300
+
+xorg-server (2:1.6.1.901-2) unstable; urgency=low
+
+  * Merge from upstream server-1.6-branch (commit a9f85dce).
+  * Fix FTBFS on kfreebsd (closes: #525475).  Thanks, Petr Salinger!
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 14 May 2009 17:37:40 +0200
+
+xorg-server (2:1.6.1.901-1) experimental; urgency=low
+
+  * New upstream development release
+    + fixes crash in CheckMotion with xinerama (closes: #524853)
+    + Refresh 20_hurd-i386.diff
+
+  [ Brice Goglin ]
+  * Add 20_hurd-i386.diff to fix FTBFS on hurd-i386,
+    thanks Samuel Thibault! (closes: #523970)
+
+  [ David Nusinow ]
+  * Have the reportbug script append lshal and drm info.
+    The drm info comes from grepping dmesg output.
+
+  [ Julien Cristau ]
+  * Properly initialize libgcrypt in the libgcrypt patch (closes: #524822).
+    Thanks, Sven Joachim!
+
+ -- David Nusinow <dnusinow@debian.org>  Mon, 11 May 2009 21:50:37 -0400
+
+xorg-server (2:1.6.1-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * Disable dri2 on hurd-i386.  Thanks, Samuel Thibault!
+
+  [ Brice Goglin ]
+  * New upstream release.
+
+ -- Brice Goglin <bgoglin@debian.org>  Wed, 15 Apr 2009 13:30:51 +0200
+
+xorg-server (2:1.6.0-1) unstable; urgency=low
+
+  [ David Nusinow ]
+  * Add 0001-xorg.conf-5-refer-to-mousedrv-4-.-Debian-394058.patch to
+    refer to correct (semi-obsolete) mouse driver manpage.
+    closes: #394058
+
+  [ Julien Cristau ]
+  * New upstream release.
+  * 0001-mi-force-the-paired-kbd-device-before-CopyKeyClass.patch: remove,
+    included upstream.
+  * Turn on ModeDebug by default.
+  * Use libgcrypt for SHA1 instead of OpenSSL's libcrypto.
+  * Build the xselinux extension on Linux architectures.
+  * Remove build-dependencies on x11proto-evie-dev, x11proto-trap-dev,
+    x11proto-xf86misc-dev; the corresponding extensions are removed.
+  * Remove build-dependencies on x11proto-print-dev, libfreetype6-dev and
+    xfonts-utils since we don't build Xprt anymore.
+  * Fix lintian warnings about xserver-xorg-core.NEWS formatting.
+  * Move -dbg package to new section debug, add ${misc:Depends} where missing.
+  * Remove unused 06_use_proc_instead_of_sysfs_for_pci_domains.diff, obsoleted
+    by pci-rework.
+  * Merge changelog entries 2:1.4.2-9 to 2:1.4.2-11.
+  * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 09 Apr 2009 00:36:40 +0100
+
+xorg-server (2:1.6.0-0ubuntu15) karmic; urgency=low
+
+  * Re-enable 999_default_modedebug_on.patch to provide debug info in
+    Xorg.0.log for development series.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Sun, 10 May 2009 22:35:02 -0700
+
+xorg-server (2:1.6.0-0ubuntu14) jaunty; urgency=low
+
+  * Add 177_animated_cursor_change_master.patch: Fixes crash when using
+    animated cursors.
+    (LP: #358009)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 08 Apr 2009 18:52:56 -0700
+
+xorg-server (2:1.6.0-0ubuntu13) jaunty; urgency=low
+
+  * Add 176_quell_warning_exacopydirty.patch: Quells innocuous but scary
+    sounding "exaCopyDirty: Pending damage region empty!" warning, as it
+    can lead to false-positives with bug reporters.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 08 Apr 2009 14:49:36 -0700
+
+xorg-server (2:1.6.0-0ubuntu12) jaunty; urgency=low
+
+  * local/xvfb-run: Revert change from 2:1.6.0-0ubuntu9; prevents running
+    multiple times.
+    (LP: #357338.  Reopen 348052 rejecting patch)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 07 Apr 2009 15:21:32 -0700
+
+xorg-server (2:1.6.0-0ubuntu11) jaunty; urgency=low
+
+  * Add 175_set_pointer_screen_in_xtestfakeinput.patch: Fixes issue when
+    using Vino, mouse cursor can get stuck in the upper left corner of the
+    screen.  The POINTER_SCREEN flag must be set explicitly for XTest core events to avoid
+    out-of-range events when the lastSlave was an SD with an explicit axis range.
+    Device events sent through XTest don't need this flag, they are expected to be
+    in the valuator range of the device anyway.
+    (LP: #337926)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 06 Apr 2009 17:22:35 -0700
+
+xorg-server (2:1.6.0-0ubuntu10) jaunty; urgency=low
+
+  * debian/patches/174_set_bg_pixmap_of_cow_to_none.patch:
+    - Set bg pixmap of composite overlay window to None.
+      Thanks to Havoc Pennington for the patch.
+      (LP: #356254).
+
+ -- Alberto Milone <alberto.milone@canonical.com>  Mon, 06 Apr 2009 15:06:14 +0200
+
+xorg-server (2:1.6.0-0ubuntu9) jaunty; urgency=low
+
+  * local/xvfb-run: Fixes race condition with concurrent invocations
+    (LP: #348052)
+  * local/xvfb-run, xvfb-run.1: Add correct docs about error codes
+    (LP: #328205)
+  * local/xserver-xephyr.1, rules, xserver-xephyr.install: Add man page
+    for xephyr
+    (LP: #134906)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 01 Apr 2009 20:37:22 -0700
+
+xorg-server (2:1.6.0-0ubuntu8) jaunty; urgency=low
+
+  * Add 173_edid_quirk_philips_lcd.patch :
+    Quirk for wrongly reported screen dimensions.
+    Fixes "huge fonts" issues.
+    (LP: #353074)
+
+ -- Tormod Volden <debian.tormod@gmail.com>  Wed, 01 Apr 2009 19:47:13 +0200
+
+xorg-server (2:1.6.0-0ubuntu7) jaunty; urgency=low
+
+  * Add 172_cwgetbackingpicture_nullptr_check.patch:
+    - cwGetBackingPicture can segfault when minimizing/maximizing firefox with
+      a flash video playing.  This appears to be a race condition in which the
+      backing picture's data is not always fully defined.
+      (LP: #319402)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 30 Mar 2009 22:20:17 -0700
+
+xorg-server (2:1.6.0-0ubuntu6) jaunty; urgency=low
+
+  * Add 171_xkb_geometry_copying.patch:
+    - Fixes crash when plugging/unplugging USB devices due to incorrect
+      copying of XKB geometry base_color and label_color.  Patch
+      cherrypicked from upstream.
+      (LP: #333222, #321946)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 27 Mar 2009 19:58:33 -0700
+
+xorg-server (2:1.6.0-0ubuntu5) jaunty; urgency=low
+
+  [Tormod Volden]
+  * Disable 160_log_timestamping.patch before the beta, this was only used
+    for testing, and the patch also has a serious stack corruption bug.
+    (LP: #328035)
+
+  [Bryce Harrington]
+  * Disable 999_default_modedebug_on.patch before the beta, this was used
+    only for testing.
+  * Add 169_mipointer_nullptr_checks.patch:
+    - MIPOINTER() can return NULL in some circumstances, so always check
+      its return value before dereferencing.
+    - Fixes crash with keyrepeat on non-primary screen on -nvidia when
+      using Xinerama (and probably other serious mipointer-related crashes)
+      (LP: #324465)
+  * Add 170_primary_pci_video_device.patch:
+    - Patch from redhat
+    - Fixes failure when multiple video cards are present.  Xserver currently
+      exits with an error "(EE) No device detected" in such cases.
+      (LP: #267241)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 24 Mar 2009 09:57:17 -0700
+
+xorg-server (2:1.6.0-0ubuntu4) jaunty; urgency=low
+
+  * Add 168_glibc_trace_to_stderr.patch:
+    - Catch glibc internal abort traces on stderr instead of to the
+      controlling terminal (LP: #345748).
+
+ -- Kees Cook <kees@ubuntu.com>  Thu, 19 Mar 2009 22:39:33 -0700
+
+xorg-server (2:1.6.0-0ubuntu3) jaunty; urgency=low
+
+  * Add 165_man_xorg_conf_no_device_ident.patch:
+    - Device identifier no longer necessary in Screen section of
+      xorg.conf.  Update man page accordingly.
+      (LP: #261577)
+  * Add 166_nullptr_xinerama_keyrepeat.patch:
+    - Avoids null pointer dereference when holding down keys on
+      non-primary screen when using TwinView / Xinerama on -nvidia.
+      (LP: #324465)
+  * Add 167_nullptr_xisbread.patch:
+    - Avoids null pointer dereference in XisbRead to prevent a (difficult
+      to reproduce) crash during or after a resume from RAM.
+      (LP: #324368)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 19 Mar 2009 00:17:40 -0700
+
+xorg-server (2:1.6.0-0ubuntu2) jaunty; urgency=low
+
+  * Add 163_thinko_in_xf86targetpreferred.patch:
+    - For monitors that do not define a "preferred" mode, if the monitor
+      is not connected to the first output, X wouldn't pick up the mode
+      correctly, resulting in a "No modes" error in Xorg.0.log and dropping
+      user to failsafe-X mode.
+      (LP: #335214)
+  * Add 164_trap-aspect-ratios.patch:
+    - Some monitors fib in the EDID they provide, giving their physical
+      dimensions in the global block, and their aspect ratio(!) in
+      the detailed timings.  This totally messes up DPI calculations
+      resulting in huge fonts.
+      (LP: #320930)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 18 Mar 2009 20:47:12 -0700
+
+xorg-server (2:1.6.0-0ubuntu1) jaunty; urgency=low
+
+  [ Bryce Harrington ]
+  * New upstream release
+    - Fixes segfault during X startup for drivers with RANDR < 1.2
+      (LP: #319210)
+    - Fixes EDID for monitors that incorrectly report aspect ratio instead
+      of resolution (LP: #311485)
+    - Fixes issue where X stops responding to mouse clicks after some time
+      if using Xinerama. (LP: #296167)
+  * Add 162_null_crtc_in_rotation.patch: Fixes crash when two displays on
+    separate cards are attached.  X doesn't work with multiple cards yet,
+    but crashing is not an appropriate way to handle such a situation.
+    (LP: #139990)
+
+  [ Timo Aaltonen ]
+  * 159_xinerama_focus.patch,
+    161_force_paired_kbd_device.patch:
+    - Dropped, applied upstream
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 06 Mar 2009 14:44:31 -0800
+
+xorg-server (2:1.5.99.902-1) experimental; urgency=low
+
+  * New upstream release candidate.
+  * xserver-xorg-core.install: there are no more font modules.
+  * 0001-mi-force-the-paired-kbd-device-before-CopyKeyClass.patch: new patch,
+    fixes a crash with some multimedia keyboards (closes: #513384).
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 31 Jan 2009 19:32:31 +0100
+
+xorg-server (2:1.5.99.902-0ubuntu7) jaunty; urgency=low
+
+  * Add 161_force_paired_kbd_device.patch: Fixes issue where a multimedia
+    keyboard (or keyboard-like device) sends its multimedia key events
+    through the mouse device file.  In this case, pair the device with the
+    master before processing the events.  Patch cherrypicked from upstream.
+    (LP: #318261)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 17 Feb 2009 17:20:51 -0800
+
+xorg-server (2:1.5.99.902-0ubuntu6) jaunty; urgency=low
+
+  * Add 999_default_modedebug_on.patch.  Defaults ModeDebug to on.
+    Upstream requests that users include this option when forwarding bugs
+    upstream, thus it should be carried at least during development and
+    reverted by -beta.  Performance won't be impacted, and boot time will
+    be slowed only a negligible amount, as it merely adds a few additional
+    prints.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 10 Feb 2009 14:06:38 -0800
+
+xorg-server (2:1.5.99.902-0ubuntu5) jaunty; urgency=low
+
+  * Revert 158_raise_maxclients.patch.  Breaks -nvidia.  Binary drivers FTL.
+    (LP: #326344)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 09 Feb 2009 13:51:04 -0800
+
+xorg-server (2:1.5.99.902-0ubuntu4) jaunty; urgency=low
+
+  * 160_log_timestamping.patch: Only add timestamp on tagged messages
+    (LP: #285787)
+
+ -- Tormod Volden <debian.tormod@gmail.com>  Fri, 06 Feb 2009 23:33:11 +0100
+
+xorg-server (2:1.5.99.902-0ubuntu3) jaunty; urgency=low
+
+  * Add 160_log_timestamping.patch: Show timestamps in Xorg.*.log
+    files.
+    (LP: #285787)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 06 Feb 2009 06:28:48 -0800
+
+xorg-server (2:1.5.99.902-0ubuntu2) jaunty; urgency=low
+
+  [Bryce Harrington]
+  * Add 157_check_null_modes.patch: Catch null pointer dereference in
+    video mode selection, which can cause xserver crash when using SDL
+    applications with qemu/kvm.
+    (LP: #300310)
+  * Add 158_raise_maxclients.patch to raise max number of clients from 256
+    to 512.  Trade-off is that this reduces client resources available to
+    1,048,576 total resources (which should still be ample).
+    (LP: #260138)
+
+  [Steven Harms]
+  * 159_xinerama_focus.patch: Resolves xinerama focus issues
+    with multiple screens
+    (LP: #41301)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 04 Feb 2009 22:33:28 -0800
+
+xorg-server (2:1.5.99.902-0ubuntu1) jaunty; urgency=low
+
+  * New upstream release candidate.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Sat, 31 Jan 2009 11:03:52 +0200
+
+xorg-server (2:1.5.99.901-2) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * Bump libdrm-dev build-dep to help out sbuild.
+
+  [ Timo Aaltonen ]
+  * debian/rules: Disable builtin fonts (LP: #308649, closes: #512706)
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 23 Jan 2009 21:16:14 +0100
+
+xorg-server (2:1.5.99.901-1ubuntu1) jaunty; urgency=low
+
+  * Merge with Debian experimental.
+  * debian/rules: Include xorg-server.conf for dbus support.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 23 Jan 2009 13:53:33 +0200
+
+xorg-server (2:1.5.99.901-1) experimental; urgency=low
+
+  * New upstream release candidate.
+    + adds autodetection of sbus devices (closes: #483942).
+      Thanks, Bernhard R. Link!
+    + RandR version 1.3 adds panning (closes: #509699).
+    + fixes a crash with XAA and fb24_32ReformatTile (closes: #443480).
+    + correctly sets RAW mode on the console when xorg.conf is absent
+      (closes: #505746).
+
+  [ Timo Aaltonen ]
+  * debian/control:
+    - Add x11proto-dri2-dev to build-depends.
+    - Bump the x11proto-randr-dev build-dep version to 1.2.99.3. 
+    - Bump the libpixman-1-dev build-dep version to 0.13.2.
+    - Bump the xtrans-dev build-dep version to 1.2.2.
+    - Bump the x11proto-xext-dev build-dep version to 7.0.3.
+    - Bump the x11proto-input-dev build-dep version to 1.5.
+    - Bump the libgl1-mesa-dev and mesa-common-dev build-dep to
+      7.2+git20081209.a0d5c3cf.
+    - Bump the x11proto-core build-dep to 7.0.13.
+    - Add a build-dep on libxinerama-dev.
+    - Conflict xserver-xorg-video-4, xserver-xorg-input-2.1.
+  * debian/rules:
+    - Enable dri2 again.
+  * debian/patches:
+    02_Disable-DRI-in-Xephyr.patch
+    03_glx-init-infinite-loop.diff
+    - Dropped, implemented upstream.
+    13_debian_add_xkbpath_env_variable.diff
+    - Disabled for now, needs to be reimplemented or dropped.
+  * debian/{input,video}abiver: Bump the input (4) and videoabiver (5).
+  * debian/serverminver: Bump to 2:1.5.99.901.
+
+  [ Julien Cristau ]
+  * Ditch the GLX Public License and the CID Font Code Public License from
+    debian/copyright.  The CID code has been removed a while ago, and all code
+    under the GLXPL has been relicensed to the SGI Free Software License B 2.0.
+    This finally closes: #211765.
+
+  [ Yves-Alexis Perez ]
+  * debian/control: update deps for xserver-xorg-dev:
+    - libpixman-1-dev (>= 0.13.2-1)
+    - x11proto-core-dev (>= 7.0.14)
+    - x11proto-input-dev (>= 1.5.0)
+    - x11proto-xext-dev (>= 7.0.4)
+    - x11proto-randr-dev (>= 1.2.99.3)
+    - add x11proto-dri2-dev
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 21 Jan 2009 20:59:34 +0100
+
+xorg-server (2:1.5.99.901-0ubuntu1) jaunty; urgency=low
+
+  [ Timo Aaltonen ]
+  * debian/rules: Enable dbus-support.
+  * Merge current server-1.6-branch.
+  * Disable patch 107 for now, to see what kind of a performance hit
+    it'll be. The problem it causes is random garbage on windows
+    while apps are being loaded.
+    (LP: #254468)
+  * Remove patches 150, 151, 152, 154, applied upstream.
+
+  [ Bryce Harrington ]
+  * 156_exevents_copykeyclass_nullptrcheck.patch: Add several NULL pointer
+    checks in CopyKeyClass to prevent SEGFAULT seen when pressing button
+    on an ATI USB remote control.
+    (LP: #311254)
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Sat, 17 Jan 2009 16:17:58 +0200
+
+xorg-server (2:1.5.99.3-0ubuntu3) jaunty; urgency=low
+
+  [Timo Aaltonen]
+  * debian/rules: Disable builtin fonts (LP: #308649)
+
+  [Bryce Harrington]
+  * 135_rethrow_signals.patch:  Update for 1.6 and re-enable.
+    (LP: #226668)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 16 Dec 2008 19:04:14 -0800
+
+xorg-server (2:1.5.99.3-0ubuntu2) jaunty; urgency=low
+
+  * Merge server-1.6-branch (LP: #308225).
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Tue, 16 Dec 2008 10:00:58 +0200
+
+xorg-server (2:1.5.99.3-0ubuntu1) jaunty; urgency=low
+
+  * Merge from debian experimental git branch.
+  * Dropped patches:
+    - 103_inputproto_1.4.3_is_fine.patch: obsolete
+    - 137_add_device_property_support.patch: upstream
+    - 138_look_at_all_bytes_of_dev_enabled.diff: upstream
+    - 141_improved_driver_selection.patch: upstream
+    - 150_no_visibility_notify_on_unredirect.patch: upstream
+  * 110_fedora_no_move_damage.patch modified to use new function names.
+  * Renumbered 142_psb_auto.patch to 103.
+  * Add a couple of patches from the proposed queue:
+    - 150_dont-update-vcp-valuators.patch
+      The VCP doesn't need to update the valuators anyway since it cannot
+      send XI events. Just skip that bit.
+    - 151_allow-null-as-rulesfile.patch
+      If no rules file is given, simply re-use the previous one. If no
+      RF is given the first time this function is called, use the
+      built-in default.
+    - 152_let-the-ddx-decide-on-the-xkbrulesdefaults.patch
+      Rather than assuming rules in the CoreKeyboardProc, init the default
+      rules in InitCoreDevices, then re-use them later.
+  * Add 153_make_dmx_compile.patch
+    - Change xcalloc -> calloc, so that dmx compiles. Not tested if it
+      also works.
+  * Drop patch 136, since SwitchCoreKeyboard is gone, and patches 151/152
+    basically reimplement the functionality.
+  * Add 154_force-copykeyclass-for-key-events.patch, to fix fdo
+    bug 19048. Without this the server default layout would always be
+    used.
+
+  [ Bryce Harrington ]
+  * Patch 135 updated so that apport actually works now, but leave it
+    disabled until the code is updated for 1.6.
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Mon, 15 Dec 2008 11:34:53 +0200
+
+
+xorg-server (2:1.5.3-1ubuntu1) jaunty; urgency=low
+
+  * Merge from debian-experimental, remaining changes:
+   + debian/control:
+    - x11proto-input-dev, libxi-dev build-deps bumped because of
+      input properties.
+    - Conflict with xserver-xorg-video-psb << 0.15.0-0ubuntu1~804um5
+      as these versions didn't have an ABI provide.
+    - Breaks old synaptics, evdev which didn't have properties.
+   + debian/patches:
+    - 100_xserver_exa_force_greedy.patch
+      Provide a mechanism for drivers to force greedy mode on.
+    - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch
+      Fixes document fontpaths shown in the man page.
+    - 102_ubuntu_sharevts_load_cpu.patch
+      Close console fd only when using --sharevts.
+    - 103_inputproto_1.4.3_is_fine.patch:
+      Don't require inputproto 1.4.4 in configure.ac.
+    - 107_fedora_dont_backfill_bg_none.patch
+      Disable backfilling of windows created with bg=none, which
+      would otherwise force a framebuffer readback.
+    - 110_fedora_no_move_damage.patch
+      Disable damage notifications on move for manually redirected windows.
+    - 121_only_switch_vt_when_active.diff
+      Add a check to prevent the X server from changing the VT when
+      killing GDM from the console.
+    - 135_rethrow_signals.patch
+      Currently Xorg "eats" its crash signals, issuing an error message
+      that it caught the signal and then aborts.  This patch raises the
+      signal it caught, so that subsequent crash handlers (i.e. apport)
+      can also catch and act on it.
+    - 136_fedora_force_switchcorekeyboard_for_evdev.patch
+      Allow clients to set the layout.
+    - 137_add_device_property_support.patch
+      Add support for input-device properties (XI 1.5).
+    - 138_look_at_all_bytes_of_dev_enabled.diff:  dev->enabled has type
+      Bool, which is typedef'd to int, but is used in comparisons with
+      CARD8 data, which gives incorrect logic on big endian systems,
+      causing failure to initialize keyboard and mouse.
+    - 140_quell_acpid_errmsgs.patch: Don't fill the server log with errors
+      from not being able to connect to acpid.
+    - 141_improved_driver_selection.patch
+      Allow returning multiple drivers to try for a given PCI id.
+      Also includes support for fallback drivers, but only when
+      not using an xorg.conf.
+    - 142_psb_auto.patch
+      Autoload vesa for the psb hardware, psb being broken currently.
+    - 143_default_to_vesa.patch:  If no matching driver is found in the
+      .ids files, set "vesa" as a fallback default, otherwise a driver
+      may be selected regardless of whether it actually provides support
+      for the chipset by videoPtrToDriverList() based on its vendor id.
+    - 150_no_visibility_notify_on_unredirect.patch
+      Do not sent VisibilityNotify events when MapUnmapEvents
+      are disabled
+   + debian/local/xvfb-run: disable the Composite-extension for xvfb.
+   + debian/serverminver: Bump the serverminver because of the newer
+     properties API.
+   + debian/rules:
+     Add --enable-xcsecurity --enable-appgroup. The SECURITY module was
+     disabled by default as part of the SELinux merge. However, we need
+     the security module for xauth on Kubuntu, else ubiquity fails.
+     (LP 247537)
+  * Changes done:
+    - debian/control: xfvb doesn't need to Depend on xauth, xfonts-base
+      anymore, Recommends are pulled in by default now.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Wed, 26 Nov 2008 13:42:11 +0200
+
+xorg-server (2:1.5.3-1) experimental; urgency=low
+
+  [ Loic Minier ]
+  * Shut up rmdir error when trying to remove dirs; this might confuse
+    debconf.
+
+  [ Julien Cristau ]
+  * New upstream release.
+  * Fix infinite loop on server reset when swrast_dri.so is missing.  Only
+    push swrast on the glx provider stack on first generation, so we don't
+    turn the stack into a circular list (closes: #500287).
+  * Enable the record extension (closes: #504303).
+  * Merge changes from 2:1.4.2-8.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 11 Nov 2008 23:17:14 +0100
+
+xorg-server (2:1.5.2-2ubuntu3) intrepid; urgency=low
+
+  * 138_look_at_all_bytes_of_dev_enabled.diff:  dev->enabled has type
+    Bool, which is typedef'd to int, but is used in comparisons with
+    CARD8 data, which gives incorrect logic on big endian systems,
+    causing failure to initialize keyboard and mouse.
+    (LP: #281610)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 23 Oct 2008 07:31:47 -0700
+
+xorg-server (2:1.5.2-2ubuntu2) intrepid; urgency=low
+
+   * 143_default_to_vesa.patch:  If no matching driver is found in the
+     .ids files, set "vesa" as a fallback default, otherwise a driver
+     may be selected regardless of whether it actually provides support
+     for the chipset by videoPtrToDriverList() based on its vendor id.
+     (LP: #261977)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 23 Oct 2008 06:21:18 -0700
+
+xorg-server (2:1.5.2-2ubuntu1) intrepid; urgency=low
+
+  * debian/patches/150_no_visibility_notify_on_unredirect.patch
+    - do not sent VisibilityNotify events when MapUnmapEvents
+      are disabled (LP: #278112)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Sat, 18 Oct 2008 00:05:30 +0200
+
+xorg-server (2:1.5.2-1ubuntu4) intrepid; urgency=low
+
+  * Update patch 142_psb_auto to only try vesa, not even psb, as this requires
+    the psb driver to be loadable, and it's not available anymore (and broken
+    anyway).
+
+ -- Loic Minier <lool@dooz.org>  Wed, 15 Oct 2008 18:14:28 +0200
+
+xorg-server (2:1.5.2-1ubuntu3) intrepid; urgency=low
+
+  * Shut up rmdir error when trying to remove dirs; this might confuse
+    debconf.
+
+ -- Loic Minier <lool@dooz.org>  Wed, 15 Oct 2008 17:57:13 +0200
+
+xorg-server (2:1.5.2-1ubuntu2) intrepid; urgency=low
+
+  * Update patch 142_psb_auto to also try psb and vesa for 0x8109.
+  * Apply and drop patch 123_no_composite_for_xvfb_run which was changing
+    files below debian/ (xvfb-run, to disable the Composite extension by
+    default).
+
+ -- Loic Minier <lool@dooz.org>  Wed, 15 Oct 2008 15:27:23 +0200
+
+xorg-server (2:1.5.2-1ubuntu1) intrepid; urgency=low
+
+  * Merge from debian-experimental.
+  * Update patch 142_psb_auto to try vesa if psb fails; thanks Oliver Grawert.
+  * Refresh patch 100_xserver_exa_force_greedy to apply cleanly.
+  * Let xserver-xorg-core conflict with xserver-xorg-video-psb
+    << 0.15.0-0ubuntu1~804um5 as these versions didn't have an ABI provide.
+
+ -- Loic Minier <lool@dooz.org>  Tue, 14 Oct 2008 23:03:06 +0200
+
+xorg-server (2:1.5.2-1) experimental; urgency=low
+
+  * New upstream bugfix release.
+  * debian/rules: define PCI_TXT_IDS_DIR to unbreak the pci id matching using
+    plain text files provided by drivers.
+  * Don't pass --with-serverconfig-path to configure, we only used to override
+    it for Xprint.
+  * Re-introduce the xserver-common package, containing
+    /usr/lib/xorg/protocol.txt and the Xserver(1) manpage for now.
+  * debian/rules: Use filter instead of findstring for noopt in
+    DEB_BUILD_OPTIONS.
+  * Remove obsolete conffile /etc/X11/xserver/SecurityPolicy on upgrades.
+  * Merge changes from 2:1.4.2-7.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 11 Oct 2008 20:20:28 +0200
+
+xorg-server (2:1.5.1-1ubuntu3) intrepid; urgency=low
+
+  * Pull upstream changes from server-1.5-branch including b595b65e:
+    - Fix GKVE with key_code > 255 (LP: #274203)
+    - DGA: Fix ProcXF86DGASetViewPort for missing support in driver.
+      Fixes a segfault when trying to activate a DGA mode without
+      checking whether DGA modesetting is at all possible.
+    - Check nextEnabledOutput()'s return in bestModeForAspect()
+      In case no enabled outputs, we will reference wrong index of
+      output array.
+    - int10: Fix a nasty memory leak.
+    - int10: Don't warn when scanning for devices we don't have.
+      Some BIOSes (hi XGI!) will attempt to enumerate the PCI bus by
+      asking for the config space of every possible device number.
+      This despite perfectly functional BIOS methods to enumerate the
+      bus exactly.
+    - int10: Remove useless check.
+      If you have more than one PCI device with the same d/b/d/f, you're
+      already in trouble.
+    - http://bugs.freedesktop.org/show_bug.cgi?id=14373
+      xkb: squash canonical types into explicit ones on core reconstruction.
+      xkb: fix core keyboard map generation.
+    - xkb: fix use of uninitialized variable.
+    - Remove usage of mfbChangeWindowAttributes missed in e4d11e58c...
+    - Only build dri2 when DRI2 is enabled.
+  * Merge patches 138 and 139 into 137, and update the properties API to
+    match the current version in master (final API for XI 1.5).
+    (LP: #274728)
+  * Bump the build-dep on x11proto-input-dev and libxi-dev.
+  * Bump the serverminver because of newer properties API.
+  * Add Breaks against current synaptics and evdev, since they use the old
+    API and need to be updated with the server.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Fri, 10 Oct 2008 11:16:56 +0300
+
+xorg-server (2:1.5.1-1ubuntu2) intrepid; urgency=low
+
+  * Merge with Debian experimental:
+    - debian/rules: define PCI_TXT_IDS_DIR to unbreak the pci id matching
+      using plain text files provided by drivers. (LP: #261977)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Fri, 26 Sep 2008 12:05:12 +0300
+
+xorg-server (2:1.5.1-1ubuntu1) intrepid; urgency=low
+
+  * Merge with Debian experimental. (LP: #269388)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Wed, 24 Sep 2008 19:33:34 +0300
+
+xorg-server (2:1.5.1-1) experimental; urgency=low
+
+  * New upstream bugfix release.
+  * 02_Disable-DRI-in-Xephyr.patch: don't use DRI in Xephyr, as it doesn't
+    work correctly.
+  * Merge changelog from 2:1.4.2-6 (all changes are upstream now).
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 24 Sep 2008 17:49:18 +0200
+
+xorg-server (2:1.5.0-1ubuntu1) intrepid; urgency=low
+
+  * Merge with Debian experimental.
+  * 141_improved_driver_selection.patch
+    - Allow returning multiple drivers to try for a given PCI id.
+      Also includes support for fallback drivers, but only when
+      not using an xorg.conf.
+  * 142_psb_auto.patch
+    - Renamed, refreshed.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Tue, 09 Sep 2008 11:44:13 +0300
+
+xorg-server (2:1.5.0-1) experimental; urgency=low
+
+  * New upstream release.
+  * Kill patch 50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch,
+    1.2 requests are properly swapped now.
+  * Bump videoabiver to 4 to match ABI_VIDEODRV_VERSION.  Yes, that means
+    rebuilding video drivers; sorry about that.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 04 Sep 2008 02:05:47 +0200
+
+xorg-server (2:1.4.99.906-2ubuntu5) intrepid; urgency=low
+
+  * Bump the serverminver because of input properties.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Wed, 03 Sep 2008 16:03:28 +0300
+
+xorg-server (2:1.4.99.906-2ubuntu4) intrepid; urgency=low
+
+  [ Bryce Harrington ]
+  * 140_quell_acpid_errmsgs.patch: Don't fill the server log with errors
+    from not being able to connect to acpid. (LP: #247195)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Wed, 03 Sep 2008 10:48:24 +0300
+
+xorg-server (2:1.4.99.906-2ubuntu3) intrepid; urgency=low
+
+  [ Bryce Harrington ]
+  * 135_rethrow_signals.patch:  Update to make it catch and throw a
+    wider variety of signals, and do a clean shutdown of the X server
+    (code borrowed from FatalError()).
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 01 Sep 2008 13:19:46 -0700
+
+xorg-server (2:1.4.99.906-2ubuntu2) intrepid; urgency=low
+
+  * 103_inputproto_1.4.3_is_fine.patch:
+    - Don't require inputproto 1.4.4 in configure.ac..
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Thu, 28 Aug 2008 13:24:05 +0300
+
+xorg-server (2:1.4.99.906-2ubuntu1) intrepid; urgency=low
+
+  * Merge with Debian experimental.
+  * Dropped patches, upstream:
+    130_fedora_fix_procxkbsetxyz_to_work_on_all.patch
+    131_remove_open-coded_strcasestr.patch
+    132_add_parsing_for_xkb.options.patch
+    133_support_strlist_for_xkboptions.patch
+    134_protect_against_out_of_bounds.patch
+  * control: Fix build-dep on inputproto to >= 1.4.3-2ubuntu2 for
+    DeviceControlChanged.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Thu, 28 Aug 2008 12:39:33 +0300
+
+xorg-server (2:1.4.99.906-2) experimental; urgency=low
+
+  * Pull from server-1.5-branch as of Aug 27th
+    + input devices from xorg.conf aren't ignored if there is no ServerLayout
+      option (closes: #492140)
+  * Bump build-dep on inputproto to >= 1.4.4 for DeviceControlChanged.
+  * Merge in changes from 2:1.4.2-3 to 2:1.4.2-5.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 28 Aug 2008 00:33:02 +0200
+
+xorg-server (2:1.4.99.906-1ubuntu4) intrepid; urgency=low
+
+  * 137_add_device_property_support.patch,
+    138_xi_expose_enable_disabledevice.patch,
+    139_xi_protect_against_null_handlers.patch:
+    - Add support for input-device properties.
+  * debian/control: Bump the build-depends on x11proto-input-dev
+    and libxi-dev.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Fri, 22 Aug 2008 09:00:14 +0300
+
+xorg-server (2:1.4.99.906-1ubuntu3) intrepid; urgency=low
+
+  * 130_fedora_fix_procxkbsetxyz_to_work_on_all.patch
+    136_fedora_force_switchcorekeyboard_for_evdev.patch
+    - Allow clients to set the layout.
+  * Drop 130_fedora_call_switchcorekeyboard.patch, obsoleted.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Wed, 06 Aug 2008 13:30:28 +0300
+
+xorg-server (2:1.4.99.906-1ubuntu2) intrepid; urgency=low
+
+  * Add 135_rethrow_signals.patch
+    - Currently Xorg "eats" its crash signals, issuing an error message
+      that it caught the signal and then aborts.  This patch raises the
+      signal it caught, so that subsequent crash handlers (i.e. apport)
+      can also catch and act on it.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 05 Aug 2008 16:20:46 -0700
+
+xorg-server (2:1.4.99.906-1ubuntu1) intrepid; urgency=low
+
+  * Merge with debian experimental, 1.5RC6 (LP: #247120, #253021)
+  * Drop 120_fedora_xserver-xaa-evict-pixmaps.patch, because offscreen
+    pixmaps are already disabled by default.
+  * Drop 124_fix_randr_no_crtc.patch, fixed upstream.
+  * Add 130_fedora_call_switchcorekeyboard.patch, a hack to fix fd.o bug
+    #16364. Breaks if the first hotplugged keyboard is not the wanted
+    keyboard.
+  * Patches from upstream master:
+    131_remove_open-coded_strcasestr.patch
+    - pre-requisite for the rest
+    132_add_parsing_for_xkb.options.patch
+    - parsing xkb.options didn't work (fd.o #16874)
+    133_support_strlist_for_xkboptions.patch
+    - allow using a list for xkb.options like before.
+    134_protect_against_out_of_bounds.patch
+    - protect against potential out-of-bounds indexing.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Tue, 05 Aug 2008 01:49:42 +0300
+
+xorg-server (2:1.4.99.906-1) experimental; urgency=low
+
+  * debian/rules: drop useless handling of nostrip in DEB_BUILD_OPTIONS (this
+    is taken care of by dh_strip); make the rules files and xsfbs.mk
+    parallel-safe, and enable parallel=n using example code from Debian
+    Policy.
+  * debian/rules: put the source package name and version in builderstring
+    instead of osvendor, add builder email as well; don't explicitly set
+    osname, configure sets it to $(uname -srm) by default.
+  * New upstream release candidate.
+    - fixes 64-bit Xephyr (closes: #491569)
+    - work around the DIX losing physical monitor dimensions for randr 1.1
+      drivers, in particular nvidia (closes: #488987)
+    - make sure RANDR reports refresh as 0 if pixel clock is 0 (closes:
+      #490258)
+    - doesn't try to load dri2 when it's not built (closes: #491651)
+  * Switch to running autoreconf at build time, and build-depend on automake,
+    libtool and xutils-dev.
+  * Reformat the SGI Free Software License B, to shut up over 1000 lintian
+    warnings.
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 27 Jul 2008 18:30:45 +0200
+
+xorg-server (2:1.4.99.905-0ubuntu5) intrepid; urgency=low
+
+  * debian/rules:
+    Added --enable-record.  By default, xorg-server does not build the
+    RECORD extension.  Added the record module (for Xnee and other purposes).
+
+ -- Chris Nasho <chris.nasho@sympatico.ca>  Thu, 31 Jul 2008 17:26:00 -0400
+
+xorg-server (2:1.4.99.905-0ubuntu4) intrepid; urgency=low
+
+  * debian/rules:
+    Add --enable-xcsecurity --enable-appgroup.  The SECURITY module was
+    disabled by default in commit 86b2e59bfb79bd042a13c35fbb4ccecec576f629,
+    as part of the SELinux merge.  However, we need the security module
+    for xauth on Kubuntu, else ubiquity fails.  (Ref. LP 247537)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 16 Jul 2008 06:01:45 -0700
+
+xorg-server (2:1.4.99.905-0ubuntu3) intrepid; urgency=low
+
+   * patches/124_fix_randr_no_crtc.patch:
+     + In certain circumstances, xrandr multiscreen initialization fails
+       to associate crtcs with monitors, resulting in startup failures
+       in some GDK-based applications when using -vesa.  This occurs
+       because mode-Clock, mode->HTotal, and mode->VTotal are all 0.
+       (LP: #246585)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 15 Jul 2008 07:01:13 -0700
+
+xorg-server (2:1.4.99.905-0ubuntu2) intrepid; urgency=low
+
+  * Merge with debian git, new changes:
+    - Build with --enable-glx-tls, we build mesa with TLS support
+      (otherwise swrast_dri.so might fail to load due to unresolved
+      symbols).
+    - Make the servers recommend libgl1-mesa-dri (>= 7.1~rc1).  Without
+      this package, the GLX extension fails to initialise (and takes the
+      server down) due to missing swrast_dri.so.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Mon, 07 Jul 2008 11:44:39 +0300
+
+xorg-server (2:1.4.99.905-0ubuntu1) intrepid; urgency=low
+
+  * Merge with Debian experimental, remaining changes:
+  * debian/control:
+    - Change maintainer address.
+    - xvfb Depends on xauth, xfonts-base.
+  * debian/patches:
+    - 100_xserver_exa_force_greedy.patch
+      Provide a mechanism for drivers to force greedy mode on.
+    - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch
+      Fixes document fontpaths shown in the man page.
+    - 102_ubuntu_sharevts_load_cpu.patch
+      Close console fd only when using --sharevts.
+    - 104_psb_auto.patch
+      Add automatic detection of Poulsbo hardware when running without a
+      Device definition.
+    - 107_fedora_dont_backfill_bg_none.patch
+      Disable backfilling of windows created with bg=none, which
+      would otherwise force a framebuffer readback.
+    - 110_fedora_no_move_damage.patch
+      Disable damage notifications on move for manually redirected windows.
+    - 120_fedora_xserver-xaa-evict-pixmaps.patch
+      A hack to evict XAA pixmaps and disable the pixmap cache when the first
+      texture is bound.
+    - 121_only_switch_vt_when_active.diff
+      Add a check to prevent the X server from changing the VT when
+      killing GDM from the console.
+    - 123_no_composite_for_xvfb_run.patch
+      Use "-extension Composite" to fix xvfb-run crashing.
+  * Cleaned up patches:
+    - upstream, either directly or otherwise implemented:
+      103_fedora_openchrome.patch, 105_reduce_wakeups_from_smart_scheduler.diff
+      108_fedora_honor_displaysize.patch, 109_glx_fail_if_no_texture_bound.diff
+      144_fedora_xserver-1.3.0-xnest-exposures.patch,
+      146_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch,
+      147_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch,
+      148_dix_touchscreen_fixes.diff,
+      149_add_quirks_for_physical_screen_size_issues.patch,
+      150_edid_quirk_lp154w01.patch, 151_x86emu_handle_cpuid.patch,
+      153_exa_skip_empty_glyphs.diff, 154_fix_rotation_for_multimon.diff,
+      155_exa_fix_off-by-one.diff, 156_resize_composite_overlay.diff,
+      157_fix_exa_pixmap_width.diff, 158_xkb_wrapping.diff,
+      159_xkb_default_to_null.diff, 160_default_to_intel.diff,
+      161_fix_big_endian_cursor.diff, 162_cve-2007-6429.diff,
+      163_fix_untrusted_access.diff, 164_fix_context_sharing.diff,
+      165_fedora_xserver-1.5.0-xaa-option-inversion.patch,
+      166_fix_lpl_monitors.diff, 167_xf86AutoConfig_geode_addition.diff,
+      168_closedir.patch,
+      170_xorg-xserver-1.4-cve-2008-1377.diff,
+      171_xorg-xserver-1.4-cve-2008-1379.diff,
+      172_xorg-xserver-1.4-cve-2008-2360.diff,
+      173_xorg-xserver-1.4-cve-2008-2361.diff,
+      174_xorg-xserver-1.4-cve-2008-2362.diff
+    - obsolete:
+      101_fedora-apm-typedefs.patch
+      104_fedora_init_origins_fix.patch
+      142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch
+      169_xf86AutoConfig_choose_default_driver_if_no_pci.patch
+    - unnecessary:
+      106_ubuntu_fpic_libxf86config.patch (the lib is not shipped)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Fri, 04 Jul 2008 13:39:34 +0300
+
+xorg-server (2:1.4.99.905-1) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * New upstream release candidate
+    - fixes FTBFS on alpha (closes: #472205); won't work, though, because
+      of #485528
+    - fixes FTBFS on GNU/kFreeBSD (closes: #482550)
+  * 001_ubuntu_add_extra_modelines_from_xorg.patch: remove, replace with
+    001_fedora_extramodes.patch stolen from fedora 9 cvs, rev 1.8.
+  * xvfb: recommend xauth instead of xbase-clients.
+  * xserver-xfbdev: recommend xfonts-base.
+  * debian/rules: drop our special handling for stripping modules, which I
+    think dates back to the days of the custom module loader.
+  * debian/rules: drop some remaining xprintisms.
+  * bump serverminver to 2:1.4.99.905.
+  * Stop build-depending on mesa-swx11-source (mesa 7.1 will build the
+    software driver itself), and don't pass --with-mesa-source to configure.
+  * Build with --enable-glx-tls, we build mesa with TLS support (otherwise
+    swrast_dri.so might fail to load due to unresolved symbols).
+  * Make the servers recommend libgl1-mesa-dri (>= 7.1~rc1).  Without this
+    package, the GLX extension fails to initialise (and takes the server down)
+    due to missing swrast_dri.so.
+
+  [ Timo Aaltonen ]
+  * Re-enable dri & glx.
+  * Add a build-dep on mesa-common-dev (>= 7.1~rc1) and bump the desired 
+    version of libgl1-mesa-dev respectively.
+  * Bump the libdrm-dev build-dep version to 2.3.1.
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 13 Jul 2008 23:33:05 +0200
+
+xorg-server (2:1.4.99.902-1) experimental; urgency=low
+
+  * Add postrm script for xserver-xorg-core, to remove
+    /var/log/Xorg.*.log{,.old} on purge (closes: #343384).
+  * Use dh_* -s instead of -a in binary-arch, to fix FTBFS on s390 (which
+    doesn't build xserver-xfbdev).
+  * New upstream release candidate.
+    + refresh 13_debian_add_xkbpath_env_variable.diff
+    + doesn't crash when there is no pci device (closes: #472823)
+    + includes a quirk for LPL monitors with broken EDID (closes: #473260)
+    + XKB is now enabled in Xnest (closes: #164379)
+  * Stop building Xprt, and drop related patches; it will be provided as a
+    separate package.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 23 May 2008 00:58:45 +0200
+
+xorg-server (2:1.4.99.901-2) experimental; urgency=low
+
+  * xserver-xorg-dev needs to depend on libpciaccess-dev.
+  * Pull from upstream server-1.5-branch as of March 21st (commit 98249dfa).
+    + fixes build on ia64 (closes: #471663)
+  * Add missing conflicts on xserver-xorg-input-2.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 21 Mar 2008 22:40:36 +0100
+
+xorg-server (2:1.4.99.901-1) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * New upstream release candidate
+  * Update patches:
+    + 001_ubuntu_add_extra_modelines_from_xorg.patch: remove useless
+      whitespace changes
+    + 02_libvgahw_gcc4_volatile_fix.diff: delete, the gcc bug this was working
+      around is fixed for a long time
+    + 03_auto_load_driver.diff, 04_auto_load_driver_no_conf.diff,
+      05_kill_type1.diff, 07_autoconfig_screen_with_device_section.diff,
+      08_better_dpms_logging.diff, 10_dont_look_in_home_for_config.diff,
+      11_dont_crash_on_bad_dri_mode.diff, 14_default_screen_section.diff,
+      21_glx_align_fixes.patch, 40_default_dpi_96.patch,
+      41_vbe_filter_less.diff,
+      42_dont_break_grab_and_focus_for_window_when_redirecting.diff,
+      43_allow_override_BIOS_EDID_preferred_mode.diff,
+      44_preferredmode_infinite_loop.diff,
+      45_only_XF86_APM_CAPABILITY_CHANGED_for_video_change_acpi_events.diff,
+      46_reduce_wakeups_from_smart_scheduler.patch,
+      47_fbdevhw_magic_numbers.diff, 51_xkb-and-loathing.diff,
+      93_xprint_fonts_fix: remove, applied upstream
+    + 06_use_proc_instead_of_sysfs_for_pci_domains.diff: disable for now,
+      shouldn't be needed with pciaccess
+    + 13_debian_add_xkbpath_env_variable.diff: refresh
+    + 94_xprint_XSERVER_LIBS: disable, should be fixed upstream
+  * Disable glx, dri and dri2 for now.
+  * Re-enable dmx, build the xdmx and xdmx-tools packages.
+  * Add build-deps on libpciaccess-dev and libssl-dev for Xorg, bump build-dep
+    on libpixman-1-dev to >= 0.9.5.
+  * Add build-dep on libxv-dev for Xephyr.
+  * Drop XS- prefix from Vcs-* debian/control fields.
+  * Bump videoabiver to 2.9, inputabiver to 2.1, serverminver to 2:1.4.99.901.
+  * Drop obsolete --with-rgb-path configure option.
+  * /etc/X11/xserver/SecurityPolicy is gone, don't install it.
+  * Don't build-dep on "foo (>= bar-1)", to fix lintian warnings.
+
+  [ Drew Parsons ]
+  * Remove 94_xprint_XSERVER_LIBS (not needed in xserver 1.5).
+
+  [ Brice Goglin ]
+  * Build the Xfbdev server for real now, in new package xserver-xfbdev,
+    closes: #439764.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 14 Mar 2008 13:46:48 +0100
+
+xorg-server (2:1.4.2-11) unstable; urgency=low
+
+  * Bump x11proto-input-dev build-dep to >= 1.5.0 to fix keyboard layout
+    breakage with new libxi built against the same. Closes: #515976
+
+ -- David Nusinow <dnusinow@debian.org>  Thu, 19 Feb 2009 21:52:24 -0500
+
+xorg-server (2:1.4.2-10) unstable; urgency=medium
+
+  * Cherry-pick from upstream: GLcore: make googleearth not crash the server
+    on sw-rendering (closes: #495483).
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 09 Jan 2009 02:26:06 +0100
+
+xorg-server (2:1.4.2-9) unstable; urgency=low
+
+  * Cherry-pick patches from upstream to make xf86ScaleAxis() work correctly.
+  * Steal patch from Fedora: more sanity checks to stop vmmouse from
+    segfaulting the server (closes: #503459).
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 13 Nov 2008 23:32:47 +0100
+
+xorg-server (2:1.4.2-8) unstable; urgency=low
+
+  * Add patch from Petr Salinger to fix PCI domain support on kfreebsd
+    (closes: #499501).
+  * xfree86: xf86SetDepthBpp needs to respect the driver's depth24flags.
+    Instead of forcing a 32bpp framebuffer, we pick a value that the driver
+    actually supports (closes: #504819, #486925); cherry-picked from upstream
+    git.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 11 Nov 2008 20:46:52 +0100
+
+xorg-server (2:1.4.2-7) unstable; urgency=low
+
+  * Update debian/copyright to the SGI Free Software License B, version 2.0.
+    It now mirrors the free X11 license used by X.Org.
+    http://www.sgi.com/company_info/newsroom/press_releases/2008/september/opengl.html
+  * Not closing bug#211765 for now, because GL/glx/glxext.c and
+    hw/dmx/glxProxy/glxext.c are covered by the GLX Public License, which is
+    still not free.  SGI has since released their code under FreeB, but that
+    doesn't necessarily apply to contributions from other people.  Hopefully
+    this can be cleared up soon, though.
+  * xvfb-run: append to $ERRORFILE instead of truncating it, so the error
+    output from Xvfb is not deleted when we run 'xauth remove'.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 30 Sep 2008 00:39:58 +0200
+
+xorg-server (2:1.4.2-6) unstable; urgency=low
+
+  * Xevie: always set rep.length to 0 (closes: #497337).  Thanks, Thorvald
+    Natvig!
+  * Xevie: swap replies if necessary, to not confuse clients with a different
+    endianness.
+  * Cherry-picked from upstream git:
+    XF86VidMode: Correct a NULL pointer dereference (closes: #498289)
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 15 Sep 2008 01:21:13 +0200
+
+xorg-server (2:1.4.2-5) unstable; urgency=low
+
+  * Don't pretend we support randr 1.2 when queried by swapped clients.  The
+    dispatch code for RandR 1.2 requests would return BadImplementation anyway
+    (closes: #495833).
+  * Cherry-picked from upstream:
+    + exa: fix assert logic thinko.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 26 Aug 2008 19:27:34 +0200
+
+xorg-server (2:1.4.2-4) unstable; urgency=low
+
+  * Re-enable patch 47_fbdevhw_magic_numbers.diff, fixes xen framebuffer
+    (closes: #493901).  Thanks, Olivier Tétard!  If someone knows why I
+    disabled it a year ago, I'd love to know.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 15 Aug 2008 19:15:54 +0200
+
+xorg-server (2:1.4.2-3) unstable; urgency=low
+
+  * Add Romanian debconf translation (closes: #489069).  Thanks, Eddy
+    Petrișor!
+  * Update Dutch debconf translation (closes: #491663).  Thanks, Thijs
+    Kinkhorst!
+  * Pull from server-1.4-branch:
+    - Xi: ChangeDeviceControl presence events should set the appropriate
+      devchange
+    - Fix potential crasher in xf86CrtcRotate()
+  * Cherry-picked from 1.5:
+    - Work around the DIX losing mmWidth/mmHeight for RandR 1.1 DDXen
+      (closes: #491526).
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 02 Aug 2008 23:22:32 +0200
+
+xorg-server (2:1.4.2-2) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * GLX: zero the buffer used in __glXDisp_GetVisualConfigs (backport from
+    upstream).
+
+  [ Brice Goglin ]
+  * Cherry-pick various patches from upstream:
+    - Fix incorrect test regarding keyboard map.
+    - xfree86: append, not prepend, new input devices to xf86InputDevs.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 18 Jul 2008 10:53:26 +0200
+
+xorg-server (2:1.4.2-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * New upstream release.
+  * Security fixes from the previous upload are included upstream.
+  * Cherry-pick patches from upstream git to make the LeftOf and Above options
+    in xorg.conf actually work (closes: #466526).
+  * 48_xaa_nooffscreenpixmaps.diff: disable XAA offscreen pixmaps by default;
+    they can be enabled with Option "XaaOffscreenPixmaps" (closes: #478277,
+    #433331).
+  * Cherry-pick various patches from upstream for Xorg's modes code:
+    - add quirks for monitors with broken EDID (closes: #473260)
+    - fix max clock computation
+    - inherit the preferred mode from the global configuration (so if you have
+      Modes "800x600" in the Display subsection the server will honor it
+      instead of ignoring it)
+  * Backport patch from upstream git to fix emulation of int1A PCI BIOS
+    services (closes: #404885).  Thanks, Robert de Bath!
+
+  [ Brice Goglin ]
+  * Update patches to not require -p0, closes: #485185.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 26 Jun 2008 01:57:18 +0200
+
+xorg-server (2:1.4.1~git20080517-2) unstable; urgency=high
+
+  * High urgency upload for security fixes.
+  * New patch from upstream to fix multiple security issues reported by
+    iDefense:
+    CVE-2008-2360 - RENDER Extension heap buffer overflow
+    CVE-2008-2361 - RENDER Extension crash
+    CVE-2008-2362 - RENDER Extension memory corruption
+    CVE-2008-1379 - MIT-SHM arbitrary memory read
+    CVE-2008-1377 - RECORD and Security extensions memory corruption
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 09 Jun 2008 14:59:04 +0200
+
+xorg-server (2:1.4.1~git20080517-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * Pass -DPRE_RELEASE=0 in CPPFLAGS, so we don't print the pre-release
+    warning in the Xorg log.
+  * Pull from upstream server-1.4-branch
+    + drop patch 40_default_dpi_96.patch applied upstream
+    + refresh patches 03_auto_load_driver.diff and
+      04_auto_load_driver_no_conf.diff
+  * Don't build-depend on packages with a -1 debian revision.
+  * Drop the XS- prefix from Vcs-* control fields.
+  * Add x11-common to the Depends field of xnest, xvfb and xserver-xephyr (its
+    init script sets up the /tmp/.X11-unix directory).
+  * Re-enable the dmx DDX, and build the xdmx and xdmx-tools packages (the
+    build is now fixed upstream); closes: #449254.
+
+  [ Drew Parsons ]
+  * Patch 95_xprint_disable_dbus disables dbus in Xprint by providing
+    dummy config functions. Taken from upstream commit
+    2a3d1421e0cc18822ae8f478fcc272e16a9e9340, with removal of
+    CONFIG_LIB from configure.ac shifted to 94_xprint_XSERVER_LIBS.
+    Closes: #472180.
+  * Enable the xprint DDX, and build the xprint and xprint-common packages.
+
+ -- Julien Cristau <jcristau@debian.org>  Sun, 18 May 2008 13:36:11 +0200
+
+xorg-server (2:1.4.1~git20080507-1) unstable; urgency=low
+
+  * Pull from upstream server-1.4-branch, highlights:
+    - the server should now scale input events correctly
+    - xkb keymap failures now give an explanation instead of just a 'failed to
+      load' message
+  * Drop patch 51_xkb-and-loathing.diff, applied upstream
+  * Refresh patches 13_debian_add_xkbpath_env_variable.diff,
+    21_glx_align_fixes.patch, 46_reduce_wakeups_from_smart_scheduler.patch and
+    94_xprint_XSERVER_LIBS.
+  * chmod +x configure in debian/rules clean so we can build a git snapshot
+    where configure is not in the tarball.
+  * Cherry-pick fix from upstream's master branch to re-arm the DPMS timer
+    when re-enabling DPMS (closes: #397197).
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 08 May 2008 15:34:38 +0200
+
+xorg-server (2:1.4.1~git20080131-4) unstable; urgency=low
+
+  * fix AlwaysCore handling: enabling AlwaysCore in xorg.conf 1) is the
+    default, and 2) shouldn't prevent the device from sending core events
+    (closes: #461760).
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 29 Apr 2008 20:14:22 +0200
+
+xorg-server (2:1.4.1~git20080131-3) unstable; urgency=low
+
+  * XKB: Fix processInputProc wrapping (cherry-picked from upstream).
+    Thanks to Thomas Jaeger.  This should fix the bug with some keys getting
+    stuck (closes: #473165).
+  * xkb: when copying the keymap, make sure the structs default to 0/NULL
+    (cherry-picked from upstream).  Fixes a crash and closes: #461783.
+  * __glXDRIbindTexImage: Fail if no texture bound to pixmap's texture target
+    (cherry-picked from upstream).
+  * EXA: Fix off-by-one in polyline drawing (cherry-picked from upstream).
+  * EXA: Skip empty glyphs (cherry-picked from upstream).
+  * Fix overly-restrictive integer overflow check in EXA pixmap creation
+    (cherry-picked from upstream).  Fixes BadAlloc errors returned by
+    XCreatePixmap for pixmaps of width 8192 or greater (closes: #471782).
+
+  Following patches by Bart Trojanowski, stolen from the ubuntu package:
+  * 15_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch
+    - Restrict access to I/O ports in range 0-0xFF from x86emu.
+  * 16_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch
+    - Fix improper emulation of PCI access General Software BIOS.
+  * Add 17_x86emu_handle_cpuid.patch to fix X86EMU CPUID handling.
+    (closes: #451089).
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 02 Apr 2008 00:20:15 +0200
+
+xorg-server (2:1.4.1~git20080131-2) unstable; urgency=low
+
+  [ Brice Goglin ]
+  * Add 46_reduce_wakeups_from_smart_scheduler.patch to reduce
+    power consumption, closes: #462700.
+
+  [ Drew Parsons ]
+  * Restore Xprint, cherry-picking commits
+    f7f79724fdea0cc6fda0e90e56431df937d49335 and
+    d67e210f3458b62d7d4a6032aabfda0004d661c1 from master (xserver 1.5).
+    Include patch 94_xprint_XSERVER_LIBS to give new meaning of
+    XSERVER_LIBS as expected in configure.ac from master (see commit
+    a02db0d500cac20d0f0f107d27c064a175018421). Delete
+    94_xprint_XSERVER_LIBS when we upgrade to xserver 1.5.
+
+  [ Julien Cristau ]
+  * Re-enable patch 51_xkb-and-loathing.diff: ignore SIGALRM around calls to
+    Popen()/Pclose() to fix a hang when opening menus in OpenOffice.org
+    (once again closes: #433131)
+  * Refresh all patches to make patch-audit happy.
+  * Pull from upstream server-1.4-branch as of March 14th.
+  * 42_dont_break_grab_and_focus_for_window_when_redirecting.diff removed,
+    applied upstream.
+  * Don't build xprint just yet, because it needs NEW processing.
+
+  [ David Nusinow ]
+  * Add 11_dont_crash_on_bad_dri_mode. See bugzilla #13860
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 14 Mar 2008 15:18:16 +0100
+
+xorg-server (2:1.4.1~git20080131-1ubuntu12) intrepid; urgency=low
+
+   * Fix multiple security issues:
+     + CVE-2008-2360 - RENDER Extension heap buffer overflow
+     + CVE-2008-2361 - RENDER Extension crash
+     + CVE-2008-2362 - RENDER Extension memory corruption
+     + CVE-2008-1379 - MIT-SHM arbitrary memory read
+     + CVE-2008-1377 - RECORD and Security extensions memory corruption
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 11 Jun 2008 10:54:15 -0700
+
+xorg-server (2:1.4.1~git20080131-1ubuntu11) intrepid; urgency=low
+
+  * 169_xf86AutoConfig_choose_default_driver_if_no_pci.patch
+    - Choose the default driver for the platform instead of the generic
+      default (vesa) if there is no PCI info.  Without this, on platforms
+      like PS3 where fbdev should be used rather than vesa, the system
+      will fail to start up.  (LP: #219424)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 13 May 2008 13:09:17 -0700
+
+xorg-server (2:1.4.1~git20080131-1ubuntu10) intrepid; urgency=low
+
+  [Timo Aaltonen]
+  * 166_fix_lpl_monitors.diff:
+    - fix LPL monitors properly (LP: #204065)
+
+  [Martin-Eric Racine]
+  * 167_xf86AutoConfig_geode_addition.diff:
+    - Autodetect geode video devices (LP: #219630)
+
+  [Bryce Harrington]
+  * 166_fix_lpl_monitors.diff:
+    - Modified to apply to Ubuntu
+  * 168_closedir.patch:
+    - Fix crash on PS3 due to closing a dir that wasn't successfully opened
+      (LP: #217647)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 13 May 2008 00:03:40 -0700
+
+xorg-server (2:1.4.1~git20080131-1ubuntu9) hardy; urgency=low
+
+  * debian/patches/series,
+    debian/patches/165_fedora_xserver-1.5.0-xaa-option-inversion.patch:
+    - Turn on patch included in previous commit - obviously accidentially
+      forgotten.
+    - Now that its really enabled, make it apply to 1.4.1 code base
+      accordingly. (LP: #182038)
+
+ -- Alexander Sack <asac@ubuntu.com>  Tue, 15 Apr 2008 18:23:51 +0200
+
+xorg-server (2:1.4.1~git20080131-1ubuntu8) hardy; urgency=low
+
+  * debian/patches/165_fedora_xserver-1.5.0-xaa-option-inversion.patch:
+    - Turn XAA Offscreen Pixmaps off by default, and use
+      XaaOffscreenPixmaps "true" to turn them on.  This setting was an
+      early pre-EXA HW optimization attempt that didn't pan out; upstream is
+      deprecating XAA in favor of EXA generally, and for situations where
+      XAA is still in use recommends NOT using this optimization hack, since
+      they found it often just made performance worse, and sometimes created
+      visualization bugs.  People wishing to gain added performance should be
+      experimenting with EXA anyway, not this setting.  (closes LP: #182038)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 21 Apr 2008 12:30:53 -0700
+
+xorg-server (2:1.4.1~git20080131-1ubuntu7) hardy; urgency=low
+
+  * 159_xkb_default_to_null.diff:
+    When copying the keymap, make sure the structs default to 0/NULL.
+    (LP: #184651)
+  * 160_default_to_intel.diff:
+    Default to using intel instead of i810. (LP: #158709)
+  * 161_fix_big_endian_cursor.diff:
+    Fix RandR 1.2 driver interface conversion of two colour cursors to
+    ARGB. (LP: #141118)
+  * Fixes from the upstream 1.4-branch:
+    - 162_cve-2007-6429.diff:
+      CVE-2007-6429: Always test for size+offset wrapping.
+    - 163_fix_untrusted_access.diff:
+      Security: Fix for fdo bug #14480: untrusted access broken in 7.3.
+    - 164_fix_context_sharing.diff:
+      Fix context sharing between direct/indirect contexts
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Wed, 09 Apr 2008 11:06:04 +0300
+
+xorg-server (2:1.4.1~git20080131-1ubuntu6) hardy; urgency=low
+
+  * 157_fix_exa_pixmap_width.diff:
+    A patch from upstream to allow wider pixmaps with EXA (LP: #205599)
+  * 158_xkb_wrapping.diff:
+    A patch reviewed by upstream that prevents keys from getting stuck under
+    certain situations. (LP: #194214)
+  * 51_xkb-and-loathing.diff:
+    Re-enable. Ignore SIGALRM around calls to Popen()/Pclose() to fix a hang
+    when opening menus in OpenOffice.org. (LP: #204137)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Sun, 30 Mar 2008 19:18:32 +0300
+
+xorg-server (2:1.4.1~git20080131-1ubuntu5) hardy; urgency=low
+
+  * Add some patches from upstream 1.4-branch or proposed set:
+    - 109_glx_fail_if_no_texture_bound.diff
+      + __glXDRIbindTexImage: Fail if no texture bound to pixmap's texture
+        target.
+    - 153_exa_skip_empty_glyphs.diff
+      + Fix a crasher when EXA and RenderAccel is in use.
+    - 154_fix_rotation_for_multimon.diff
+      + Fix rotation for multi-monitor situation.
+    - 155_exa_fix_off-by-one.diff
+      + Fix off-by-one in polyline drawing.
+    - 156_resize_composite_overlay.diff
+      + Resize composite overlay window when the root window changes.
+        (LP: #199700)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Thu, 13 Mar 2008 18:21:41 +0200
+
+xorg-server (2:1.4.1~git20080131-1ubuntu4) hardy; urgency=low
+
+  * Add 152_xserver_exa_force_greedy.patch to provide a mechanism for
+    drivers to force greedy mode on.  (LP: #177492, others)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 19 Feb 2008 13:38:16 -0800
+
+xorg-server (2:1.4.1~git20080131-1ubuntu3) hardy; urgency=low
+
+  [ Bryce Harrington ]
+  * Add 150_edid_quirk_lp154w01.patch to fix font size on LGPhilipsLCD
+    LP154W01-TLAE (LP: #127827)
+  * Add 149_add_quirks_for_physical_screen_size_issues.patch to help
+    address various common EDID issues (like monitors that report in
+    centimeters instead of millimeters, etc.)  (LP: #151311)
+
+  [ Timo Aaltonen ]
+  * Add 151_x86emu_handle_cpuid.patch to fix X86EMU CPUID handling.
+    (LP: #180742)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Tue, 19 Feb 2008 17:48:05 +0200
+
+xorg-server (2:1.4.1~git20080131-1ubuntu2) hardy; urgency=low
+
+    * Add patch 148_dix_touchscreen_fixes.diff from Matthew Garrett to fix
+      touchscreen issues with DIX.
+      http://lists.freedesktop.org/archives/xorg-commit/2008-February/014648.html
+
+ -- Steve Kowalik <stevenk@ubuntu.com>  Fri, 08 Feb 2008 10:30:04 +1100
+
+xorg-server (2:1.4.1~git20080131-1ubuntu1) hardy; urgency=low
+
+  [ Timo Aaltonen ]
+  * Merge with Debian unstable, remaining changes:
+  * debian/control:
+    - Change maintainer address.
+    - set Conflicts: xkb-data (<< 0.9), since xkb-path is
+      different compared to Dapper.
+    - xvfb Depends on xauth, xfonts-base.
+  * debian/patches:
+    - 101_fedora-apm-typedefs.patch:
+      Temporary hack from Fedora for broken kernels that don't publish the
+      /dev/apm_bios types.
+    - 102_ubuntu_sharevts_load_cpu.patch:
+      Close console fd only when using --sharevts.
+    - 103_fedora_openchrome.patch:
+      Patch from Fedora to use openchrome instead of via.
+    - 104_fedora_init_origins_fix.patch
+      Multihead initialization.
+    - 105_reduce_wakeups_from_smart_scheduler.diff:
+      Patch from upstream to reduce wakeups and improve battery life.
+    - 106_ubuntu_fpic_libxf86config.patch
+      Add -fPIC to makefiles for xfree86/parser.
+    - 107_fedora_dont_backfill_bg_none.patch
+      Disable backfilling of windows created with bg=none, which
+      otherwise would force a framebuffer readback.
+    - 110_fedora_no_move_damage.patch
+      Disable damage notifications on move for manually redirected windows.
+    - 120_fedora_xserver-xaa-evict-pixmaps.patch:
+      New version of the hack to copy textures from video memory. Shouldn't
+      break EXA anymore.
+    - 121_only_switch_vt_when_active.diff
+      Add a check to prevent the X server from changing the VT when
+      killing GDM from the console.
+    - 123_no_composite_for_xvfb_run.patch
+      Use "-extension Composite" to fix xvfb-run crashing.
+    - 133_psb_auto.patch
+      Add automatic detection of Poulsbo hardware when running
+      without a Device definition.
+    - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch
+      Fixes document fontpaths shown in the man page.
+    - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch
+      Composite on 8bpp pseudocolor root windows appears to fail, so just
+      disable it on anything pseudocolor for safety.
+    - 144_fedora_xserver-1.3.0-xnest-exposures.patch:
+      Only collect xnest exposures for xexposes with non-zero height and width.
+  * 108_fedora_honor_displaysize.patch:
+    - Patch from upstream/Fedora to honor the DisplaySize-setting.
+      (LP: #135738, b.fd.o #9758)
+  * Drop patch 100_avoid_acpi_insanity.diff, superseded by patch 45.
+
+  [ Bart Trojanowski, Martin-Eric Racine ]
+  * 146_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch
+    - Restrict access to I/O ports in range 0-0xFF from x86emu.
+    (LP: #140051)
+  * 147_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch
+    - Fix improper emulation of PCI access General Software BIOS.
+    (LP: #140051)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Tue, 05 Feb 2008 18:57:14 +0200
+
+xorg-server (2:1.4.1~git20080131-1) unstable; urgency=low
+
+  [ Brice Goglin ]
+  * Add 45_only_XF86_APM_CAPABILITY_CHANGED_for_video_change_acpi_events.diff
+    to prevent XF86_APM_CAPABILITY_CHANGED from being issued for all ACPI
+    events, thanks Sjoerd Simons, closes: #461463.
+
+  [ David Nusinow ]
+  * Update Japanese translation from Hideki Yamane. closes: #462761
+  * New upstream pull
+    + Fixes crashes due to absent LED's being referenced
+
+ -- David Nusinow <dnusinow@debian.org>  Thu, 31 Jan 2008 21:43:12 -0500
+
+xorg-server (2:1.4.1~git20080118-1ubuntu2) hardy; urgency=low
+
+  * Remove the DPI patch for real this time, conflicts with the upstream
+    commit that was pulled.
+  * 105_reduce_wakeups_from_smart_scheduler.diff:
+    Patch from upstream to reduce wakeups and improve battery life.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Sat, 19 Jan 2008 20:26:41 +0200
+
+xorg-server (2:1.4.1~git20080118-1ubuntu1) hardy; urgency=low
+
+  * Merge with Debian unstable, remaining changes:
+  * debian/control:
+    - Change maintainer address.
+    - set Conflicts: xkb-data (<< 0.9), since xkb-path is
+      different compared to Dapper.
+    - xvfb Depends on xauth, xfonts-base.
+  * debian/patches:
+    - 100_avoid_acpi_insanity.diff
+      Don't send a configuration change event just because somebody's pressed
+      a brightness key.
+    - 101_fedora-apm-typedefs.patch:
+      Temporary hack from Fedora for broken kernels that don't publish the
+      /dev/apm_bios types.
+    - 102_ubuntu_sharevts_load_cpu.patch:
+      Close console fd only when using --sharevts.
+    - 103_fedora_openchrome.patch:
+      Patch from Fedora to use openchrome instead of via.
+    - 104_fedora_init_origins_fix.patch
+      Multihead initialization.
+    - 106_ubuntu_fpic_libxf86config.patch
+      Add -fPIC to makefiles for xfree86/parser.
+    - 107_fedora_dont_backfill_bg_none.patch
+      Disable backfilling of windows created with bg=none, which
+      otherwise would force a framebuffer readback.
+    - 110_fedora_no_move_damage.patch
+      Disable damage notifications on move for manually redirected windows.
+    - 120_fedora_xserver-xaa-evict-pixmaps.patch:
+      New version of the hack to copy textures from video memory. Shouldn't
+      break EXA anymore.
+    - 121_only_switch_vt_when_active.diff
+      Add a check to prevent the X server from changing the VT when
+      killing GDM from the console.
+    - 123_no_composite_for_xvfb_run.patch
+      Use "-extension Composite" to fix xvfb-run crashing.
+    - 133_psb_auto.patch
+      Add automatic detection of Poulsbo hardware when running
+      without a Device definition.
+    - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch
+      Fixes document fontpaths shown in the man page.
+    - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch
+      Composite on 8bpp pseudocolor root windows appears to fail, so just
+      disable it on anything pseudocolor for safety.
+    - 144_fedora_xserver-1.3.0-xnest-exposures.patch:
+      Only collect xnest exposures for xexposes with non-zero height and width.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Sat, 19 Jan 2008 02:40:00 +0200
+
+xorg-server (2:1.4.1~git20080118-1) unstable; urgency=low
+
+  [ Brice Goglin ]
+  * Add 42_dont_break_grab_and_focus_for_window_when_redirecting.diff
+    to prevent password authentication bypass, closes: #449108.
+
+  [ Julien Cristau ]
+  * New upstream snapshot
+    + includes the security fixes from the previous version
+    + fixes regression introduced by the fix for CVE-2007-6429 in the MIT-SHM
+      extension (closes: #461410)
+
+ -- Brice Goglin <bgoglin@debian.org>  Fri, 18 Jan 2008 22:20:32 +0100
+
+xorg-server (2:1.4.1~git20080105-2) unstable; urgency=low
+
+  [ David Nusinow ]
+  * Improve dpms logging patch to correctly label message type
+
+  [ Brice Goglin ]
+  * Grab upstream commit db9ae863536fff80b5463d99e71dc47ae587980d
+    to set DEFAULT_DPI to 96 instead of 75.
+
+  [ Julien Cristau ]
+  * Fix multiple security issues
+    + CVE-2007-6427: XInput Extension Memory Corruption
+    + CVE-2007-6428: TOG-CUP Extension Memory Corruption
+    + CVE-2007-6429: EVI Extension Integer Overflow,
+                     MIT-SHM Extension Integer Overflow
+    + CVE-2007-5760: XFree86-Misc Extension Invalid Array Index
+    + CVE-2007-5958: file existence disclosure
+    + CVE-2008-0006: PCF font parser buffer overflow
+  * Bump Standards-Version to 3.7.3 (no changes).
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 17 Jan 2008 15:10:03 +0100
+
+xorg-server (2:1.4.1~git20080105-1ubuntu1) hardy; urgency=low
+
+  * Merge with Debian unstable, remaining changes:
+  * debian/control:
+    - Change maintainer address.
+    - set Conflicts: xkb-data (<< 0.9), since xkb-path is
+      different compared to Dapper.
+    - xvfb Depends on xauth, xfonts-base.
+  * debian/patches:
+    - 100_avoid_acpi_insanity.diff
+      Don't send a configuration change event just because somebody's pressed
+      a brightness key.
+    - 101_fedora-apm-typedefs.patch:
+      Temporary hack from Fedora for broken kernels that don't publish the
+      /dev/apm_bios types.
+    - 102_ubuntu_sharevts_load_cpu.patch:
+      Close console fd only when using --sharevts.
+    - 104_fedora_init_origins_fix.patch
+      Multihead initialization.
+    - 106_ubuntu_fpic_libxf86config.patch
+      Add -fPIC to makefiles for xfree86/parser.
+    - 107_fedora_dont_backfill_bg_none.patch
+      Disable backfilling of windows created with bg=none, which
+      otherwise would force a framebuffer readback.
+    - 110_fedora_no_move_damage.patch
+      Disable damage notifications on move for manually redirected windows.
+    - 120_fedora_xserver-xaa-evict-pixmaps.patch:
+      New version of the hack to copy textures from video memory. Shouldn't
+      break EXA anymore.
+    - 121_only_switch_vt_when_active.diff
+      Add a check to prevent the X server from changing the VT when
+      killing GDM from the console.
+    - 123_no_composite_for_xvfb_run.patch
+      Use "-extension Composite" to fix xvfb-run crashing.
+    - 133_psb_auto.patch
+      Add automatic detection of Poulsbo hardware when running
+      without a Device definition.
+    - 138_fedora_xserver-1.3.0-default-dpi.patch
+      Changes default dpi to 96.
+    - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch
+      Fixes document fontpaths shown in the man page.
+    - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch
+      Composite on 8bpp pseudocolor root windows appears to fail, so just
+      disable it on anything pseudocolor for safety.
+    - 144_fedora_xserver-1.3.0-xnest-exposures.patch:
+      Only collect xnest exposures for xexposes with non-zero height and width.
+  * debian/patches/103_fedora_openchrome.patch:
+    - Patch from Fedora to use openchrome instead of via.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Tue, 08 Jan 2008 18:05:21 +0200
+
+xorg-server (2:1.4.1~git20080105-1) unstable; urgency=low
+
+  * Don't reference non-existent bug-reporting.txt file in xvfb-run.1
+  * New upstream git pull, again from the server-1.4-branch
+    + Drop 08_xkb_infinite_loop.diff, it's upstream now
+  * Improve logging when DPMS is enabled implicitly
+    + Adds 08_better_dpms_logging.diff
+
+ -- David Nusinow <dnusinow@debian.org>  Sun, 06 Jan 2008 16:56:38 -0500
+
+xorg-server (2:1.4.1~git20071212-1ubuntu2) hardy; urgency=low
+
+  * debian/patches/101_fedora-apm-typedefs.patch:
+    - Temporary hack from Fedora for broken kernels that don't publish the
+      /dev/apm_bios types.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Mon, 17 Dec 2007 11:54:46 +0200
+
+xorg-server (2:1.4.1~git20071212-1ubuntu1) hardy; urgency=low
+
+  * Merge with Debian unstable, remaining changes:
+  * debian/control:
+    - Change maintainer address.
+    - set Conflicts: xkb-data (<< 0.9), since xkb-path is
+      different compared to Dapper.
+    - xvfb Depends on xauth, xfonts-base.
+  * debian/patches:
+    - 100_avoid_acpi_insanity.diff
+      Don't send a configuration change event just because somebody's pressed
+      a brightness key.
+    - 102_ubuntu_sharevts_load_cpu.patch:
+      Close console fd only when using --sharevts.
+    - 104_fedora_init_origins_fix.patch
+      Multihead initialization.
+    - 106_ubuntu_fpic_libxf86config.patch
+      Add -fPIC to makefiles for xfree86/parser.
+    - 107_fedora_dont_backfill_bg_none.patch
+      Disable backfilling of windows created with bg=none, which
+      otherwise would force a framebuffer readback.
+    - 110_fedora_no_move_damage.patch
+      Disable damage notifications on move for manually redirected windows.
+    - 120_fedora_xserver-xaa-evict-pixmaps.patch:
+      New version of the hack to copy textures from video memory. Shouldn't
+      break EXA anymore.
+    - 121_only_switch_vt_when_active.diff
+      Add a check to prevent the X server from changing the VT when
+      killing GDM from the console.
+    - 123_no_composite_for_xvfb_run.patch
+      Use "-extension Composite" to fix xvfb-run crashing.
+    - 133_psb_auto.patch
+      Add automatic detection of Poulsbo hardware when running
+      without a Device definition.
+    - 138_fedora_xserver-1.3.0-default-dpi.patch
+      Changes default dpi to 96.
+    - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch
+      Fixes document fontpaths shown in the man page.
+    - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch
+      Composite on 8bpp pseudocolor root windows appears to fail, so just
+      disable it on anything pseudocolor for safety.
+    - 144_fedora_xserver-1.3.0-xnest-exposures.patch:
+      Only collect xnest exposures for xexposes with non-zero height and width.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Thu, 13 Dec 2007 13:43:35 +0200
+
+xorg-server (2:1.4.1~git20071212-2) unstable; urgency=low
+
+  * Add patch 08_xkb_infinite_loop.diff from upstream bug#13511: papers over
+    an infinite loop in event processing (closes: #451989).
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 22 Dec 2007 00:02:01 +0100
+
+xorg-server (2:1.4.1~git20071212-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * debian/rules: Use lsb_release -i -s to get the vendor name, instead of
+    hardcoding "Debian".
+  * debian/control: build-dep on lsb-release.
+  * Cherry-pick commit f30abe30 from master: edid quirk for MAX 0x77e monitor.
+  * Add patch 44_preferredmode_infinite_loop.diff from upstream git: fixes an
+    infinite loop when PreferredMode is used in xorg.conf.
+
+  [ David Nusinow ]
+  * New upstream version. This is based on the server-1.4-branch, and includes
+    all the changes in the 1.4.0.90 (pre-)release as well as additional fixes.
+    This is primarily a bugfix release
+    + Remove 12_bgPixel_fix_64bit_issue.diff. Applied upstream
+
+ -- David Nusinow <dnusinow@debian.org>  Wed, 12 Dec 2007 20:19:11 -0500
+
+xorg-server (2:1.4.1~git20071119-1ubuntu1) hardy; urgency=low
+
+  * Merge with Debian unstable, remaining changes:
+  * debian/control:
+    - Change maintainer address.
+    - set Conflicts: xkb-data (<< 0.9), since xkb-path is
+      different compared to Dapper.
+    - xvfb Depends on xauth, xfonts-base.
+  * debian/rules:
+    - --with-os-vendor=Ubuntu
+  * debian/patches:
+    - 100_avoid_acpi_insanity.diff
+      Don't send a configuration change event just because somebody's pressed
+      a brightness key.
+    - 102_ubuntu_sharevts_load_cpu.patch:
+      Close console fd only when using --sharevts.
+    - 104_fedora_init_origins_fix.patch
+      Multihead initialization.
+    - 106_ubuntu_fpic_libxf86config.patch
+      Add -fPIC to makefiles for xfree86/parser.
+    - 107_fedora_dont_backfill_bg_none.patch
+      Disable backfilling of windows created with bg=none, which
+      otherwise would force a framebuffer readback.
+    - 110_fedora_no_move_damage.patch
+      Disable damage notifications on move for manually redirected windows.
+    - 121_only_switch_vt_when_active.diff
+      Add a check to prevent the X server from changing the VT when
+      killing GDM from the console.
+    - 123_no_composite_for_xvfb_run.patch
+      Use "-extension Composite" to fix xvfb-run crashing.
+    - 133_psb_auto.patch
+      Add automatic detection of Poulsbo hardware when running
+      without a Device definition.
+    - 138_fedora_xserver-1.3.0-default-dpi.patch
+      Changes default dpi to 100.
+    - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch
+      Fixes document fontpaths shown in the man page.
+    - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch
+      Composite on 8bpp pseudocolor root windows appears to fail, so just
+      disable it on anything pseudocolor for safety.
+    - 144_fedora_xserver-1.3.0-xnest-exposures.patch:
+      Only collect xnest exposures for xexposes with non-zero height and width.
+  * Bring back old changelog entries.
+  * debian/patches/120_fedora_xserver-xaa-evict-pixmaps.patch:
+    - New version of the hack to copy textures from video memory. Shouldn't
+      break EXA anymore.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Tue, 20 Nov 2007 15:35:59 +0200
+
+xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low
+
+  * Ship a .orig.tar.gz that's been autoreconf'ed. Closes: #451891
+  * Re-enable validation of the screen section of xorg.conf
+    Modify 14_default_screen_section.diff. This also fixes a problem where the
+    server can't find the device section when it is specified in the screen
+    section. Closes: #451950
+
+ -- David Nusinow <dnusinow@debian.org>  Mon, 19 Nov 2007 20:38:04 -0500
+
+xorg-server (2:1.4.1~git20071117-1) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * Add conflict on xserver-xorg-input-wacom (<< 0.7.8) to xserver-xorg-core.
+    That driver is built against the old ABI, but doesn't provide
+    xserver-xorg-input.
+
+  [ David Nusinow ]
+  * Add 14_default_screen_section.diff. This allows you to not have a screen
+    section in your xorg.conf. A basic default one with a simple identifier
+    will be created for you in this case using all default values
+
+  [ Christian Perrier ]
+  * Debconf translations:
+  * Galician. Closes: #444764
+  * German. Closes: #444917
+  * Brazilian Portuguese. Closes: #445266
+  * Russian. Closes: #443859
+  * Portuguese. Closes: #445051
+  * Slovak. Closes: #446418, #448220
+
+  [ Brice Goglin ]
+  * Bump x11proto-core-dev build-dependency to >= 7.0.9,
+    thanks Max Kellermann, closes: #446869.
+
+  [ David Nusinow ]
+  * New upstream stable snapshot
+    + fixes a bunch of input-related bugs, notably keyboard leds
+      (closes: #440743 and its pile of duplicates)
+  * Remove patches merged in this snapshot
+    + 08_exa_fix_exaFillRegionTiled_fallback.diff
+    + 11_exa_no_negative_tile_offsets.diff
+    + 42_fix_RemoveGeneralSocket_crash_from_dbus.diff
+    + 44_XKB_mapping_changes_for_all_core-sending_devices.diff
+    + 45_GetKeyboardEvents_reject_out-of-range_keycodes.diff
+  * Make xephyr recommend xfonts-base. Closes: #451542
+
+ -- David Nusinow <dnusinow@debian.org>  Sat, 17 Nov 2007 18:54:02 -0500
+
+xorg-server (2:1.4.1~git20071105-1ubuntu2) hardy; urgency=low
+
+  * Brown paper bag release: include all the patches.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Sat, 10 Nov 2007 15:24:28 +0200
+
+xorg-server (2:1.4.1~git20071105-1ubuntu1) hardy; urgency=low
+
+  * Merge with Debian unstable, remaining changes:
+  * debian/control:
+    - Change maintainer address.
+    - set Conflicts: xkb-data (<< 0.9), since xkb-path is
+      different compared to Dapper.
+    - xvfb Depends on xauth, xfonts-base.
+  * debian/rules:
+    - --with-os-vendor=Ubuntu
+  * debian/patches:
+    - 100_avoid_acpi_insanity.diff
+      Don't send a configuration change event just because somebody's pressed
+      a brightness key.
+    - 102_ubuntu_sharevts_load_cpu.patch:
+      Close console fd only when using --sharevts.
+    - 104_fedora_init_origins_fix.patch
+      Multihead initialization.
+    - 106_ubuntu_fpic_libxf86config.patch
+      Add -fPIC to makefiles for xfree86/parser.
+    - 107_fedora_dont_backfill_bg_none.patch
+      Disable backfilling of windows created with bg=none, which
+      otherwise would force a framebuffer readback.
+    - 110_fedora_no_move_damage.patch
+      Disable damage notifications on move for manually redirected windows.
+    - 121_only_switch_vt_when_active.diff
+      Add a check to prevent the X server from changing the VT when
+      killing GDM from the console.
+    - 123_no_composite_for_xvfb_run.patch
+      Use "-extension Composite" to fix xvfb-run crashing.
+    - 133_psb_auto.patch
+      Add automatic detection of Poulsbo hardware when running
+      without a Device definition.
+    - 138_fedora_xserver-1.3.0-default-dpi.patch
+      Changes default dpi to 100.
+    - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch
+      Fixes document fontpaths shown in the man page.
+    - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch
+      Composite on 8bpp pseudocolor root windows appears to fail, so just disable
+      it on anything pseudocolor for safety.
+    - 144_fedora_xserver-1.3.0-xnest-exposures.patch:
+      Only collect xnest exposures for xexposes with non-zero height and width.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Sat, 10 Nov 2007 13:07:55 +0200
+
+xorg-server (2:1.4-3) unstable; urgency=low
+
+  [ David Nusinow ]
+  * Minor cleanups of 03_autoload_drivers.diff. Thanks to Julien for
+    spotting all these ugly bits
+    + Newline after #else when picking the driver (this is the failsafe
+      choice)
+    + Change by hacked "ids" file name suffix check to use strncmp and check
+      for ".ids"
+    + Use strncpy instead of strncat unnecessarily
+  * Add support for a partially configured device section
+    Implemented in 03_autoload_driver.diff. Now if you have a device section
+    but lack a driver, it'll use the settings. This will allow you to just
+    have a device section and enable EXA but not have to specify the driver or
+    anything else.
+  * Add 07_autoconfig_screen_with_device_section.diff
+    This patch allows the Screen section to not specify a device section. If
+    this happens, the server will automatically use the first device section
+    listed in the xorg.conf instead
+
+  [ Brice Goglin ]
+  * Allow building the Xfbdev server in new package xserver-xfbdev, but leave
+    it disabled for now (see #439764).
+  * Add upstream commit 27ad5d74c20f01516a1bff73be283f8982fcf0fe as patch
+    44_XKB_mapping_changes_for_all_core-sending_devices.diff to fix broken
+    xmodmap invocation in .xsession, closes: #443044.
+  * Add upstream commit 0e800ca4651a947ccef239e6fe7bf64aab92257c as patch
+    45_GetKeyboardEvents_reject_out-of-range_keycodes.diff to fix crash
+    in GetKeyboardValuatorEvents, closes: #443697.
+
+  [ Christian Perrier ]
+  * Debconf templates and debian/control reviewed by the debian-l10n-
+    english team as part of the Smith review project. Closes: #442210
+  * Debconf translation updates:
+    - Swedish. Closes: #443047
+    - Czech. Closes: #443100
+    - French
+    - Vietnamese. Closes: #443174
+    - Italian. Closes: #422414
+  * New debconf translations
+    - Hungarian. Closes: #442956
+    - Thai. Closes: #442962
+    - Tamil. Closes: #443027
+    - Basque. Closes: #443156
+    - Hebrew. Closes: #443204
+    - Bulgarian. Closes: #443226
+    - Finnish. Closes: #443611
+
+  [ Julien Cristau ]
+  * Add patch backported from upstream commit
+    13949f997289068354e83bc83e50d97b8232efb1 to remove the type1 module: patch
+    05_kill_type1.diff replaces 48_disable_type1.diff, and is now enabled in
+    debian/patches/series.
+  * Don't build kdrive-based servers we're not shipping.
+  * Use ${binary:Version} instead of ${Source-Version}.
+  * Add 08_exa_fix_exaFillRegionTiled_fallback.diff by Michel Dänzer to punt
+    on fallback case not handled correctly in exaFillRegionTiled (backported
+    from master's c7d6d1f5); closes: #444203.
+  * Add 11_exa_no_negative_tile_offsets.diff by Michel Dänzer to make sure
+    tile offsets passed to drivers are never negative (backported from
+    master's 006f6525).
+  * Add 12_bgPixel_fix_64bit_issue.diff by Hong Liu: bgPixel (unsigned long)
+    is 64-bit on x86_64, so -1 != 0xffffffff (master's 9adea807).
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 29 Sep 2007 16:14:35 +0200
+
+xorg-server (2:1.4-2) unstable; urgency=low
+
+  [ Brice Goglin ]
+  * Add 42_fix_RemoveGeneralSocket_crash_from_dbus.diff to fix a crash
+    when leaving, closes: #440547.
+  * Add 43_allow_override_BIOS_EDID_preferred_mode.diff to allow overriding
+    BIOD/EDID preferred mode with Option PreferredMode in the config file.
+
+  [ David Nusinow ]
+  * Upload to unstable
+
+ -- David Nusinow <dnusinow@debian.org>  Sun, 16 Sep 2007 14:24:18 -0400
+
+xorg-server (2:1.4-1) experimental; urgency=low
+
+  * New upstream release (X.Org 7.3)
+    + RandR doesn't mark Xinerama as active when no crtcs are enabled
+      (closes: #431746)
+  * Add proper depends to xserver-xorg-dev:
+    x11proto-core-dev, x11proto-input-dev (>= 1.4), x11proto-xext-dev,
+    x11proto-video-dev, x11proto-randr-dev (>= 1.2), x11proto-render-dev (>=
+    2:0.9.3), x11proto-fonts-dev
+  * Bump serverminver to 2:1.4, videoabiver to 2, inputabiver to 2.
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 10 Sep 2007 14:35:38 +0200
+
+xorg-server (2:1.3.99.2-1) experimental; urgency=low
+
+  [ David Nusinow ]
+  * Refactor auto_load_driver patch to allow the same method to be used when
+    there is no xorg.conf present
+  * Add 04_auto_load_driver_no_config.diff to use my auto_load_driver method
+    when there's no xorg.conf present
+
+  [ Brice Goglin ]
+  * Simplify output redirections in the reportbug script,
+    thanks Justin Pryzby, closes: #358390.
+  * Add missing URL in long descriptions, update links to the upstream
+    module, fix some capitalization, thanks Christian Perrier.
+
+  [ Julien Cristau ]
+  * New upstream release candidate.
+    + bump build dep on renderproto to >= 0.9.3, and on pixman to >= 0.9.4-2.
+    + bump video abi version and serverminver.
+  * Drop the Conflict on fglrx-driver, which is taken care of by the abi
+    version.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 04 Sep 2007 17:32:19 +0200
+
+xorg-server (2:1.3.99.0-2) experimental; urgency=low
+
+  * Improve 03_auto_load_driver.diff
+    + Move memory cleanup and directory closing to after the end label to
+      prevent leaks. Thanks Julien.
+    + Allow a driver to claim everything from a specific vendor. It does so by
+      only specifying a vendor ID and leaving the latter four digits empty.
+
+ -- David Nusinow <dnusinow@debian.org>  Sun, 19 Aug 2007 16:06:54 -0400
+
+xorg-server (2:1.3.99.0-1) experimental; urgency=low
+
+  [ Julien Cristau, David Nusinow ]
+  * New upstream release candidate.
+    + X is now more tolerant of devices without a CtrlProc (closes: #269860).
+    + cvt(1) and gtf(1) typos fixed (closes: #432065).
+    + Make sure DRIScreenPrivIndex is -1 when no DRI screen private is
+      allocated. (closes: #413697).
+    + __glXDRIscreenProbe: Use drmOpen/CloseOnce (closes: #419614).
+    + segfault in swrast_Triangle fixed in mesa (closes: #407502).
+    + the Xvfb manpage doesn't refer to /usr/tmp anymore (closes: #270257).
+    + typos in Xserver(1) fixed (closes: #306688).
+
+  * Remove patches that were pushed upstream
+    + 03_xnest_manpage_overhaul.diff
+    + 04_read_rom_in_chunks.diff
+    + 05_module_defaults.diff
+    + 07_stolen_from_HEAD_xorgconf_manpage.diff
+    + 08_s390_servermd.diff
+    + 12_security_policy_in_etc.diff
+    + 16_s390_fix.diff
+    + 18_execinfo_configured.patch
+    + 23_kfreebsd_support.diff
+    + 24_hurd_ioperm_fix.diff
+    + 32_disable_sparc_pci_bridge.diff
+    + 39_alpha_build_flags.patch
+    + 40_consolidate_portPriv_pDraw_assignments.diff
+    + 42_only_run_special_key_behaviours_on_non-XKB.diff
+    + 44_fedora-xephyr-keysym-madness.diff (different fix applied upstream)
+    + 45_CVE-2007-2437.diff
+    + 46_export-ramdac-symbols.diff
+    + 49_map_keyboard_driver_to_kbd.diff
+    + 50_alpha_no_include_asm_pci.h.diff
+    + 94_use_default_font_path.diff
+    + 125_glx_remove-stray__GLinterface.diff,
+      126_glxproxy_remove-stray__GLinterface.diff and
+      127_mesa-6.5.3-compat.diff (obsolete)
+
+  * Update other patches:
+    + 09_debian_xserver_rtff.diff disabled (doesn't apply, and isn't even
+      used AFAICS;
+    + 11_define_XFree86Server.diff dropped, to be fixed in drivers instead;
+    + 13_debian_add_xkbpath_env_variable.diff refreshed;
+    + 21_glx_align_fixes.patch updated;
+    + 43_xephyr_crash_at_exit.diff dropped (doesn't apply);
+    + 47_fbdevhw_magic_numbers.diff disabled for now;
+    + 48_disable_type1.diff disabled for now;
+    + 51_xkb-and-loathing.diff disabled for now.
+
+  [ Julien Cristau ]
+  * Add build-dep on x11proto-input-dev (>= 1.4.2), libpixman-1-dev
+    (>= 0.9.0), libdbus-1-dev, libhal-dev (except on hurd-i386 for the last
+    two).
+  * Bump build-dep on mesa-swx11-source to >> 7.0.1~rc2-1.
+  * Bump serverminver to this version, videoabiver to 1.9, inputabiver to
+    0.9 (so this doesn't clash with a release and drivers have to be
+    rebuilt).
+  * Bump build-dep on compositeproto to >= 0.4.
+  * Install the upstream changelog.
+  * Disable the xprint and dmx DDX for now, they fail to build.
+  * xserver-xorg-dev needs a dependency on libpixman-1-dev.
+  * Add explanations about our tarball and upstream URL to debian/copyright.
+
+  [ Drew Parsons ]
+  * Update Xprint build to include pixman.
+
+  [ David Nusinow ]
+  * Add 03_auto_load_driver.diff. This patch allows the server to select a
+    driver and automatically create a Devices section when none is specified
+    in your xorg.conf. It chooses the driver based on a set of PCI ID's that
+    the driver itself provides in /usr/share/xserver-xorg/pci. If no driver
+    claims the PCI ID of your primary video card, then it will choose a
+    fallback based on your system.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 18 Aug 2007 18:28:49 +0200
+
+xorg-server (2:1.3.0.0.dfsg-13) UNRELEASED; urgency=low
+
+  [ Debconf templates translations ]
+  * Italian added. Closes: #422414
+  * Slovak added. Closes: #438578
+
+ -- Christian Perrier <bubulle@debian.org>  Sun, 26 Aug 2007 12:09:52 +0200
+
+xorg-server (2:1.3.0.0.dfsg-12ubuntu8) gutsy; urgency=low
+
+  * Add 145_glx_visuals_bound_check.patch to fix issue where mesa
+    incorrectly counts its visuals and can free too many of them during
+    video mode changes (VT switch, restart, hibernate, etc.) such as
+    when running Compiz.  (closes LP: #127101)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 28 Sep 2007 15:48:08 -0700
+
+xorg-server (2:1.3.0.0.dfsg-12ubuntu7) gutsy; urgency=low
+
+  * Drop 143_fedora_xserver-1.3.0-randr12-config-hack.patch
+    as it causes failure to detect proper resolution on some intel
+    hardware.  (closes LP: #144956)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 25 Sep 2007 14:42:59 -0700
+
+xorg-server (2:1.3.0.0.dfsg-12ubuntu6) gutsy; urgency=low
+
+  * Drop 214_Bug_9680-_Remove_bogus_blank_length_limiting_in_xf86SetModeCrtc.patch
+    as it is causing black bars to appear on screen for i810 users.
+    (closes LP: #137604 + several dupes)
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Thu, 20 Sep 2007 14:35:54 -0700
+
+xorg-server (2:1.3.0.0.dfsg-12ubuntu5) gutsy; urgency=low
+
+  [ Kees Cook ]
+  * debian/patches/132_composite-no-clipping.diff: Adjusted WindowRec
+    structure order and RedirectDraw logic to avoid nvidia crashes
+    (fixes LP: #130325).
+  * debian/patches/100_security_fdo-bug-7447.diff: Composite used for
+    pixmap population on redirect. [CVE-2007-4730]
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Tue, 18 Sep 2007 17:20:14 -0700
+
+xorg-server (2:1.3.0.0.dfsg-12ubuntu4) gutsy; urgency=low
+
+  * debian/patches/133_psb_auto.patch:  Add automatic detection of
+    Poulsbo hardware when running without a Device definition.
+  * Added some cherry-picked patches from fedora:
+    - 134_fedorda_xorg-x11-server-1.1.1-vt-activate-is-a-terrible-api.patch:
+      Fixes race condition where someone does a VT_ACTIVATE
+      between another ACTIVATE/WAITACTIVE by adding a fail.
+      (Potentially might address Ubuntu bugs 134478 and/or 134982)
+    - 135_fedora_xorg-x11-server-1.1.1-xkb-in-xnest.patch:  Fixes issue when
+      starting a session in an xnest nest environment as a different user,
+      where keyboard map does not get preserved.  Removes
+      NO_HW_ONLY_EXTS check to address this issue.  (RedHat bug 193431;
+      Potentially may address Ubuntu bug 44846)
+    - 136_fedora_xserver-1.2.0-honor-displaysize.patch:  Fixes issue if monitor
+      width and height have been specified, xserver would override them
+      with the hsize/vsize detected from DDC.
+    - 137_fedora_xserver-1.2.0-vfprintf.patch:  Fixes typo 'vfprinf'
+    - 138_fedora_xserver-1.3.0-default-dpi.patch:  Changes default dpi to 100.
+      (Addresses Ubuntu bugs 118745, 107320, many others...)
+    - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch: Fixes
+      document fontpaths shown in the man page.
+    - 140_fedora_xserver-1.3.0-domain-obiwan.patch:  Fixes longstanding bug in
+      domain support.
+    - 141_fedora_xserver-1.3.0-edid-quirk-backports.patch: Adds quirk for
+      Samsung SyncMaster 225BW.
+    - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch:  Composite on
+      8bpp pseudocolor root windows appears to fail, so just disable it
+      on anything pseudocolor for safety.
+    - 143_fedora_xserver-1.3.0-randr12-config-hack.patch:  Adds check to use
+      the screen's xrandr modes if a preferred mode was not specified.
+    - 144_fedora_xserver-1.3.0-xnest-exposures.patch:  Only collect xnest
+      exposures for xexposes with non-zero height and width.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri,  7 Sep 2007 14:23:23 -0700
+
+xorg-server (2:1.3.0.0.dfsg-12ubuntu3) gutsy; urgency=low
+
+  * Added some cherry-picked patches from xserver 1.3.99:
+    - 202_Add_quirk_for_Acer_AL1706_monitor_to_force_60hz_refresh.patch:
+      The Acer AL1706 monitor reports support for 75hz via EDID, but
+      does not sync when this range is given, so force it to 60hz.
+    - 205_Bug_10770-_Inputdevs_isnt_a_valid_config_file_keyword.patch:
+      Fixes typo in config file parser.
+    - 208_Bug_6620-_Fixed_a_missing_else_in_ATIPseudoDMAInit.patch:
+      Fixes issue where registers were written twice on R200, sometimes
+      also putting bad values in atis->cce_pri_size.
+    - 214_Bug_9680-_Remove_bogus_blank_length_limiting_in_xf86SetModeCrtc.patch:
+      Fixes situation where when a specific mode is requested by monitor
+      or user, xorg would tweak it to something incorrect.
+    - 216_Bug_9041-_Check_the_return_code_in_xf86MapDomainMemory.patch:
+      Fixes issue where mmap return value was being ignored and failing
+      to issue fatal error as it should.
+    - 221_ExaOffscreenMarkUsed-_Dont_crash_when_theres_no_offscreen_memory.patch:
+      Fixes crash when there is no offscreen memory for EXA.
+    - 222_Fix_a_crash_when_rotating_the_screen.patch:
+      Fixes crash when rotating screen with xrandr.
+    - 223_Fix_bug_8871-scrolling_corruption_with_a_compositing_manager.patch:
+      Fixes scrolling corruption with composite due to incorrectly
+      generated GraphicsExposes.
+    - 224_Fix_calculations_in_x86_emulator_for_the_long_long_case_Andreas_Schwab.patch:
+      Fixes long long multiplication when in x86 emulator.
+    - 227_Fix_sync_polarity_on_Samsung_SyncMaster_205BW_monitor.patch:
+      Adds quirk for Samsung SyncMaster 205BW
+    - 230_In___glXCreateARGBConfig_insert_the_new_GL_mode_at_the__end__of_the_linked_list.patch:
+      Fixes insertion order of linked list that can cause GLX clients to
+      fail when attempting to use the last GLX mode/visual.
+    - 231_In_dmxBackendMouGetInfo_initialize_the_info-minval_maxval_arrays_to_the_size_of_the_backend_display.patch:
+      Fixes potential issue in X input where axis clipping code in
+      GetPointerEvents() constrains the pointer's coordinate range to a
+      max of 0, causing the mouse to not move.
+    - 234_Reapply_patch_to_fix_AMD_CPU_detection.patch:
+      Fixes AMD Geode CPU detection.
+    - 236_Syncmaster_226_monitor_needs_60Hz_refresh_10545.patch:
+      Adds quirk for Samsung SyncMaster 226BW.
+    - 238_Update_pci.ids_to_2007-07-16_snapshot.patch:
+      Updates our pci ids to support more current hardware.
+      Remove nvidia ids in extrapci.ids that are now in pci.ids.
+      Add nvidia ids to extrapci.ids that are in xf86-video-nv but not pci.ids
+    - 241_XFree86-_Treat_evdev_and_vmmouse_as_mouse_drivers_bug_10512_10559.patch:
+      Fix issue where a default mouse device gets automatically added
+      when an evdev or vmmouse section has already been specified.
+    - 243_exaDriverInit-_Fail_if_pScreenInfo_or_a_member_of_it_is_invalid.patch:
+      Fix crash in EXA when pScreenInfo or a member of it is invalid.
+    - 244_fix_an_occasional_crash_in_GetWindowName_bug-_9798.patch:
+      Fixes crash by adding check of XmbTextPropertyToTextList()'s
+      return code.
+    - 245_regenerated_to_fix_bug_10371.patch:
+      Fixes issue where if DRI is disabled, GL_MAX_TEXTURE_COORDS_ARB
+      value is not returned correctly from glGetIntegerv().
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Fri, 31 Aug 2007 18:36:22 -0700
+
+xorg-server (2:1.3.0.0.dfsg-12ubuntu2) gutsy; urgency=low
+
+  * Don't send a configuration change event just because somebody's pressed
+    a brightness key
+
+ -- Matthew Garrett <mjg59@srcf.ucam.org>  Sun, 26 Aug 2007 16:17:15 +0100
+
+xorg-server (2:1.3.0.0.dfsg-12ubuntu1) gutsy; urgency=low
+
+  * Merge from debian unstable, remaining changes:
+    - debian/control:
+      + set Conflicts: xkb-data (<< 0.9), since xkb-path is
+        different from previous releases
+      + do not Conflict with xserver-xorg-video
+      + xvfb Depends on xauth, xfonts-base
+      + Set Maintainer to Ubuntu Core Developers
+    - debian/rules:
+      + --with-os-vendor=Ubuntu
+    - debian/xserver-xorg-core.install:
+      + Add ioport, pcitweak, scanpci scripts & man pages
+    - debian/patches:
+      + 102_ubuntu_sharevts_load_cpu.patch:
+        close console fd only when ShareVTs
+      + 104_fedora_init_origins_fix.patch:
+        multihead initialization
+      + 106_ubuntu_fpic_libxf86config.patch:
+        Add -fPIC to makefiles for xfree86/parser
+      + 107_fedora_dont_backfill_bg_none.patch
+        110_fedora_no_move_damage.patch,
+        114_fedora_no_composite_in_xnest.patch,
+        120_fedora_disable_offscreen_pixmaps.patch:
+        further aiglx support
+      + 119_ubuntu_enable_composite.diff:
+        enable composite
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 123_no_composite_for_xvfb_run.patch:
+        use "-extension Composite" to fix xvfb-run crashing
+      + 125_glx_remove-stray__GLinterface.diff,
+        126_glxproxy_remove-stray__GLinterface.diff,
+        127_mesa-6.5.3-compat.diff:
+        Patches needed to build against newer Mesa.
+      + 132_composite-no-clipping.diff:
+        Change the semantics of manual-redirect Composite windows so that
+        they do not clip sibling or parent drawing.  Needed by hildon-desktop
+        to prevent home applets from clipping.
+    - debian/apport.py: Add apport hook for automatically attaching
+      files useful for debugging X crashes:  Xorg.0.log, xorg.conf,
+      lsmod, lspci, and /proc/version
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Tue, 21 Aug 2007 22:01:38 +0300
+
+xorg-server (2:1.3.0.0.dfsg-12) unstable; urgency=low
+
+  [ Brice Goglin ]
+  * Add 51_xkb-and-loathing.diff to fix a hang in OpenOffice.org
+    when opening menus, closes: #433131.
+  * Install the exa(4) and fbdevhw(4) manpages.
+
+  [ Julien Cristau ]
+  * Update the xorg.conf(5) manpage to get documentation for RandR 1.2
+    options:
+    + 07_stolen_from_HEAD_xorgconf_manpage.diff: new patch;
+    + 07_xorgconf_manpage_overhaul.diff dropped;
+    + 34_xorg.conf_man_typos.patch dropped;
+    + 05_module_defaults.diff, 94_use_default_font_path.diff: dropped hunks
+      applying to hw/xfree86/doc/man/xorg.conf.man.pre.
+  * Add patch 11_define_XFree86Server.diff: XFree86Server needs to be defined
+    in xorg-server.h and exported to drivers.
+  * Add patches 125_glx_remove-stray__GLinterface.diff
+    126_glxproxy_remove-stray__GLinterface.diff and 127_mesa-6.5.3-compat.diff
+    to build with mesa >= 6.5.3, and bump build-dependency on
+    mesa-swx11-source.
+  * Include the Debian package version in OSVENDOR to make it appear in the
+    X log.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 09 Aug 2007 16:32:14 +0200
+
+xorg-server (2:1.3.0.0.dfsg-11) unstable; urgency=low
+
+  * Yet another alpha build fix: also remove the asm/pci.h include from
+    os-support/linux/lnx_axp.c.  Include "lnx.h" and <unistd.h> instead.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 14 Jul 2007 20:09:35 +0200
+
+xorg-server (2:1.3.0.0.dfsg-10) unstable; urgency=medium
+
+  * hw/xfree86/common/compiler.h and <sys/io.h> declare incompatible
+    prototypes for outb and friends, so change the patch from -9 to not
+    #include <sys/io.h> and rely on declarations in lnx.h itself for the
+    IOBASE_* macros.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 14 Jul 2007 18:06:14 +0200
+
+xorg-server (2:1.3.0.0.dfsg-9) unstable; urgency=medium
+
+  * Include <sys/io.h> instead of <asm/pci.h> in
+    hw/xfree86/os-support/linux/lnx.h, as the latter isn't exported to
+    userspace anymore; fixes FTBFS on alpha.  Thanks, Steve Langasek!
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 14 Jul 2007 12:17:10 +0200
+
+xorg-server (2:1.3.0.0.dfsg-8) unstable; urgency=medium
+
+  * Medium-urgency upload to get the fix for #428794 in testing faster,
+    hopefully.
+
+  [ Brice Goglin ]
+  * Add 47_fbdevhw_magic_numbers.diff: patch by Adam Jackson to keep the
+    fbdev2xfree_timing() function from changing the pixel clock value if the
+    fbdev driver claims that it is 0.
+
+  [ Julien Cristau ]
+  * Don't build the type1 font module.
+  * Add patch by Alan Coopersmith to map (case-insensitively) the old
+    "keyboard" input driver to "kbd" (addresses: #428794).  I'm not
+    reassigning the bug to xserver-xorg-core for now so as not to break
+    testing by letting xserver-xorg-input-keyboard transition before the fixed
+    xorg-server.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 14 Jul 2007 01:48:20 +0200
+
+xorg-server (2:1.3.0.0.dfsg-7) unstable; urgency=low
+
+  [ Brice Goglin ]
+  * Add 40_consolidate_portPriv_pDraw_assignments.diff to avoid a crash
+    in xf86XVReputVideo (closes: #424899, #431655).
+  * Add 41_vbe_filter_less.diff to not reject VESA modes early since
+    xf86ValidateModes should handle them just fine (closes: #424684).
+  * Add 42_only_run_special_key_behaviours_on_non-XKB.diff to fix special
+    keys in Xephyr (closes: #415025).
+  * Add 43_xephyr_crash_at_exit.diff to avoid crashing Xephyr when first
+    client disconnect (closes: #420421).
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 04 Jul 2007 23:42:40 +0200
+
+xorg-server (2:1.3.0.0.dfsg-6ubuntu3) gutsy; urgency=low
+
+  * debian/patches/series:
+    - Re-enable 132_composite-no-clipping.diff with fix from upstream
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 25 Jul 2007 16:39:29 -0700
+
+xorg-server (2:1.3.0.0.dfsg-6ubuntu2) gutsy; urgency=low
+
+  * debian/patches/series:
+    - don't apply 132_composite-no-clipping.diff for now, it doesn't work
+      correctly when using compiz
+
+ -- Sebastien Bacher <seb128@canonical.com>  Fri, 13 Jul 2007 17:03:42 +0100
+
+xorg-server (2:1.3.0.0.dfsg-6ubuntu1) gutsy; urgency=low
+
+  * Merge from Debian unstable. Remaining Ubuntu changes:
+    - debian/control:
+      + set Conflicts: xkb-data (<< 0.9), since xkb-path is
+        different from previous releases
+      + do not Conflict with xserver-xorg-video
+      + xvfb Depends on xauth, xfonts-base
+      + Set Maintainer to Ubuntu Core Developers
+    - debian/rules:
+      + build using -fno-stack-protector
+      + --with-os-vendor=Ubuntu
+    - debian/xserver-xorg-core.install:
+      + Add ioport, pcitweak, scanpci scripts & man pages
+    - debian/patches:
+      + 102_ubuntu_sharevts_load_cpu.patch:
+        close console fd only when ShareVTs
+      + 104_fedora_init_origins_fix.patch:
+        multihead initialization
+      + 106_ubuntu_fpic_libxf86config.patch:
+        Add -fPIC to makefiles for xfree86/parser
+      + 107_fedora_dont_backfill_bg_none.patch:
+        Re-enable to see if it helps with performance regressions.
+      + 108_fedora_gl_include_inferiors.patch,
+        110_fedora_no_move_damage.patch,
+        114_fedora_no_composite_in_xnest.patch:
+        further aiglx support
+      + 119_ubuntu_enable_composite.diff:
+        enable composite
+      + 120_fedora_disable_offscreen_pixmaps.patch:
+        update to the latest version from Fedora (rev. 1.6, was 1.1)
+        Despite being a hack, it works and is needed for compositing
+        managers to work properly.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 123_no_composite_for_xvfb_run.patch:
+        use "-extension Composite" to fix xvfb-run crashing
+      - 125_glx_remove-stray__GLinterface.diff,
+        126_glxproxy_remove-stray__GLinterface.diff,
+        127_mesa-6.5.3-compat.diff:
+        Mesa 6.5.3 build support
+  * debian/apport.py:  Add apport hook for automatically attaching
+    files useful for debugging X crashes:  Xorg.0.log, xorg.conf,
+    lsmod, lspci, and /proc/version
+  * debian/patches/132_composite-no-clipping.diff:  Change the
+    semantics of manual-redirect Composite windows so that they do not
+    clip sibling or parent drawing.  Needed by hildon-desktop to prevent
+    home applets from clipping.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon,  2 Jul 2007 12:47:44 -0700
+
+xorg-server (2:1.3.0.0.dfsg-6) unstable; urgency=low
+
+  * Change fglrx conflict to << 8.37.6 (closes: #424975).
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 01 Jun 2007 14:58:39 +0200
+
+xorg-server (2:1.3.0.0.dfsg-5) unstable; urgency=low
+
+  [ Brice Goglin ]
+  * Add 24_hurd_ioperm_fix.diff to fix xf86Enable/DisableIO on Hurd with
+    recent GNU Mach. Thanks Samuel Thibault!
+  * Add 06_use_proc_instead_of_sysfs_for_pci_domains.diff since sysfs-based
+    PCI management code is broken at least on sparc and powerpc.
+    Closes: #422077, #422095. Thanks to Jim Watson for testing!
+  * Install the Xephyr README, closes: #395888.
+  * Update 07_xorgconf_manpage_overhaul.diff to drop the reference to the
+    xorg.conf example which we do not install since Xserver 1.3 does automatic
+    configuration, the manpage is very well documented, and we generate a
+    config file during installation. Closes: #222932.
+  * Fix warning in /etc/init.d/xprint when /usr/lib/X11/fonts does not exist.
+    Closes: #422352. Thanks Cristian Ionescu-Idbohrn!
+  * Pull upstream commit 9c80eda826448822328bb678a7d284cc43fffb17 to disable
+    RandR's fake xinerama geometry when there's more than one protocol screen
+    (closes: #420679).
+
+  [ Julien Cristau ]
+  * Add patch to make sure that the ramdac symbols are present in the server
+    and drivers can use them (closes: #423129).
+  * xserver-xorg-core Conflicts with fglrx-driver, which broke with 1.3.
+    We'll need to make this versioned (or drop it) when fglrx is fixed.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 16 May 2007 15:17:55 +0200
+
+xorg-server (2:1.3.0.0.dfsg-4ubuntu2) gutsy; urgency=low
+
+  * Build-Depend on mesa 6.5.3
+  * Apply Mandriva patches to build against mesa 6.5.3
+    - 125_glx_remove-stray__GLinterface.diff
+    - 126_glxproxy_remove-stray__GLinterface.diff
+    - 127_mesa-6.5.3-compat.diff
+
+ -- Kyle McMartin <kyle@ubuntu.com>  Sat, 26 May 2007 18:12:35 +0000
+
+xorg-server (2:1.3.0.0.dfsg-4ubuntu1) gutsy; urgency=low
+
+  * Merge from Debian unstable. Remaining Ubuntu changes:
+    - debian/control:
+      + set Conflicts: xkb-data (<< 0.9), since xkb-path is
+        different from previous releases
+      + do not Conflict with xserver-xorg-video
+      + xvfb Depends on xauth, xfonts-base
+      + Set Maintainer to Ubuntu Core Developers
+    - debian/rules:
+      + build using -fno-stack-protector
+      + --with-os-vendor=Ubuntu
+    - debian/xserver-xorg-core.install:
+      + Add ioport, pcitweak, scanpci scripts & man pages
+    - debian/patches:
+      + 102_ubuntu_sharevts_load_cpu.patch:
+        close console fd only when ShareVTs
+      + 104_fedora_init_origins_fix.patch:
+        multihead initialization
+      + 106_ubuntu_fpic_libxf86config.patch:
+        Add -fPIC to makefiles for xfree86/parser
+      + 107_fedora_dont_backfill_bg_none.patch:
+        Re-enable to see if it helps with performance regressions.
+      + 108_fedora_gl_include_inferiors.patch,
+        110_fedora_no_move_damage.patch,
+        114_fedora_no_composite_in_xnest.patch:
+        further aiglx support
+      + 119_ubuntu_enable_composite.diff:
+        enable composite
+      + 120_fedora_disable_offscreen_pixmaps.patch:
+        update to the latest version from Fedora (rev. 1.6, was 1.1)
+        Despite being a hack, it works and is needed for compositing
+        managers to work properly.
+      + 121_only_switch_vt_when_active.diff:
+        Add a check to prevent the X server from changing the VT when killing
+        GDM from the console.
+      + 123_no_composite_for_xvfb_run.patch:
+        use "-extension Composite" to fix xvfb-run crashing
+  * Drop 124_fix-pdripriv_null_deref.patch.  Already fixed in GLX code.
+    See upstream FDO bug #8537
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Mon, 14 May 2007 16:40:03 -0700
+
+xorg-server (2:1.3.0.0.dfsg-4) unstable; urgency=low
+
+  * Cherry-pick patch from upstream git to fix security issue in the Xrender
+    extension: malicious clients can cause a division by zero in the server
+    (closes: #422936). Reference: CVE-2007-2437. Thanks, Micah Anderson!
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 09 May 2007 02:11:08 +0200
+
+xorg-server (2:1.3.0.0.dfsg-3) unstable; urgency=low
+
+  * Include 94_use_default_font_path.diff. This patch is like Eugene's patch
+    to always look in the default font path from the past, but now we provide
+    an option to disable looking in the default font path at runtime. This
+    will allow people to specify additional font paths in their xorg.conf
+    without losing their current paths. This will also help avoid people
+    having ye olde "fixed font" problem.
+  * Fix compilation warnings for 05_module_defaults.diff. Previously the patch
+    used a generic pointer for the options record, but now we use the actual
+    XF86OptionsPtr type.
+
+ -- David Nusinow <dnusinow@debian.org>  Thu, 26 Apr 2007 22:39:52 -0400
+
+xorg-server (2:1.3.0.0.dfsg-2) unstable; urgency=low
+
+  * Add Brice Goglin's fix for 05_module_defaults.diff, so that it also works
+    when there is no module section at all. Thanks to Michel Dänzer for
+    helping also.
+
+ -- David Nusinow <dnusinow@debian.org>  Sat, 21 Apr 2007 09:34:12 -0400
+
+xorg-server (2:1.3.0.0.dfsg-1) unstable; urgency=low
+
+  * Upload to unstable.
+  * Add XS-Vcs-* to debian/control.
+  * Remove non-free file hw/xfree86/doc/README.DRI from the upstream tarball.
+  * Bump serverminver to 2:1.3.0.0.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 20 Apr 2007 07:54:14 +0200
+
+xorg-server (2:1.3.0.0-1) experimental; urgency=low
+
+  * New upstream release
+
+ -- David Nusinow <dnusinow@debian.org>  Thu, 19 Apr 2007 22:27:05 -0400
+
+xorg-server (2:1.2.99.905-3) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * xvfb now Recommends: xfonts-base (closes: #314598).
+
+  [ David Nusinow ]
+  * Add 05_module_defaults.diff. This provides default modules loading
+    capabilities for the server that may be overrided easily. Previously the
+    server would load a set of default modules, but only if none were
+    specified in the xorg.conf, or if you didn't have a xorg.conf at all. This
+    patch provides a default set and you can add only the "Load" instructions
+    to xorg.conf that you want without losing the defaults. Similarly, if you
+    don't want to load a module that's loaded by default, you can add
+    "Disable modulename" to your xorg.conf (see man xorg.conf in this release
+    for details). See upstream bug #10541 for more.
+
+ -- David Nusinow <dnusinow@debian.org>  Sun, 15 Apr 2007 11:17:45 -0400
+
+xorg-server (2:1.2.99.905-2) experimental; urgency=low
+
+  * Install the cvt and gtf utilities and their manpages (closes: #414792).
+  * Build the xserver-xorg-core-dbg package, which contains debugging symbols
+    for Xorg and /usr/lib/xorg/modules/**/*.so
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 09 Apr 2007 20:38:22 +0200
+
+xorg-server (2:1.2.99.905-1) experimental; urgency=low
+
+  * New upstream release candidate.
+    + includes fix for CVE-2007-1003: XC-MISC Extension ProcXCMiscGetXIDList()
+      Memory Corruption.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 06 Apr 2007 12:05:40 +0200
+
+xorg-server (2:1.2.99.903-1) experimental; urgency=low
+
+  [ Drew Parsons ]
+  * Add exclude entries to dh_install in debian/rules.
+
+  [ Julien Cristau ]
+  * Prepare packaging to ship debugging symbols for xserver-xorg-core in
+    xserver-xorg-core-dbg, but leave it commented out so we can get rc3 in the
+    archive first.
+  * New upstream release candidate.
+    + bump serverminver to 2:1.2.99.903.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 27 Mar 2007 07:33:29 +0200
+
+xorg-server (2:1.2.99.902-1) experimental; urgency=low
+
+  [ Drew Parsons ]
+  * Bring xprint back into the xorg fold.
+    - include existing patches:
+      - 91_ttf2pt1 allows Xprint to use ttf2pt1 for Type1 font handling
+       (but extract and apply manually the patch to
+               hw/xprint/ps/Makefile.am so it may be applied by autoconf)
+      - 91_ttf2pt1_updates brings ttf2pt1 into the modern X11R7.1 world
+      - 92_xprint-security-holes-fix.patch places PS/PDF file output
+       into the user's home directory (~/Xprintjobs), more secure than
+       a shared /tmp/Xprintjobs
+      - 93_spooltodir_check_file_exists ensures output filenames are
+       less than 256 characters in length
+      - 93_xprint_fonts_fix released references to font names after use.
+     - enable freetype support for Xprint.
+     - add descriptions to debian/control and Build-Dependency on
+       x11proto-print-dev
+  * Run autoreconf to update changes to hw/xprint/ps/Makefile.am.
+
+  [ Brice Goglin ]
+  * Apply patch from adrian@smop.co.uk to our xvfb-run wrapper
+    to check whether Xvfb started ok and fix its cleanup
+    (closes: #351042).
+
+  [ Julien Cristau ]
+  * New upstream release candidate.
+  * Bump serverminver to 2:1.2.99.902.
+  * Drop patch 42_build_int10_submodules.diff, and use x86emu on all
+    architectures instead (closes: #410879).
+  * Refresh patches:
+    + 12_security_policy_in_etc.diff
+    + 21_glx_align_fixes.patch
+    + 23_kfreebsd_support.diff
+  * Delete a few files generated by configure on clean, since they seem to
+    have been included in the tarball.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 15 Mar 2007 04:28:00 +0100
+
+xorg-server (2:1.2.99.901-1) experimental; urgency=low
+
+  * New upstream release candidate.
+    + Remove patches 24 (hurd support), 35 (randr byteswap) and 43 (set damage
+      version), applied upstream.
+    + Bump build-dep on x11proto-randr-dev to >= 1.2, and on
+      x11proto-damage-dev to >= 1.1.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed,  7 Mar 2007 19:58:53 +0100
+
+xorg-server (2:1.2.0-6) experimental; urgency=low
+
+  * Set videoabiver to 1.0, same as in xorg-server 1.1.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri,  2 Mar 2007 16:38:12 +0100
+
+xorg-server (2:1.2.0-5) experimental; urgency=low
+
+  * Add input ABI versioning metadata. Rename serverabiver file to
+    videoabiver, and add inputabiver. Bump serverminver to 2:1.2.0-5 to deal
+    with this change.
+
+ -- David Nusinow <dnusinow@debian.org>  Thu,  1 Mar 2007 22:09:45 -0500
+
+xorg-server (2:1.2.0-4) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * Don't strip modules when DEB_BUILD_OPTIONS contains nostrip.  Thanks,
+    Cyril Brulebois!
+
+  [ David Nusinow ]
+  * Move serverabiver file to serverminver. Use serverabiver to store the
+    actual video ABI version number (1.1 right now). This will allow drivers
+    to automatically generate their Provides: xserver-xorg-video-* line when
+    built against a particular server version. The rename of the files
+    is to better denote what they actually are.
+  * Bump the serverminver to 2:1.2.0-4 because of this change
+
+ -- David Nusinow <dnusinow@debian.org>  Wed, 21 Feb 2007 21:53:51 -0500
+
+xorg-server (2:1.2.0-3ubuntu8) feisty; urgency=low
+
+  * SECURITY UPDATE: arbitrary code execution with root privs via integer
+    overflows in MISC-XC.
+  * Add debian/patches/131_misc_xc_overflows.patch: upstream fixes.
+  * References
+    CVE-2007-1003
+
+ -- Kees Cook <kees@ubuntu.com>  Thu, 29 Mar 2007 17:46:44 -0700
+
+xorg-server (2:1.2.0-3ubuntu7) feisty; urgency=low
+
+  * debian/patches/120_fedora_disable_offscreen_pixmaps.patch
+    - update to the latest version from Fedora (rev. 1.6, was 1.1)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Fri, 30 Mar 2007 10:39:01 +0300
+
+xorg-server (2:1.2.0-3ubuntu6) feisty; urgency=low
+
+  * debian/{rules,xsfbs/xsfbs.mk,serverminver,inputabiver}
+    - Import changes from current debian package, needed for the new intel
+      driver.
+    - Rename serverabiver to videoabiver, value 1.0.
+    - Set serverminver as this version.
+  * debian/patches:
+    129_remove_extra_i2c_bittimeout.patch
+    130_slow_down_ddc_i2c.patch
+    - Patches from server-1.3 branch, which make probing the monitor more
+      robust.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Thu, 29 Mar 2007 00:56:17 +0300
+
+xorg-server (2:1.2.0-3ubuntu5) feisty; urgency=low
+
+  * debian/patches/120_fedora_disable_offscreen_pixmaps.diff
+    - Re-enable. Despite being a hack, it works and is needed for compositing
+      managers to work properly. (LP: #89189)
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Tue, 27 Mar 2007 02:33:31 +0300
+
+xorg-server (2:1.2.0-3ubuntu4) feisty; urgency=low
+
+  * debian/patches/107_fedora_dont_backfill_bg_none.patch:
+    - Re-enable to see if it helps with performance regressions.
+  * debian/patches/127_check_for_clientgone.patch:
+    - A fix from upstream. (LP: #60288)
+  * debian/patches/128_fix_client_privates_leak.patch
+    - Plug a memory leak. (LP: #92882)
+  * debian/rules
+    - Fix a typo in --with-default-font-path.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Sat, 17 Mar 2007 00:38:09 +0200
+
+xorg-server (2:1.2.0-3ubuntu3) feisty; urgency=low
+
+  * debian/patches:
+    - Rename 019_ubuntu_enable_composite.diff to 119_* so that it is in line
+      with the rest of our patches
+    - Re-add 126_debian_always_use_default_font_path.diff. This was dropped
+      by Debian but needed by us since we still have legacy fontpaths in
+      old configurations, so new paths need to be appended to the list.
+
+ -- Timo Aaltonen <tepsipakki@ubuntu.com>  Wed, 28 Feb 2007 11:54:18 +0200
+
+xorg-server (2:1.2.0-3ubuntu2) feisty; urgency=low
+
+  * debian/control:
+    - xvfb Depends on xauth, xfonts-base
+
+ -- Sebastien Bacher <seb128@canonical.com>  Tue, 27 Feb 2007 23:31:06 +0100
+
+xorg-server (2:1.2.0-3ubuntu1) feisty; urgency=low
+
+  * Don't drop 42_build_int10_submodules.diff, it's useful
+  * 019_ubuntu_enable_composite.diff:
+    - enable composite
+  * debian/control:
+    - fixed Maintainer email
+  * debian/xserver-xorg-core.install:
+    - list ioport, gtf, pcitweak and scanpci
+      and manpages for scanpci, gtf, pcitweak
+
+  [ Timo Aaltonen ]
+  * Merge with Debian, remaining changes:
+    - debian/rules:
+      + build using -fno-stack-protector
+      + --with-os-vendor=Ubuntu
+    - debian/control:
+      + don't Conflict with xserver-xorg-video
+    - refreshed and renamed patches
+      102_ubuntu_sharevts_load_cpu.patch
+      104_fedora_init_origins_fix.patch
+      106_ubuntu_fpic_libxf86config.patch
+      114_fedora_no_composite_in_xnest.patch
+      121_only_switch_vt_when_active.diff
+      124_fix-pdripriv_null_deref.patch
+    - dropped for now:
+      42_build_int10_submodules.diff - causes "some regression"
+  * dropped patches (comments from Michel Daenzer):
+    - 107_fedora_dont_backfill_bg_none.patch
+      "Breaks X semantics and thus can't go in upstream. Apps/toolkits
+       need to be fixed not to use background none windows."
+    - 108_fedora_gl_include_inferiors.patch
+      "Breaks GLX semantics and should no longer be necessary now that
+       the GLX compositing managers default to using the Composite
+       Overlay Window."
+    - 120_fedora_disable_offscreen_pixmaps.diff
+      "Last time I looked at this, it was a gross hack to work around XAA
+       deficiencies in offscreen pixmap handling, which makes the server
+       die immediately when trying to use GLX_EXT_texture_from_pixmap
+       with EXA, due to calling XAA functions without checking it's
+       active or even loaded."
+  * debian/control:
+    - set Conflicts: xkb-data (<< 0.9), since xkb-path is
+      different from previous releases
+  * debian/patches/125_randr-version-supported.diff:
+    - The server supports protocol 1.1, make sure we use it.
+
+ -- Sebastien Bacher <seb128@canonical.com>  Mon, 26 Feb 2007 09:36:38 +0100
+
+xorg-server (2:1.2.0-3) experimental; urgency=low
+
+  [ Julien Cristau ]
+  * Pass --with-os-name and --with-os-vendor to configure.
+  * Bump serverabiver to 2:1.2.0-1.
+  * Add patch from upstream git to set the supported damage version from the
+    server, instead of from the damage headers.  xserver 1.2.0 supports damage
+    1.0, not 1.1.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 17 Feb 2007 12:03:03 +0100
+
+xorg-server (2:1.2.0-2) experimental; urgency=low
+
+  * Delete useless debian/substvars.
+  * Change my email address in debian/control.
+  * Fix patch 42_build_int10_submodules.diff.  The definition of
+    xf86InitInt10() was moved to int10/helper_exec.c between 1.1.1 and 1.2.0,
+    so we move it to int10/helper_mem.c, which we build in the main int10
+    module, not the vm86 and x86emu submodules.  Thanks to Cédric Augonnet and
+    Brice Goglin for the report and testing.
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 10 Feb 2007 20:57:57 +0100
+
+xorg-server (2:1.2.0-1) experimental; urgency=low
+
+  * New upstream release.
+    + 40_xorg-xserver-1.1.0-dbe-render.diff dropped.
+    + 38_GetDrawableAttributes.patch dropped.
+    + 37_build-mesa-mipmap.patch dropped.
+    + 33_Xserver_man_typos.patch dropped.
+    + 24_hurd_support.diff massively reduced.
+    + 13_debian_add_xkbpath_env_variable.diff refreshed.
+    + 07_xorgconf_manpage_overhaul.diff updated.
+    + 42_build_int10_submodules.diff updated.
+  * Bump build-dep on mesa-swx11-source to >= 6.5.2.
+  * Version build-dependencies on x11proto-composite-dev and x11proto-kb-dev
+    to match configure.ac.
+  * Add build-dep on libxfixes-dev (needed for Xdmx).
+
+ -- Julien Cristau <jcristau@debian.org>  Fri,  9 Feb 2007 20:54:27 +0100
+
+xorg-server (2:1.1.99.903-1) experimental; urgency=low
+
+  * New upstream release candidate.
+  * Forward-port patches:
+    * 07_xorgconf_manpage_overhaul.diff: refresh
+    * 12_security_policy_in_etc.diff: refresh
+    * 21_glx_align_fixes.patch: refresh
+    * 23_kfreebsd_support.diff: refresh
+    * 24_hurd_support.diff: refresh
+    * 34_xorg.conf_man_typos.patch: refresh
+    * 36_fix_ffs.patch: remove, applied upstream
+  * Bump build-dependency on libdrm-dev to (>= 2.3.0) because that is the X
+    server's minimum requirement.
+
+ -- Thierry Reding <thierry@gilfi.de>  Sat,  2 Dec 2006 12:44:59 +0100
+
+xorg-server (2:1.1.99.902-1) experimental; urgency=low
+
+  * Update to latest upstream release candidate.
+  * Forward-port patches:
+    * 02_libvgahw_gcc4_volatile_fix.diff: update
+    * 04_read_rom_in_chunks.diff: update
+    * 05_arm_cache_flush.diff: remove, applied upstream
+    * 06_arm_is_not_x86_and_has_no_vga.diff: remove, applied upstream
+    * 07_xorgconf_manpage_overhaul.diff: update
+    * 08_s390_servermd.diff: update
+    * 09_debian_xserver_rtff.diff: update
+    * 12_security_policy_in_etc.diff: update
+    * 13_debian_add_xkbpath_env_variable.diff: update
+    * 15_symlink_mesa.diff: remove, fixed upstream
+    * 16_s390_fix.diff: update
+    * 17_ignoreabi.diff: remove, applied upstream
+    * 18_execinfo_only_for_backtrace.patch: remove, applied upstream
+    * 18_execinfo_configured.patch: remove, applied upstream
+    * 19_configurable_misc_utils.patch: remove, applied upstream
+    * 20_mesa_6.5.1.diff: remove, applied upstream
+    * 21_glx_align_fixes.patch: update
+    * 22_xkb_cycle_3layouts.diff: remove, applied upstream
+    * 23_kfreebsd_support.diff: update, partially applied upstream
+    * 24_hurd_support.diff: update, partially applied upstream
+    * 25_tfp_damage.diff: remove, applied upstream
+    * 26_aiglx_happy_vt_switch.diff: remove, applied upstream
+    * 27_aiglx_locking.diff: remove, applied upstream
+    * 28_mesa_copy_sub_buffer.diff: remove, applied upstream
+    * 29_mesa_reseed_makefile.diff: remove, fixed upstream
+    * 30_fix_vmode_switch.diff: remove, fixed upstream
+    * 31_blocksigio.diff: remove, fixed upstream
+    * 32_disable_sparc_pci_bridge.diff: update
+    * 34_xorg.conf_man_typos.patch: update
+    * 35_randr_byteswap.patch: update
+    * 36_fix_ffs.patch: update
+    * 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms.diff:
+      remove, applied upstream
+  * Upstream no longer ships a changelog, so don't try to install it.
+  * Add 37_build-mesa-mipmap.patch that adds the missing mipmap.c to libmain's
+    sources.
+  * Add 38_GetDrawableAttributes.patch which readds support for the
+    GetDrawableAttributes extension that's needed for compiz to work properly.
+
+ -- Thierry Reding <thierry@gilfi.de>  Fri,  1 Dec 2006 20:32:34 +0100
+
+xorg-server (2:1.1.1-21) unstable; urgency=emergency
+
+  * Security update.
+  * Fix integer overflow in the ProcXCMiscGetXIDList() function in the XC-MISC
+    extension.  Reference: CVE-2007-1003.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 04 Apr 2007 00:34:51 +0200
+
+xorg-server (2:1.1.1-20) unstable; urgency=low
+
+  * xephyr: Add patch from upstream git to fix memory leak in
+    ephyrScreenFini().  Thanks, Guillem Jover!
+
+ -- Julien Cristau <jcristau@debian.org>  Tue,  6 Mar 2007 22:20:14 +0100
+
+xorg-server (2:1.1.1-19) unstable; urgency=high
+
+  [ Drew Parsons ]
+  * Removed spurious space in default font line
+    (/usr/X11R6/lib/X11/fonts/Type1 not "/usr/X11R6/lib/  X11/fonts/Type1")
+
+  [ David Nusinow ]
+  * Conflict with and replace xserver-common, because that package used to 
+    provide the SecurityPolicy file. This is an RC bugfix because it breaks
+    upgrades, so it gets a high urgency. Thanks Christian Tsotras and Lionel
+    Elie Mamane for reporting and it. Closes: #402658
+
+ -- David Nusinow <dnusinow@debian.org>  Wed, 28 Feb 2007 21:48:19 -0500
+
+xorg-server (2:1.1.1-18) unstable; urgency=medium
+
+  * Add patch from Fedora to make xephyr work on 64bit architectures
+    (closes: #405928).
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 16 Feb 2007 22:20:08 +0100
+
+xorg-server (2:1.1.1-17) unstable; urgency=medium
+
+  * Make the int10 module usable on i386 with a 64bit kernel (closes: #409730).
+    + New patch 42_build_int10_submodules.diff, which allows us to build vm86
+      and x86emu as two separate submodules, and make the int10 module itself
+      fall back to loading x86emu if vm86 calls fail.
+    + Add workaround for https://bugs.freedesktop.org/show_bug.cgi?id=7299 to
+      the above patch: move definition of Int10Current from int10/xf86int10.c
+      to int10/helper_mem.c.
+    + Drop the part of 39_alpha_build_flags.patch applying to
+      hw/xfree86/os-support/linux/Makefile.in, and run autoreconf with all
+      patches applied.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed,  7 Feb 2007 20:37:19 +0100
+
+xorg-server (2:1.1.1-16) unstable; urgency=medium
+
+  * New patch 41_xfree86_linux_acpi_fix_tokenizing.diff from upstream git to
+    fix a crash on acpi events (closes: #409443).
+
+ -- Julien Cristau <julien.cristau@ens-lyon.org>  Sat,  3 Feb 2007 22:56:04 +0100
+
+xorg-server (2:1.1.1-15) unstable; urgency=high
+
+  * High-urgency upload for security bugfix.
+  * New patch 40_xorg-xserver-1.1.0-dbe-render.diff to fix multiple integer
+    overflows in the dbe and render extensions.
+    CVE IDs: CVE-2006-6101 CVE-2006-6102 CVE-2006-6103
+  * Add myself to Uploaders, and remove Fabio and Branden, with their
+    permission.  They're of course welcome back when they have more time!
+
+ -- Julien Cristau <julien.cristau@ens-lyon.org>  Tue,  9 Jan 2007 15:45:46 +0100
+
+xorg-server (2:1.1.1-14) unstable; urgency=high
+
+  * The "let's drop 20 years of build logic and replace it with autoconf in a
+    single release, trust me, what could go wrong? <gibber, gibber>" release
+  * High-urgency upload for RC bugfix
+  * New patch 39_alpha_build_flags.patch: no really, when they said
+    lnx_ev56.c should be built with -mcpu=ev56, they really meant it.
+    Closes: #392500.
+
+ -- Steve Langasek <vorlon@debian.org>  Sun,  7 Jan 2007 15:19:08 -0800
+
+xorg-server (2:1.1.1-13) unstable; urgency=medium
+
+  [ Julien Cristau ]
+  * xserver-xorg-core recommends xfonts-base and suggests xfonts-100dpi |
+    xfonts-75dpi and xfonts-scalable.  Also add explanation about fonts to the
+    long description, stolen from the old xserver-common package (closes:
+    #400654).
+
+  [ David Nusinow ]
+  * This is important for upgrades to etch, and has no notable risk, so bump
+    priority to medium.
+
+ -- David Nusinow <dnusinow@debian.org>  Fri, 29 Dec 2006 19:57:51 -0500
+
+xorg-server (2:1.1.1-12) unstable; urgency=low
+
+  [ Julien Cristau ]
+  * Delete hw/xfree86/common/xf86Build.h in debian/rules clean, since it's
+    wrongly included in the upstream tarball.
+
+  [ David Nusinow ]
+  * Pull fix for the ignore_abi.diff patch. This one's a major brown bag on my
+    part. Thanks Michel Dänzer.
+  * Add 38_wait_for_something_force_timer_reset.diff which forces the server
+    to reset timers when they've overrun in some cases rather than wait
+    forever. Patch by Daniel Stone. Thanks Michel Dänzer for pointing the
+    changes out. Closes: #374026
+
+ -- David Nusinow <dnusinow@debian.org>  Tue, 12 Dec 2006 21:13:20 -0500
+
+xorg-server (2:1.1.1-11) unstable; urgency=low
+
+  [ Drew Parsons ]
+  * Patches 33_Xserver_man_typos.patch and 34_xorg.conf_man_typos.patch
+    fix minor typos in Xserver and xorg.conf man pages.
+    Closes: #364556, #308899.
+  * Add patch 35_randr_byteswap.patch from upstream. Fixes a client/server
+    byteswapping problem. Closes: #291100.
+
+  [ Julien Cristau ]
+  * Don't build-depend on libdrm-dev on hurd-i386 (closes: #358015). Thanks,
+    Samuel Thibault.
+  * Update hurd support patch (closes: #356300). Thanks, Samuel Thibault.
+  * Add reportbug script stolen from the monolith, to add the user's config
+    and log file in every bug report.
+  * Delete hw/xfree86/common/xf86Build.h from our source tree, so that the
+    build date is correctly calculated at build time, and not hardcoded to
+    07 July 2006.  Thanks to Jurij Smakov for noticing.
+  * Add patch 36_fix_ffs.patch by Jurij Smakov to fix infinite loop in ffs()
+    if called with an argument of 0 (closes: #395564).
+  * Add patch 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms
+    from upstream git to fix color issue on big endian platforms
+    (closes: #392453). Thanks to Michel Dänzer for the patch!
+  * Fix typo in xvfb-run (closes: #337703).
+  * Install xdmxconfig and its manpage in xdmx-tools (closes: #393991).
+  * Add Replaces: xdmx (<= 2:1.1.1-10) to xdmx-tools because of the xmdxconfig
+    manpage move.
+
+ -- David Nusinow <dnusinow@debian.org>  Fri, 24 Nov 2006 15:44:52 -0500
+
+xorg-server (2:1.1.1-10) unstable; urgency=low
+
+  [ Denis Barbier ]
+  * Fix video mode switching.  Closes: #391052
+  * Fix FTBFS on kfreebsd-i386 and kfreebsd-amd64.  Thanks Petr Salinger.
+    Closes: #363517
+
+  [ David Nusinow ]
+  * Add depends on xserver-xorg so that /etc/X11/X gets installed. Thanks
+    Frans Pop. Closes: #392295
+  * Add 31_blocksigio.diff. This patch by Alan Hourihane, and it prevents a
+    race condition when a driver tries to set the cursor state when the server
+    is in the middle of switching resolution. Thanks to Frans Pop for
+    reporting the bug, Michel Dänzer for reading through the backtrace and
+    diagnosing the problem, and Alan for the final patch. Closes: #390646.
+
+  [ Jurij Smakov ]
+  * Add 32_disable_sparc_pci_bridge.diff. Disable PCI bridge handling on
+    sparc, which is broken and causes filesystem corruption (by poking
+    the PCI bus in the wrong places) on some machines. Closes: #392312.
+
+  [ Drew Parsons ]
+  * Use __appmansuffix__ not __mansuffix__ in
+    03_xnest_manpage_overhaul.diff.  Closes: #390599.
+  * Install upstream ChangeLog.  Closes: #365274.
+
+ -- David Nusinow <dnusinow@debian.org>  Mon, 16 Oct 2006 21:59:51 -0400
+
+xorg-server (2:1.1.1-9) unstable; urgency=low
+
+  [ Jurij Smakov ]
+  * Add 21_glx_align_fixes.patch to reintroduce the setting of __GLX_ALIGN64
+    variable, lost during the modular transition. This setting is essential
+    for architectures with strong alignment requirements. Patch affects
+    alpha, sparc, amd64, ia64 and s390, mimicking the behaviour of the
+    monolithic build. Closes: #388125.
+
+  [ Denis Barbier ]
+  * Add 22_xkb_cycle_3layouts.diff to fix layout switching when 3 layouts
+    are present.  Thanks Ivan Pascal for the patch.  Closes: #345803
+
+  [ David Nusinow ]
+  * Add kFreeBSD support patch (23). Thanks to Robert Millan, Petr Salinger,
+    Daniel Stone, and Michael Banck for input and patch writing.
+    Closes: #363517
+  * Add hurd support patch (24). Thanks Samuel Thibault, Daniel Stone, and
+    Michael Banck. Closes: #356300
+  * Disable the explicit enabling of dri in the configure. The configure
+    script autodetects whether or not to use this anyway, and enabling it
+    explicitly breaks the build on hurd. Thanks Samuel Thibault and Michael
+    Banck. Closes: #358015
+  * Add several patches written by Kristian Høgsberg for allowing compiz to
+    work with AIGLX. These patches were vetted by Theirry Reding with valuable
+    advice from Michel Dänzer, and feedback from Kristian himself.
+    - 25_tfp_damage.diff
+    - 26_aiglx_happy_vt_switch.diff
+    - 27_aiglx_locking.diff
+    - 28_mesa_copy_sub_buffer.diff
+    - 29_mesa_reseed_makefile.diff
+    - update of 20_mesa_6.5.1.diff
+  * Remove bizarre wholesale inclusion of another patch in the 23_kbsd patch
+
+  [ Eugene Konev ]
+  * Use --with-default-font-path instead of --with-fontdir.
+  * Set RGBPath through --with-rgb-path.
+  * Drop 11_debian_always_use_default_font_path.diff.
+  * Drop 14_debian_always_look_in_our_module_path.diff.
+  * Ship SecurityPolicy in xserver-xorg-core.
+
+ -- David Nusinow <dnusinow@debian.org>  Thu, 28 Sep 2006 23:59:35 -0400
+
+xorg-server (2:1.1.1-8) unstable; urgency=low
+
+  * Update mesa symlink patch to the latest from HEAD
+  * Add 20_mesa_6.5.1.diff to allow the server to build with mesa 6.5.1
+  * Bump build-dep versions on x11proto-gl to 1.4.8, and mesa to 6.5.1
+
+ -- David Nusinow <dnusinow@debian.org>  Mon, 25 Sep 2006 22:21:37 -0400
+
+xorg-server (2:1.1.1-7) unstable; urgency=low
+
+  * Fix s390 build issue. Thanks Bastian Blank for the report and Eugene Konev
+    for the patch. Closes: #388628.
+  * Disable build of various utilities that we don't ship anyway. Patch thanks
+    to Eugene Konev.
+
+ -- David Nusinow <dnusinow@debian.org>  Thu, 21 Sep 2006 23:07:16 -0400
+
+xorg-server (2:1.1.1-6) unstable; urgency=low
+
+  * Upload 7.1 to unstable.
+
+  [ Drew Parsons ]
+  * Added SGI FreeB licence to debian/copyright. Closes: #368563.
+  * Apply upstream patches 18_execinfo_only_for_backtrace.patch, to use
+    execinfo.h for and only for backtrace. Applied git patch
+    5a3488ccac8e5dabd9fc98bc41ef178ead1b2faf directly into configure scripts,
+    activated with autoreconf.  Closes: #363218.
+  * Only requires build-depends version of x11proto-gl-dev on 1.4.6.
+
+  [ Steve Langasek ]
+  * Add versioned build-depends on x11proto-fixes-dev (>= 4.0), to
+    ensure the package is built against the right protocol version.
+    Closes: #383778.
+
+ -- David Nusinow <dnusinow@debian.org>  Mon, 18 Sep 2006 18:30:07 -0400
+
+xorg-server (2:1.1.1-5) experimental; urgency=low
+
+  * Fix error in 16_s390_fix.diff caused by my idiot copying. Thanks Yannick
+    Roehlly and Daniel Stone.
+
+ -- David Nusinow <dnusinow@debian.org>  Sun, 27 Aug 2006 23:25:21 +0000
+
+xorg-server (2:1.1.1-4) experimental; urgency=low
+
+  [ Drew Parsons ]
+  * Tighten dependencies between X11R7.1 server and video drivers.
+    xserver-xorg-core no longer Depends: xserver-xorg-video-all
+    | xserver-xorg-video but instead Conflicts: xserver-xorg-video.
+    (closes: #383873)
+    The dependency on xserver-xorg-video-all | xserver-xorg-video-1.0 is
+    managed by the xserver-xorg binary package (not included here in
+    order to avoid circular dependencies). (closes: #362313)
+  * Likewise remove Depends: xserver-xorg-input-all | xserver-xorg-input
+    (again, handled by xserver-xorg) to avoid circular dependency with drivers.
+
+  [ David Nusinow ]
+  * Epoch bump
+  * Add 17_ignoreabi.diff to allow users to simply set a value in xorg.conf
+    rather than pass -ignoreABI to the server every time it starts
+
+ -- David Nusinow <dnusinow@debian.org>  Wed, 23 Aug 2006 22:03:06 +0000
+
+xorg-server (1:1.1.1-3) unstable; urgency=low
+
+  * Add 16_s390_fix.diff to fix FTBFS on s390. Thanks Bastian Blank.
+    (closes: #362641)
+  * Bump build-depends version of libgl1-mesa-dev to 6.5.x package we have in
+    experimental currently
+  * Bump build-depends version of x11proto-gl-dev to 1.4.7 or greater
+
+ -- David Nusinow <dnusinow@debian.org>  Tue, 22 Aug 2006 00:57:31 +0000
+
+xorg-server (1:1.1.1-2) experimental; urgency=low
+
+  [ Drew Parsons ]
+  * Updated mesa-swx11-source build-depends to (>> 6.5.0), required
+    for xserver 1.1.1. (closes: #383334)
+
+  [ David Nusinow ]
+  * Enable and ship xephyr
+  * Hack off the 'x' manpage suffix
+  * Install Xnest manpage
+  * Bump policy version to 3.7.2.0. No changes necessary.
+
+ -- David Nusinow <dnusinow@debian.org>  Wed, 16 Aug 2006 21:14:44 +0000
+
+xorg-server (1:1.1.1-1) experimental; urgency=low
+
+  [ David Nusinow ]
+  * New upstream release
+  * Move patch target call so that we don't try and build twice
+  * Remove obsolete 15_security_allocate_local.diff and
+    16_SECURITY_setuid.diff
+  * Add 15_symlink_mesa.diff
+
+ -- David Nusinow <dnusinow@debian.org>  Sun,  6 Aug 2006 16:12:25 +0000
+
+xorg-server (2:1.0.2-10) unstable; urgency=low
+
+  * Upload to unstable to fixed messed up last upload which was supposed to go
+    to experimental. Brown bag o' joy.
+
+ -- David Nusinow <dnusinow@debian.org>  Tue, 22 Aug 2006 19:31:08 +0000
+
+xorg-server (1:1.1.1-0ubuntu14) feisty; urgency=low
+
+  * Add 'debian/patches/38_Fix-pDRIPriv_NULL_deref.patch': NULL-init DRI
+    screen private data, thanks to Tormod Volden (LP: #60288).
+
+ -- Kees Cook <kees@ubuntu.com>  Sat, 10 Feb 2007 20:27:44 -0800
+
+xorg-server (1:1.1.1-0ubuntu13) feisty; urgency=low
+
+  * 19_revert_xkb_change_breaking_XkbGetKeyboard.patch:
+    - patch from fedora (with extra Makefile.in change), revert change that
+      broke XkbGetKeyboard() (Ubuntu: #58083)
+  * 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms.diff:
+    - upstream patch copied from the Debian package, fix blue screen with
+      compiz on ppc (Ubuntu: #58373)
+
+ -- Sebastien Bacher <seb128@canonical.com>  Fri, 12 Jan 2007 12:17:28 +0100
+
+xorg-server (1:1.1.1-0ubuntu12.1) edgy-security; urgency=low
+
+  * SECURITY UPDATE: Arbitrary code execution with root privileges via heap
+    overflows in DBE and Render extensions.
+  * Add 'debian/patches/021_ubuntu_dbe-render_overflows.diff' from
+    upstream
+  * References
+    CVE-2006-6101 CVE-2006-6102 CVE-2006-6103
+
+ -- Kees Cook <kees@ubuntu.com>  Mon,  8 Jan 2007 12:45:41 -0800
+
+xorg-server (1:1.1.1-0ubuntu12) edgy; urgency=low
+
+  * debian/patches/17_no_composite_for_xvfb.patch:
+    - fix a crasher by not using composite for Xvfb when using -render
+  * debian/patches/18_no_composite_for_xvfb_run.patch:
+    - use "-extension Composite" to fix xvfb-run crashing
+
+ -- Sebastien Bacher <seb128@canonical.com>  Fri, 13 Oct 2006 17:12:49 +0200
+
+xorg-server (1:1.1.1-0ubuntu11) edgy; urgency=low
+
+  * debian/patches/16_only_switch_vt_when_active.patch:
+    Add a check to prevent the X server from changing the VT when killing
+    GDM from the console.
+
+ -- Ryan Lortie <desrt@ubuntu.com>  Thu, 21 Sep 2006 01:26:35 -0400
+
+xorg-server (1:1.1.1-0ubuntu10) edgy; urgency=low
+
+  * Build xserver-xephyr from xorg-server package.  Malone: #57077, #57084
+
+ -- Tollef Fog Heen <tfheen@ubuntu.com>  Wed,  6 Sep 2006 12:57:32 +0200
+
+xorg-server (1:1.1.1-0ubuntu9) edgy; urgency=low
+
+  * Enable composite extension by default
+  * Add patch from fd.o bugzilla #7916 to avoid aiglx hangs on vt
+    switches
+
+ -- Matthew Garrett <mjg59@srcf.ucam.org>  Sat, 26 Aug 2006 03:20:31 +0100
+
+xorg-server (1:1.1.1-0ubuntu8) edgy; urgency=low
+
+  * Steal patch from Fedora to allow compiz to trigger the disabling of
+   XAA off-screen pixmaps
+
+ -- Matthew Garrett <mjg59@srcf.ucam.org>  Wed, 23 Aug 2006 21:26:08 +0100
+
+xorg-server (1:1.1.1-0ubuntu7) edgy; urgency=low
+
+  * (temporarily) Removed Breaks: section from xserver-xorg-core (necessary
+    until apt-get properly supports this feature)
+  * Tightened Build-Depends: mesa-swx11-source to >=
+    6.5.0.git.20060810-0ubuntu1
+  * Tightened Build-Depends of libgl1-mesa-dev to >=
+    6.5.0.git.20060810-0ubuntu1
+
+ -- Rodrigo Parra Novo <rodarvus@ubuntu.com>  Tue, 15 Aug 2006 07:26:07 -0300
+
+xorg-server (1:1.1.1-0ubuntu6) edgy; urgency=low
+
+  * Tightened Build-Depends of mesa-swx11-source to version 6.5.0.git.20060809
+  * Removed patch 003_fedora_root_window_black_pattern.patch (not necessary
+    for Ubuntu)
+
+ -- Rodrigo Parra Novo <rodarvus@ubuntu.com>  Fri, 11 Aug 2006 11:41:29 -0300
+
+xorg-server (1:1.1.1-0ubuntu5) edgy; urgency=low
+
+  * Renamed 003_ubuntu_sharevts_load_cpu.patch to
+    002_ubuntu_sharevts_load_cpu.patch
+  * Added 003_fedora_root_window_black_pattern.patch (black background
+    pattern instead of default X background pattern. Feel free to revert if
+    you feel strongly against this one)
+  * Added 005_fdo4320_composite_fastpath.patch and
+    016_fdo7482_xdmx_render_fix.patch (upstream bug fixes, bug numbers
+    annotated on patch names)
+  * Added 004_fedora_init_origins_fix.patch (multihead initialization)
+  * Added 006_ubuntu_fpic_libxf86config.patch
+  * Added 007_fedora_dont_backfill_bg_none.patch
+  * Added 008_fedora_gl_include_inferiors.patch,
+    009_fedora_mesa_copy_sub_buffer.patch,
+    010_fedora_no_move_damage.patch,
+    012_fedora_tfp_damage.patch and
+    014_fedora_no_composite_in_xnest.patch (further aiglx support)
+  * 011_fedora_pci_scan_fixes.patch (pci scan fixes - testing is needed to
+    check if an extra upstream patch for pci domains is also necessary)
+  * Added 015_fedora_sane_default_mode.patch (tweak default mode - please feel
+    free to revert this patch if you feel strongly against it)
+  * Added 017_fedora_add_missing_headers_to_sdk.patch
+  * Added 018_ubuntu_linux_kernel_include_fixes.patch and
+    013_ubuntu_symlink_mesa_source.patch (build fixes against current
+    linux-kernel-modules * mesa-swx11-source - these already existed before,
+    but were applied directly to the source tree, instead of being quilt
+    patches)
+  * Just for reference: debian patch #02 is candidate for removal on next
+    upload. I'll refrain from removing it now to diminish the chances of this
+    being a breaks-for-everyone release
+  * Moved SecurityPolicy example from /usr/share/doc/examples/ to
+    /usr/share/doc/xserver-xorg-core/
+
+ -- Rodrigo Parra Novo <rodarvus@ubuntu.com>  Mon,  7 Aug 2006 17:21:05 -0300
+
+xorg-server (1:1.1.1-0ubuntu4) edgy; urgency=low
+
+  * Added new Breaks: section to xorg-server-core:
+      xserver-xorg-driver-all, xserver-xorg-driver-apm,
+      xserver-xorg-driver-ark, xserver-xorg-driver-ati,
+      xserver-xorg-driver-chips, xserver-xorg-driver-cirrus,
+      xserver-xorg-driver-cyrix, xserver-xorg-driver-dummy,
+      xserver-xorg-driver-fbdev, xserver-xorg-driver-glint,
+      xserver-xorg-driver-i128, xserver-xorg-driver-i740,
+      xserver-xorg-driver-i810, xserver-xorg-driver-imstt,
+      xserver-xorg-driver-mga, xserver-xorg-driver-neomagic,
+      xserver-xorg-driver-newport, xserver-xorg-driver-nsc,
+      xserver-xorg-driver-nv, xserver-xorg-driver-rendition,
+      xserver-xorg-driver-s3, xserver-xorg-driver-s3virge,
+      xserver-xorg-driver-savage, xserver-xorg-driver-siliconmotion,
+      xserver-xorg-driver-sis, xserver-xorg-driver-sisusb,
+      xserver-xorg-driver-tdfx, xserver-xorg-driver-tga,
+      xserver-xorg-driver-trident, xserver-xorg-driver-tseng,
+      xserver-xorg-driver-v4l, xserver-xorg-driver-vesa,
+      xserver-xorg-driver-vga, xserver-xorg-driver-via,
+      xserver-xorg-driver-vmware, xserver-xorg-driver-voodoo,
+      xserver-xorg-video-all (<< 7.0.22ubuntu7),
+      xserver-xorg-video-apm (<< 1:1.1.1-0ubuntu1),
+      xserver-xorg-video-ark (<< 1:0.6.0-0ubuntu1),
+      xserver-xorg-video-ati (<< 1:6.6.1-0ubuntu1),
+      xserver-xorg-video-chips (<< 1:1.1.1-0ubuntu1),
+      xserver-xorg-video-cirrus (<< 1:1.1.0-0ubuntu1),
+      xserver-xorg-video-cyrix (<< 1:1.1.0-0ubuntu1),
+      xserver-xorg-video-dummy (<< 1:0.2.0-0ubuntu1),
+      xserver-xorg-video-fbdev (<< 1:0.3.0-0ubuntu1),
+      xserver-xorg-video-glint (<< 1:1.1.1-0ubuntu1),
+      xserver-xorg-video-i128 (<< 1:1.2.0-0ubuntu1),
+      xserver-xorg-video-i740 (<< 1:1.1.0-0ubuntu1),
+      xserver-xorg-video-i810 (<< 1:1.6.1-0ubuntu1),
+      xserver-xorg-video-imstt (<< 1:1.1.0-0ubuntu1),
+      xserver-xorg-video-mga (<< 1:1.4.1-0ubuntu1),
+      xserver-xorg-video-neomagic (<< 1:1.1.1-0ubuntu1),
+      xserver-xorg-video-newport (<< 1:0.2.0-0ubuntu1),
+      xserver-xorg-video-nsc (<< 1:2.8.1-0ubuntu1),
+      xserver-xorg-video-nv (<< 1:1.2.0-0ubuntu1),
+      xserver-xorg-video-rendition (<< 1:4.1.0-0ubuntu1),
+      xserver-xorg-video-s3 (<< 1:0.4.1-0ubuntu1),
+      xserver-xorg-video-s3virge (<< 1:1.9.1-0ubuntu1),
+      xserver-xorg-video-savage (<< 1:2.1.1-0ubuntu1),
+      xserver-xorg-video-siliconmotion (<< 1:1.4.1-0ubuntu1),
+      xserver-xorg-video-sis (<< 1:0.9.1-0ubuntu1),
+      xserver-xorg-video-sisusb (<< 1:0.8.1-0ubuntu1),
+      xserver-xorg-video-tdfx (<< 1:1.2.1-0ubuntu1),
+      xserver-xorg-video-tga (<< 1:1.1.0-0ubuntu1),
+      xserver-xorg-video-trident (<< 1:1.2.1-0ubuntu1),
+      xserver-xorg-video-tseng (<< 1:1.1.0-0ubuntu1),
+      xserver-xorg-video-v4l (<< 1:0.1.1-0ubuntu1),
+      xserver-xorg-video-vesa (<< 1:1.2.1-0ubuntu1),
+      xserver-xorg-video-vga (<< 1:4.1.0-0ubuntu1),
+      xserver-xorg-video-via (<< 1:0.2.1-0ubuntu1),
+      xserver-xorg-video-vmware (<< 1:10.13.0-0ubuntu1),
+      xserver-xorg-video-voodoo (<< 1:1.1.0-oubuntu1)
+
+ -- Rodrigo Parra Novo <rodarvus@ubuntu.com>  Tue,  1 Aug 2006 22:59:55 -0300
+
+xorg-server (1:1.1.1-0ubuntu3) edgy; urgency=low
+
+  * Build with -fno-stack-protector (see LP#54650)
+
+ -- Matt Zimmerman <mdz@ubuntu.com>  Mon, 31 Jul 2006 16:28:59 -0700
+
+xorg-server (1:1.1.1-0ubuntu2) edgy; urgency=low
+
+  * (sparc only) removed stale inclusion of asm/kbio.h on
+    hw/xfree86/os-support/linux/lnx_io.c and
+    hw/xfree86/os-support/linux/lnx_kbd.c
+  * Update debian/serverabiver to 1:1.1.1
+
+ -- Rodrigo Parra Novo <rodarvus@ubuntu.com>  Mon, 31 Jul 2006 12:53:22 -0300
+
+xorg-server (1:1.1.1-0ubuntu1) edgy; urgency=low
+
+  * New Upstream version
+  * Changed Build-Depends from mesa-swrast-source to mesa-swx11-source,
+    following Debian package nomenclature
+  * Re-did 12_security_policy_in_etc.diff for 1.1.1
+  * Dropped 15_security_allocate_local.diff (applied upstream)
+  * Dropped 16_SECURITY_setuid.diff (applied upstream)
+  * Dropped 000_ubuntu_fix_read_kernel_mapping.patch (applied upstream)
+  * Dropped 002_ubuntu_fix_for_certain_intel_chipsets.patch (applied upstream)
+  * Updated versioned Build-Depends on mesa-swx11-source to version
+    6.5.0.cvs.20060725-0ubuntu1
+  * Added arrayobj.c, arrayobj.h, bitset.h & rbadaptors.h to
+    GL/symlink-mesa.sh (linked from mesa-swx11-source)
+  * Added arrayobj.c to default build target on GL/mesa/main
+
+ -- Rodrigo Parra Novo <rodarvus@ubuntu.com>  Tue, 25 Jul 2006 20:06:28 -0300
+
+xorg-server (2:1.0.2-10) unstable; urgency=low
+
+  * Upload to unstable to fixed messed up last upload which was supposed to go
+    to experimental. Brown bag o' joy.
+
+ -- David Nusinow <dnusinow@debian.org>  Tue, 22 Aug 2006 19:31:08 +0000
+
+xorg-server (1:1.0.2-9) UNRELEASED; urgency=high
+
+  [ Denis Barbier ]
+  * Fix 13_debian_add_xkbpath_env_variable.diff, XKBPATH environment
+    variable was not always taken into account.
+
+  [ David Nusinow ]
+  * Remove two Ubuntu packaging holdovers. Have xvfb recommend xbase-clients
+    rather than xauth, and have xserver-xorg-core recommend xkb-data rather
+    than xkeyboard-config. Thanks Sterling MacNay.
+  * Security update. Fix for setuid privledge escalation vulernabilities.
+    See http://lists.freedesktop.org/archives/xorg/2006-June/016146.html for
+    the full advisory.
+
+  [ Jurij Smakov ]
+  * Stop including the non-existent asm/kbio.h header file in
+    hw/xfree86/os-support/linux/lnx_{io,kbd}.c to avoid the build failure
+    on sparc.
+
+ -- David Nusinow <dnusinow@debian.org>  Sat,  1 Jul 2006 17:20:45 -0400
+
+xorg-server (1:1.0.2-8) unstable; urgency=low
+
+  * Move xserverrc back to xbase-clients. Thanks Benjamin Mesing.
+  * Add 15_security_allocate_local.diff. This fixes Bug fd.o bug #6642.
+    Fix buffer overflow in Render.  (CVE 2006-1526). Patch by Eric Anholt.
+
+ -- David Nusinow <dnusinow@debian.org>  Tue,  2 May 2006 21:47:17 -0400
+
+xorg-server (1:1.0.2-7) unstable; urgency=low
+
+  * Ship xserverrc again in /etc/X11/xinit. Thanks Bastian Kleineidam and
+    Vasilis Vasaitis. (closes: #357713)
+
+ -- David Nusinow <dnusinow@debian.org>  Wed, 26 Apr 2006 00:01:16 -0400
+
+xorg-server (1:1.0.2-6) unstable; urgency=low
+
+  [ David Nusinow ]
+  * Use -DNO_INLINE on s390. Thanks Bastian Blank and Julien Cristau.
+    (closes: #362641)
+  * Re-add xvfb-run and manpage to xvfb package. Thanks Josselin Mouette and
+    Jamie Wilkinson. (closes: #363494)
+  * Add 014_debian_always_look_in_our_module_path.diff. This will cause the
+    server to always look in the default module path even if they've specified
+    an alternate path in their xorg.conf file via the ModulePath option. A
+    note to users: you should remove this part of your xorg.conf unless you
+    need it, as the server will look in the right place for modules if you
+    don't specify a location.
+  * Run dh_install with --list-missing
+  * Add missing manpages all around. Thanks Roland Mas and Jan Hudec.
+    (closes: #362489, #364199)
+  * Actually install apps to xdmx-tools. Thanks Xavier Bestel.
+    (closes: #356813)
+
+  [ Denis Barbier ]
+  * Add 13_debian_add_xkbpath_env_variable.diff so that the server takes
+    the XKBPATH environment variable into account. (closes: #363229)
+
+ -- David Nusinow <dnusinow@debian.org>  Sat, 22 Apr 2006 17:06:23 -0400
+
+xorg-server (1:1.0.2-5) unstable; urgency=low
+
+  * Add 11_debian_always_use_default_font_path.diff from Eugene Konev. This
+    patch causes the server to add the default font path to whatever the user
+    has specified. Right now, that's /usr/share/fonts/X11, as defined on
+    configure in debian/rules. Thanks Eugene, this will definitely go a long
+    way.
+  * Document how to get rid of error loading glcore (and other modules) in
+    NEWS.Debian. Thanks Matej Vela and others.
+  * Provide the virtual 'xserver' package. Thanks Steve Langasek and Daniel
+    Stone. (closes: #362750)
+  * Add 12_security_policy_in_etc.diff from Eugene Konev. This will allow us
+    to tell the server on configure to look in /etc/X11/xserver for the
+    SecurityPolicy file. Thanks Joey Hess and Eugene. (closes: #362246)
+
+ -- David Nusinow <dnusinow@debian.org>  Mon, 17 Apr 2006 00:34:08 -0400
+
+xorg-server (1:1.0.2-4) unstable; urgency=low
+
+  * Document the need to update paths in xserver-xorg-core's NEWS file.
+    (closes: #362077, #362244, #362431)
+  * Make xserver-xorg-core Architecture: any. (closes: #362150)
+  * Build with --with-fontdir=/usr/share/fonts/X11. Remove
+    --with-default-font-path option to make this work. Thanks Eugene Konev.
+
+ -- David Nusinow <dnusinow@debian.org>  Thu, 13 Apr 2006 23:54:06 -0400
+
+xorg-server (1:1.0.2-3) unstable; urgency=low
+
+  * Add build-conflicts on xlibs-static-dev. Thanks Zephaniah E. Hull.
+
+ -- David Nusinow <dnusinow@debian.org>  Tue, 11 Apr 2006 18:44:51 -0400
+
+xorg-server (1:1.0.2-2) unstable; urgency=low
+
+  * Upload to unstable
+  * Add versioned build-dep on libdmx-dev. Thanks Frank Lichtenheld.
+    (closes: #361752)
+
+ -- David Nusinow <dnusinow@debian.org>  Mon, 10 Apr 2006 19:34:04 -0400
+
+xorg-server (1:1.0.2-1) experimental; urgency=low
+
+  [ David Nusinow ]
+  * New upstream release. Fixes CVE-2006-0745
+
+  [ Denis Barbier ]
+  * Set XKB base path to /usr/share/X11/xkb.
+
+ -- David Nusinow <dnusinow@debian.org>  Mon, 20 Mar 2006 21:41:04 -0500
+
+xorg-server (1:1.0.2-0ubuntu10) dapper; urgency=low
+
+  * Backport a fix for Intel bridge handling:
+  debian/patches/002_fix_for_certain_intel_chipsets.patch
+  (Closes Ubuntu: #29880)
+
+ -- Paul Sladen <ubuntu@paul.sladen.org>  Sun, 14 May 2006 19:01:32 +0100
+
+xorg-server (1:1.0.2-0ubuntu9) dapper; urgency=low
+
+  * Add 1680x1050 60 and 85Hz Modelines. Thanks to Bart Verwilst for the data.
+  (Closes Ubuntu: #6096)
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Fri, 05 May 2006 12:38:22 +0200
+
+xorg-server (1:1.0.2-0ubuntu8) dapper; urgency=low
+
+  * Fix "XCB rendertest crashes server":
+    - Add patch 001-CVE-2006-1526.patch.dpatch.
+  (CVE-2006-1526)
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Wed, 03 May 2006 09:01:09 +0200
+
+xorg-server (1:1.0.2-0ubuntu7) dapper; urgency=low
+
+  * Ship again xorg.conf(5)
+  (Closes Ubuntu: #33703)
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Mon, 01 May 2006 13:37:40 +0200
+
+xorg-server (1:1.0.2-0ubuntu6) dapper; urgency=low
+
+  * Fix severe internal memory corruption:
+    - Add patch: 000-fix-read-kernel-mapping.patch.dpatch.
+    (freedesktop bugzilla: #6472)
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Fri, 21 Apr 2006 08:07:33 +0200
+
+xorg-server (1:1.0.2-0ubuntu5) dapper; urgency=low
+
+  * Fix CPU load when using -sharevts:
+    - Add patch: 991_sharevts-load-cpu.patch
+    (Thanks for the initial patch to Michael Witrant)
+    (Closes Ubuntu: #33611)
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Mon, 10 Apr 2006 13:30:26 +0200
+
+xorg-server (1:1.0.2-0ubuntu4) dapper; urgency=low
+
+  * Fix SecurityPolicy path to /etc/X11/xserver/SecurityPolicy
+    and ship an example. NOTE: this file is NOT installed by default,
+    the WARNING you see in Xorg.0.log is an harmless WARNING.
+    Add patch: 990_ubuntu_fix_security_policy_path.patch.
+    (Close Ubuntu: #31608)
+
+  * Readd manpages to the different packages.
+
+  * Ship again ioport, gtf, pcitweak and scanpci.
+    (Closes Ubuntu: #37720)
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Tue, 04 Apr 2006 16:33:00 +0200
+
+xorg-server (1:1.0.2-0ubuntu3) dapper; urgency=low
+
+  * What about shipping xorg-server.m4 to make developer life easier?
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Thu, 23 Mar 2006 10:32:55 +0100
+
+xorg-server (1:1.0.2-0ubuntu2) dapper; urgency=low
+
+  * xserver-xorg-dev Depends: x11proto-randr-dev.
+  (Closes Ubuntu: #35594)
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Wed, 22 Mar 2006 08:09:46 +0100
+
+xorg-server (1:1.0.2-0ubuntu1) dapper; urgency=low
+
+  * New upstream release:
+    - Drop patches:
+      + CVE-2006-0745
+      + add-missing-sparc-include
+      + fix-backtrace
+      + fix-crash-on-null-addr
+
+  * UVF execption granted by mdz.
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Tue, 21 Mar 2006 05:39:01 +0100
+
+xorg-server (1:1.0.1-2) experimental; urgency=low
+
+  [ David Nusinow ]
+  * Add versioned dependency on x11-common
+  * Remove old cruft in our patches directory
+  * Port patches from trunk
+    + 030_libvgahw_gcc4_volatile_fix.diff
+    + general/026_xc_programs_manpage_overhaul.diff
+    + arm/303_arm_cache_flush.diff
+    + arm/315_arm_is_not_x86_and_has_no_vga.diff
+    + general/099e_xorgconf_manpage_overhaul.diff
+    + s390/500_s390_support.diff
+    + debian/910_debian_Xserver_RTFF.diff
+  * add 04_read_rom_in_chunks.diff. This reads PCI ROM in large chunks rather
+    than one byte at a time. This patch by Alex Williamson and forwarded to us
+    by Dann Frazier. Thanks to both of them. (closes: #353168)
+  * Don't build xserver-xorg-core on s390. This means putting all the other
+    arches as being explicitly listed. Damn !s390.
+  * Version the conflict with xserver-xfree86 to allow for the transition
+    package to be installed
+  * Remove README.DRI, as it is non-free. Add it to prune list.
+  * Add 10_dont_look_in_home_for_config.diff to prevent looking in a user's
+    home directory for xorg.conf. Thanks Daniel Stone for the patch.
+
+ -- David Nusinow <dnusinow@debian.org>  Sun, 12 Mar 2006 16:18:13 -0500
+
+xorg-server (1:1.0.1-1) experimental; urgency=low
+
+  * First upload to Debian
+  * Add bison and flex to the build-depends
+  * Define INSTALL in debian/rules
+  * Add xserver-xorg-core dependency xserver-xorg-video-all |
+    xserver-xorg-video. The former is a metapackage that depends on all the
+    video drivers we ship and the latter is a virtual package that each video
+    driver provides. This scheme will install the metapackage by default but
+    will permit any single video driver to satsify the dependency. Do the same
+    thing for the input drivers.
+  * switch dpatch build-dependency to quilt
+  * Deal with mesa packaging rename: build-dep on mesa-swrast-source ->
+    mesa-swx11-source
+  * Change xserver-core depends to be on x11-common rather than xorg-common
+  * Have xserver-xorg-dev install the files in /usr/share/aclocal so we get
+    xorg-server.m4
+  * Manually set permissions on serverabiver installation
+  * Set the default font path to /usr/share/fonts/X11 instead of
+    /usr/share/X11/fonts. Thanks Eugene Konev.
+
+ -- David Nusinow <dnusinow@debian.org>  Mon, 20 Feb 2006 00:18:45 -0500
+
+xorg-server (1:1.0.1-0ubuntu8) dapper; urgency=low
+
+  * [SECURITY] Fix CVE-2006-0745.
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Tue, 21 Mar 2006 05:33:50 +0100
+
+xorg-server (1:1.0.1-0ubuntu7) dapper; urgency=low
+
+  * debian/control:
+    - xvfb Depends on xfonts-base too, fix pointed by fabbione
+
+ -- Sebastien Bacher <seb128@canonical.com>  Fri,  3 Mar 2006 22:21:56 +0100
+
+xorg-server (1:1.0.1-0ubuntu5) dapper; urgency=low
+
+  * Add missing include on sparc. Fix FTBFS.
+
+ -- Fabio M. Di Nitto <fabbione@ubuntu.com>  Wed, 01 Feb 2006 13:45:41 +0100
+
+xorg-server (1:1.0.1-0ubuntu4) dapper; urgency=low
+
+  * Backport from upstream HEAD at Daniel's request:
+    - Add forgotten HAVE_BACKTRACE define, so that we actually get
+      backtraces when Xorg segfaults.
+
+ -- Colin Watson <cjwatson@ubuntu.com>  Fri, 27 Jan 2006 13:47:56 +0000
+
+xorg-server (1:1.0.1-0ubuntu3) dapper; urgency=low
+
+  * Depend on x11-common rather than xorg-common and xserver-common
+
+ -- Tollef Fog Heen <tfheen@ubuntu.com>  Wed, 18 Jan 2006 17:13:12 +0100
+
+xorg-server (1:1.0.1-0ubuntu2) dapper; urgency=low
+
+  * Add flex to build-deps, fixing FTBFS.
+
+ -- Tollef Fog Heen <tfheen@ubuntu.com>  Wed, 18 Jan 2006 12:34:03 +0100
+
+xorg-server (1:1.0.1-0ubuntu1) dapper; urgency=low
+
+  * New upstream release.
+
+ -- Daniel Stone <daniel.stone@ubuntu.com>  Fri,  6 Jan 2006 08:00:52 +1100
+
+xorg-server (1:1.0.0-0ubuntu1) dapper; urgency=low
+
+  * New upstream release.
+    + fbCompositeGeneral is now around 97.3% less stuffed (closes:
+      Ubuntu#20286).
+    + 'Fix' mouse issues in the DIX by adding XFree86Server defines (sigh;
+      closes: Ubuntu#20200).
+    + Fix Emulate3Buttons mouse posting (closes: Ubuntu#11308).
+  * Bump Build-Depends on libxt-dev (appdefaultdir), libdrm-dev (libdrm2), and
+    mesa-swrast-source (new files).
+  * Add --with-fontdir and scotch --with-default-font-path to fix font paths
+    for non-Xorg servers (closes: Ubuntu#20157).
+  * Fix path to SecurityPolicy and RGB_DB.
+  * Move update-linux-hardened-support call to xserver-xorg-core postinst
+    (from xserver-xorg postinst).
+  * Add patch to os/access.c so we don't crash on a null-addressed interface
+    (closes: Ubuntu#20414).
+
+ -- Daniel Stone <daniel.stone@ubuntu.com>  Tue, 13 Dec 2005 07:27:13 +1100
+
+xorg-server (1:0.99.3-0ubuntu6) dapper; urgency=low
+
+  * Fix xserver-xorg-dev Depends field to only depend on the headers this
+    this package actually uses.
+  * Re-add xvfb-run to xfvb (closes: Ubuntu#20157).
+
+ -- Daniel Stone <daniel.stone@ubuntu.com>  Mon,  5 Dec 2005 15:04:14 +1100
+
+xorg-server (1:0.99.3-0ubuntu5) dapper; urgency=low
+
+  * Add -ffunction-sections where needed
+  * Depend: xserver-common: needed for dexconf and /usr/X11R6/bin/X
+
+ -- LaMont Jones <lamont@ubuntu.com>  Sat, 26 Nov 2005 05:15:36 +0000
+
+xorg-server (1:0.99.3-0ubuntu4) dapper; urgency=low
+
+  * Add two more dependencies to build the other half of the video drivers:
+    - x11proto-xext-dev, x11proto-video-dev
+
+ -- Adam Conrad <adconrad@ubuntu.com>  Fri, 25 Nov 2005 02:36:44 +1100
+
+xorg-server (1:0.99.3-0ubuntu3) dapper; urgency=low
+
+  * Add a few dependencies to xorg-server-dev as the path of least resistance
+    to get all the various input and video drivers to build again:
+    - For the video drivers: x11proto-randr-dev, x11proto-render-dev,
+      x11proto-fonts-dev, x11proto-xf86dri-dev, libdrm-dev
+    - For the input drivers: x11proto-core-dev, x11proto-input-dev,
+      x11proto-randr-dev (why do input drivers want randr?)
+
+ -- Adam Conrad <adconrad@ubuntu.com>  Thu, 24 Nov 2005 18:51:25 +1100
+
+xorg-server (1:0.99.3-0ubuntu2) dapper; urgency=low
+
+  * Add missing libfreetype6-dev build-depends.
+
+ -- Daniel Stone <daniel.stone@ubuntu.com>  Thu, 24 Nov 2005 10:26:44 +1100
+
+xorg-server (1:0.99.3-0ubuntu1) dapper; urgency=low
+
+  * New upstream release.
+
+ -- Daniel Stone <daniel.stone@ubuntu.com>  Mon, 21 Nov 2005 14:13:41 +1100
+
+xorg-server (1:0.99.2+cvs.20051025-3) dapper; urgency=low
+
+  * Version mesa-swrast-source Build-Dep to 6.4.0 or higher, so GLcore is a
+    little less crash-happy (e.g. when moving your glxgears window).
+  * Export /usr/share/xserver-xorg/serverabiver to xserver-xorg-dev, which
+    describes the relationship needed from a driver on xserver-xorg-core.
+
+ -- Daniel Stone <daniel.stone@ubuntu.com>  Fri, 28 Oct 2005 13:00:26 +1000
+
+xorg-server (1:0.99.2+cvs.20051025-2) dapper; urgency=low
+
+  * Add Build-Deps on libxaw7-dev, libxmu-dev, libxt-dev, libxpm-dev,
+    libx11-dev, libxtst-dev, and libxres-dev for DMX utils.
+
+ -- Daniel Stone <daniel.stone@ubuntu.com>  Wed, 26 Oct 2005 14:34:40 +1000
+
+xorg-server (1:0.99.2+cvs.20051025-1) dapper; urgency=low
+
+  * Update to new upstream version.
+  * All applicable patches have been committed upstream, bar #989 and #990.
+
+ -- Daniel Stone <daniel.stone@ubuntu.com>  Thu, 20 Oct 2005 10:26:33 +1000
+
+xorg-server (1:0.99.0+cvs.20050901-1) breezy; urgency=low
+
+  * First xorg-server release.
+
+ -- Daniel Stone <daniel.stone@ubuntu.com>  Wed,  6 Jul 2005 15:48:17 +1000
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7f8f011
--- /dev/null
@@ -0,0 +1 @@
+7
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..e0cb716
--- /dev/null
@@ -0,0 +1,391 @@
+Source: xorg-server
+Section: x11
+Priority: optional
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+XSBC-Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Build-Depends:
+ debhelper (>= 7),
+ dpkg-dev (>= 1.16.1),
+ quilt,
+ lsb-release,
+ pkg-config,
+ bison,
+ flex,
+ automake,
+ libtool,
+ xauth,
+ xutils-dev (>= 1:7.6+4),
+ xfonts-utils (>= 1:7.5+1),
+ x11proto-bigreqs-dev (>= 1:1.1.0),
+ x11proto-composite-dev (>= 1:0.4),
+ x11proto-core-dev (>= 7.0.22),
+ x11proto-damage-dev (>= 1.1),
+ x11proto-fixes-dev (>= 1:5.0-2ubuntu1),
+ x11proto-kb-dev (>= 1.0.3),
+ x11proto-xinerama-dev,
+ x11proto-randr-dev (>= 1.4.0),
+ x11proto-record-dev (>= 1.13.99.1),
+ x11proto-render-dev (>= 2:0.11),
+ x11proto-resource-dev (>= 1.2.0),
+ x11proto-scrnsaver-dev,
+ x11proto-video-dev,
+ x11proto-xcmisc-dev (>= 1.2.0),
+ x11proto-xext-dev (>= 7.2.99.901),
+ x11proto-xf86bigfont-dev (>= 1.2.0),
+ x11proto-xf86dga-dev (>= 2.0.99.1),
+ x11proto-xf86vidmode-dev (>= 2.2.99.1),
+ x11proto-present-dev,
+ x11proto-dri3-dev,
+ xtrans-dev (>= 1.3.2),
+ libxau-dev (>= 1:1.0.5-2),
+ x11proto-input-dev (>= 2.3),
+ x11proto-dri2-dev (>= 2.8),
+ libxdmcp-dev (>= 1:0.99.1),
+ libxfont-dev (>= 1:1.4.2),
+ libxkbfile-dev (>= 1:0.99.1),
+ libpixman-1-dev (>= 0.27.2),
+ libpciaccess-dev (>= 0.12.901),
+ libgcrypt-dev,
+ nettle-dev,
+ libudev-dev (>= 151-3) [linux-any],
+ libselinux1-dev (>= 2.0.80) [linux-any],
+ libaudit-dev [linux-any],
+ x11proto-xf86dri-dev (>= 2.1.0),
+ libdrm-dev (>= 2.4.3) [!hurd-i386],
+ x11proto-gl-dev (>= 1.4.17),
+ libgl1-mesa-dev (>= 9.2),
+ libxmuu-dev (>= 1:0.99.1),
+ libxext-dev (>= 1:0.99.1),
+ libx11-dev (>= 2:1.6),
+ libxrender-dev (>= 1:0.9.0),
+ libxi-dev (>= 2:1.7.1.901),
+ x11proto-dmx-dev (>= 1:2.2.99.1),
+ libdmx-dev (>= 1:1.0.1),
+ libxpm-dev (>= 1:3.5.3),
+ libxaw7-dev (>= 1:0.99.1),
+ libxt-dev (>= 1:0.99.1),
+ libxmu-dev (>= 1:0.99.1),
+ libxtst-dev (>= 1:0.99.1),
+ libxres-dev (>= 1:0.99.1),
+ libxfixes-dev (>= 1:5.0.1),
+ libxv-dev,
+ libxinerama-dev,
+ libxshmfence-dev (>= 1.1) [!hurd-i386],
+# XCB bits for Xephyr
+ libxcb1-dev,
+ libxcb-shape0-dev,
+ libxcb-util0-dev,
+ libxcb-image0-dev,
+ libxcb-icccm4-dev,
+ libxcb-shm0-dev,
+ libxcb-keysyms1-dev,
+ libxcb-xv0-dev,
+ libxcb-glx0-dev,
+ libxcb-xf86dri0-dev (>= 1.6),
+# unit tests
+ xkb-data,
+ x11-xkb-utils,
+# getpeereid()
+ libbsd-dev [kfreebsd-any],
+# XMir
+ libmirclient-dev (>= 0.1.5) [!arm64 !powerpc !ppc64el],
+ libatomic-ops-dev,
+Standards-Version: 3.9.3
+Vcs-Git: git://git.debian.org/git/pkg-xorg/xserver/xorg-server
+Vcs-Browser: http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git
+
+Package: xserver-xorg-core
+Architecture: any
+Depends:
+ xserver-common (>= ${source:Version}),
+ keyboard-configuration [linux-any kfreebsd-any],
+ udev (>= 149) [linux-any],
+ devd [kfreebsd-any],
+ ${shlibs:Depends},
+ ${misc:Depends},
+Recommends: libgl1-mesa-dri (>= 7.10.2-4)
+Suggests: xfonts-100dpi | xfonts-75dpi, xfonts-scalable
+Breaks:
+ xserver-xorg-video,
+ xserver-xorg-video-1.0,
+ xserver-xorg-video-1.9,
+ xserver-xorg-video-2,
+ xserver-xorg-video-4,
+ xserver-xorg-video-5,
+ xserver-xorg-video-6,
+ xserver-xorg-input,
+ xserver-xorg-input-2,
+ xserver-xorg-input-2.1,
+ xserver-xorg-input-4,
+ xserver-xorg-input-7,
+ xserver-xorg-input-wacom (<< 0.7.8),
+ xserver-xorg-input-joystick (<= 1:1.5.0-3),
+ xserver-xorg-input-synaptics (<= 1.2.2-1ubuntu4),
+ xserver-xorg-input-tslib (<= 0.0.6-3),
+ xserver-xorg-input-vmmouse (<= 1:12.6.5-4ubuntu2),
+ xserver-xorg-input-wacom (<= 0.10.5+20100415-1),
+ xserver-xorg-video-cyrix (<= 1:1.1.0-8),
+ xserver-xorg-video-i810 (<< 2:2.4),
+ xserver-xorg-video-imstt (<= 1:1.1.0-7),
+ xserver-xorg-video-nsc (<= 1:2.8.3-4),
+ xserver-xorg-video-sunbw2 (<= 1:1.1.0-5),
+ xserver-xorg-video-v4l (<< 1:0.2.0),
+ xserver-xorg-video-vga (<= 1:4.1.0-8),
+ libgl1-mesa-dri (<< 7.10.2-4),
+ libgl1-mesa-dri-experimental (<< 7.10.2-4),
+ qt4-x11 (<< 4:4.8.0-1ubuntu2),
+ utouch-geis (<< 2.2.3),
+ utouch-frame (<< 2.1.0),
+ unity (<< 7.0.2),
+ libxfixes3 (<< 1:5.0.1),
+ libxi6 (<< 2:1.7.1.901),
+Conflicts:
+ xserver-xorg-input-evtouch,
+Provides:
+ ${videoabi},
+ ${inputabi},
+Description: Xorg X server - core server
+ The Xorg X server is an X server for several architectures and operating
+ systems, which is derived from the XFree86 4.x series of X servers.
+ .
+ The Xorg server supports most modern graphics hardware from most vendors,
+ and supersedes all XFree86 X servers.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+
+Package: xserver-xorg-core-udeb
+XC-Package-Type: udeb
+Section: debian-installer
+# exclude sparc because of linker errors
+Architecture: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc powerpcspe ppc64el s390
+Depends:
+# merged: xserver-common (>= ${source:Version}),
+ xkb-data-udeb,
+ x11-xkb-utils-udeb,
+# disabled: keyboard-configuration [linux-any kfreebsd-any],
+ udev-udeb (>= 149) [linux-any],
+ devd-udeb [kfreebsd-any],
+ ${shlibs:Depends},
+ ${misc:Depends},
+Provides:
+ ${videoabi},
+ ${inputabi},
+Description: Xorg X server - core server
+ This is a udeb, or a microdeb, for the debian-installer.
+
+Package: xserver-xorg-dev
+Architecture: any
+Depends:
+ libpixman-1-dev (>= 0.27.2),
+ x11proto-core-dev (>= 7.0.22),
+ x11proto-input-dev (>= 2.3),
+ x11proto-xext-dev (>= 7.2.99.901),
+ x11proto-video-dev,
+ x11proto-randr-dev (>= 1.4.0),
+ x11proto-render-dev (>= 2:0.11),
+ x11proto-dri2-dev (>= 2.8),
+ x11proto-gl-dev (>= 1.4.17),
+ x11proto-fonts-dev,
+ x11proto-xinerama-dev,
+ x11proto-kb-dev,
+ x11proto-xf86dri-dev,
+ x11proto-resource-dev (>= 1.2.0),
+ x11proto-scrnsaver-dev,
+ x11proto-xf86bigfont-dev (>= 1.2.0),
+ x11proto-dri3-dev,
+ x11proto-present-dev,
+ libxkbfile-dev,
+ libpciaccess-dev,
+ mesa-common-dev,
+ libmirclient-dev [!arm64 !powerpc !ppc64el],
+ ${misc:Depends},
+Description: Xorg X server - development files
+ This package provides development files for the X.Org ('Xorg') X server.
+ This is not quite the same as the DDK (Driver Development Kit) from the
+ XFree86 4.x and X.Org 6.7, 6.8 and 6.9 series of servers; it provides
+ headers and a pkg-config file for drivers using autotools to build
+ against.
+ .
+ Unless you are developing or building a driver, you probably want
+ xserver-xorg and/or xserver-xorg-core instead.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+
+Package: xdmx
+Architecture: any
+Depends:
+ xserver-common (>= ${source:Version}),
+ ${shlibs:Depends},
+ ${misc:Depends},
+Description: distributed multihead X server
+ Xdmx is a proxy X server that uses one or more other X servers as its
+ display device(s). It provides multi-head X functionality for displays that
+ might be located on different machines. Xdmx functions as a front-end X server
+ that acts as a proxy to a set of back-end X servers. All of the visible
+ rendering is passed to the back-end X servers. Clients connect to the Xdmx
+ front-end, and everything appears as it would in a regular multi-head
+ configuration. If Xinerama is enabled (e.g., with +xinerama on the command
+ line), the clients see a single large screen.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+
+Package: xdmx-tools
+Architecture: any
+Depends:
+ xdmx,
+ ${shlibs:Depends},
+ ${misc:Depends},
+Description: Distributed Multihead X tools
+ This package provides a collection of tools used for administration of
+ the Xdmx server; see the xdmx package for more information.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+
+Package: xnest
+Architecture: any
+Depends:
+ xserver-common (>= ${source:Version}),
+ ${shlibs:Depends},
+ ${misc:Depends},
+Recommends: libgl1-mesa-dri (>= 7.1~rc1)
+Provides: xserver
+Description: Nested X server
+ Xnest is a nested X server that simply relays all its requests to another
+ X server, where it runs as a client.  This means that it appears as another
+ window in your current X session.  Xnest relies upon its parent X server
+ for font services.
+ .
+ Use of the Xephyr X server instead of Xnest is recommended.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+
+Package: xvfb
+Architecture: any
+Depends:
+ xserver-common (>= ${source:Version}),
+ ${shlibs:Depends},
+ ${misc:Depends},
+ xauth,
+ x11-xkb-utils
+Recommends: libgl1-mesa-dri
+Provides: xserver
+Multi-Arch: foreign
+Description: Virtual Framebuffer 'fake' X server
+ Xvfb provides an X server that can run on machines with no display hardware
+ and no physical input devices. It emulates a dumb framebuffer using virtual
+ memory. The primary use of this server was intended to be server testing,
+ but other novel uses for it have been found, including testing clients
+ against unusual depths and screen configurations, doing batch processing with
+ Xvfb as a background rendering engine, load testing, as an aid to porting the
+ X server to a new platform, and providing an unobtrusive way to run
+ applications that don't really need an X server but insist on having one
+ anyway.
+ .
+ This package also contains a convenience script called xvfb-run which
+ simplifies the automated execution of X clients in a virtual server
+ environment. This convenience script requires the use of the xauth
+ program.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+
+Package: xserver-xephyr
+Architecture: any
+Depends:
+ xserver-common (>= ${source:Version}),
+ ${shlibs:Depends},
+ ${misc:Depends},
+Recommends: libgl1-mesa-dri (>= 7.1~rc1)
+Provides: xserver
+Description: nested X server
+ Xephyr is an X server that can be run inside another X server,
+ much like Xnest. It is based on the kdrive X server, and as a
+ result it supports newer extensions than Xnest, including render and
+ composite.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+
+Package: xserver-xorg-core-dbg
+Architecture: any
+Depends:
+ xserver-xorg-core (= ${binary:Version}),
+ ${misc:Depends},
+Priority: extra
+Section: debug
+Description: Xorg - the X.Org X server (debugging symbols)
+ The Xorg X server is an X server for several architectures and operating
+ systems, which is derived from the XFree86 4.x series of X servers.
+ .
+ The Xorg server supports most modern graphics hardware from most vendors,
+ and supersedes all XFree86 X servers.
+ .
+ This package provides debugging symbols for the Xorg X server and associated
+ modules.
+
+Package: xserver-common
+Architecture: all
+Depends:
+ x11-common,
+ xkb-data,
+ x11-xkb-utils,
+ ${misc:Depends},
+Recommends:
+ xfonts-base,
+ xauth,
+Breaks:
+ xserver-common-lts-quantal (<< 3:0),
+ xserver-common-lts-raring (<< 3:0),
+ xserver-common-lts-saucy (<< 3:0),
+ xserver-common-lts-trusty (<< 3:0),
+Replaces:
+ xserver-common-lts-quantal (<< 3:0),
+ xserver-common-lts-raring (<< 3:0),
+ xserver-common-lts-saucy (<< 3:0),
+ xserver-common-lts-trusty (<< 3:0),
+ xserver-xorg-core (<< 2:1.5.2)
+Description: common files used by various X servers
+ This package provides files necessary for all X.Org based X servers.
+
+Package: xserver-xorg-xmir
+Architecture: amd64 armhf i386
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+ xserver-xorg-core (= ${binary:Version}),
+Description: Xorg - the X.Org X server (module for running nested in Mir)
+ xserver-xorg-xmir provides an extension module to support running an
+ Xorg as a client of an existing Mir compositor.
+
+Package: xorg-server-source
+Architecture: all
+Depends:
+ ${misc:Depends},
+Description: Xorg X server - source files
+ This package provides original Debian (with Debian patches already
+ applied, and autotools files updated) sources for the X.Org ('Xorg')
+ X server shipped in a tarball.  This enables other projects re-using
+ X server codebase (e.g. VNC servers) to (re-)use officially
+ Debian-supported version of the X xserver for their builds.
+ .
+ Unless you are building a software product using X server sources,
+ you probably want xserver-xorg and/or xserver-xorg-core instead.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..cd9e80a
--- /dev/null
@@ -0,0 +1,1822 @@
+The following is the 'standard copyright' agreed upon by most contributors,
+and is currently the canonical license preferred by the X.Org Foundation.
+This is a slight variant of the common MIT license form published by the
+Open Source Initiative at http://www.opensource.org/licenses/mit-license.php
+
+Copyright holders of new code should use this license statement where
+possible, and insert their name to this list.  Please sort by surname
+for people, and by the full name for other entities (e.g.  Juliusz
+Chroboczek sorts before Intel Corporation sorts before Daniel Stone).
+
+Copyright © 2000-2001 Juliusz Chroboczek
+Copyright © 1998 Egbert Eich
+Copyright © 2006-2007 Intel Corporation
+Copyright © 2006 Nokia Corporation
+Copyright © 2006-2008 Peter Hutterer
+Copyright © 2006 Adam Jackson
+Copyright © 2009-2010 NVIDIA Corporation
+Copyright © 1987, 2003-2006, 2008-2010 Oracle and/or its affiliates.
+Copyright © 1999 Keith Packard
+Copyright © 2007-2009 Red Hat, Inc.
+Copyright © 2005-2008 Daniel Stone
+Copyright © 2006-2009 Simon Thum
+Copyright © 2006 Luc Verhaegen
+
+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.
+
+
+
+
+The following licenses are 'legacy': usually MIT/X11 licenses with the name
+of the copyright holder(s) in the license statement, but also some BSD-like
+licenses.
+
+
+Copyright (C) 1994-2003 The XFree86 Project, Inc.  All Rights Reserved.
+Copyright (C) Colin Harrison 2005-2008
+
+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 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, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+XFREE86 PROJECT 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 XFree86 Project 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 XFree86 Project.
+
+
+Copyright 1997 by The XFree86 Project, Inc.
+
+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, and that the name of the XFree86 Project, Inc.
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission.  The Xfree86
+Project, Inc. makes no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+THE XFREE86 PROJECT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT 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 1985-1998, 2001  The Open Group
+Copyright 2002 Red Hat Inc., Durham, North Carolina.
+
+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 (c) 1987, 1989-1990, 1992-1995  X Consortium
+
+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 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
+X CONSORTIUM 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 X Consortium 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 X Consortium.
+
+
+Copyright © 1999-2000 SuSE, Inc.
+Copyright © 2007 Red Hat, Inc.
+
+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, and that the name of SuSE not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.  SuSE makes no representations about the
+suitability of this software for any purpose.  It is provided "as is"
+without express or implied warranty.
+
+SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
+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 1987-1991, 1993 by Digital Equipment Corporation, Maynard, Massachusetts.
+Copyright 1991 Massachusetts Institute of Technology, Cambridge, Massachusetts.
+Copyright 1991, 1993 Olivetti Research Limited, Cambridge, England.
+
+                        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 Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1994 Quarterdeck Office Systems.
+
+                        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 names of Digital and
+Quarterdeck not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+DIGITAL AND QUARTERDECK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL DIGITAL 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 1997 Digital Equipment Corporation.
+All rights reserved.
+
+This software is furnished under license and may be used and copied only in
+accordance with the following terms and conditions.  Subject to these
+conditions, you may download, copy, install, use, modify and distribute
+this software in source and/or binary form. No title or ownership is
+transferred hereby.
+
+1) Any source code used, modified or distributed must reproduce and retain
+   this copyright notice and list of conditions as they appear in the
+   source file.
+
+2) No right is granted to use any trade name, trademark, or logo of Digital
+   Equipment Corporation. Neither the "Digital Equipment Corporation"
+   name nor any trademark or logo of Digital Equipment Corporation may be
+   used to endorse or promote products derived from this software without
+   the prior written permission of Digital Equipment Corporation.
+
+3) This software is provided "AS-IS" and any express or implied warranties,
+   including but not limited to, any implied warranties of merchantability,
+   fitness for a particular purpose, or non-infringement are disclaimed.
+   In no event shall DIGITAL be liable for any damages whatsoever, and in
+   particular, DIGITAL shall not be liable for special, indirect,
+   consequential, or incidental damages or damages for lost profits, loss
+   of revenue or loss of use, whether such damages arise in contract,
+   negligence, tort, under statute, in equity, at law or otherwise, even
+   if advised of the possibility of such damage.
+
+
+Copyright (c) 1991, 1996-1997 Digital Equipment Corporation, Maynard, Massachusetts.
+
+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.
+
+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
+DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Digital
+Equipment Corporation.
+
+
+SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
+Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
+
+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 including the dates of first publication and
+either this permission notice or a reference to
+http://oss.sgi.com/projects/FreeB/
+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
+SILICON GRAPHICS, INC. 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.
+
+
+Copyright (c) 1994, 1995  Hewlett-Packard Company
+
+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 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 HEWLETT-PACKARD COMPANY 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 Hewlett-Packard
+Company 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 Hewlett-Packard Company.
+
+
+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 2001-2004 Red Hat Inc., Durham, North Carolina.
+Copyright (c) 2003 by the XFree86 Project, Inc.
+Copyright 2004-2005 Red Hat Inc., Raleigh, North Carolina.
+All Rights Reserved.
+
+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 on 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
+NON-INFRINGEMENT.  IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+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.
+
+
+Copyright © 2008 Red Hat, Inc.
+Partly based on code Copyright © 2000 SuSE, Inc.
+
+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, and that the name of Red Hat
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.  Red
+Hat makes no representations about the suitability of this software
+for any purpose.  It is provided "as is" without express or implied
+warranty.
+
+Red Hat DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+NO EVENT SHALL Red Hat 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.
+
+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, and that the name of SuSE not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.  SuSE makes no representations about the
+suitability of this software for any purpose.  It is provided "as is"
+without express or implied warranty.
+
+SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
+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 © 2006  Red Hat, Inc.
+(C) Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+All Rights Reserved.
+
+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, sub license,
+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 NON-INFRINGEMENT.  IN NO EVENT SHALL
+RED HAT, INC, OR PRECISION INSIGHT AND/OR THEIR SUPPLIERS 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.
+
+
+Copyright (c) 1995  X Consortium
+Copyright 2004 Red Hat Inc., Durham, North Carolina.
+All Rights Reserved.
+
+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 on 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 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
+NON-INFRINGEMENT.  IN NO EVENT SHALL RED HAT, THE X CONSORTIUM,
+AND/OR THEIR SUPPLIERS 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 X Consortium
+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 X Consortium.
+
+
+Copyright 1998-2000 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright (c) 2002, 2008, 2009 Apple Computer, Inc.
+Copyright (c) 2003-2004 Torrey T. Lyons.
+All Rights Reserved.
+
+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, sub license, 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 NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS 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.
+
+
+(C) Copyright IBM Corporation 2003
+All Rights Reserved.
+
+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
+on the rights to use, copy, modify, merge, publish, distribute, sub
+license, 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 NON-INFRINGEMENT.  IN NO EVENT SHALL
+VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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.
+
+
+(C) Copyright IBM Corporation 2004-2005
+All Rights Reserved.
+
+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, sub license,
+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 NON-INFRINGEMENT.  IN NO EVENT SHALL
+IBM,
+AND/OR THEIR SUPPLIERS 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.
+
+
+Copyright (c) 1997  Metro Link Incorporated
+
+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 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 X CONSORTIUM 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 Metro Link shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from Metro Link.
+
+
+Copyright 1995-1998 by Metro Link, Inc.
+Copyright (c) 1997 Matthieu Herrb
+
+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, and that the name of Metro Link, Inc. not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Metro Link, Inc. makes no
+representations about the suitability of this software for any purpose.
+ It is provided "as is" without express or implied warranty.
+
+METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL METRO LINK, INC. 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 1998 by Metro Link Incorporated
+
+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, and that the name of Metro Link
+Incorporated not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.  Metro Link Incorporated makes no representations
+about the suitability of this software for any purpose.  It is
+provided "as is" without express or implied warranty.
+
+METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED 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 (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
+
+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 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
+CONECTIVA LINUX 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 Conectiva Linux shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from
+Conectiva Linux.
+
+
+Copyright (c) 2001, Andy Ritger  aritger@nvidia.com
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+o Redistributions of source code must retain the above copyright
+  notice, this list of conditions and the following disclaimer.
+o Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer
+  in the documentation and/or other materials provided with the
+  distribution.
+o Neither the name of NVIDIA nor the names of its contributors
+  may be used to endorse or promote products derived from this
+  software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
+NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+Copyright 1992 Vrije Universiteit, The Netherlands
+
+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 the Vrije Universiteit not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  The Vrije Universiteit makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+The Vrije Universiteit DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL The Vrije Universiteit 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 1998 by Concurrent Computer Corporation
+
+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, and that the name of Concurrent Computer
+Corporation not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.  Concurrent Computer Corporation makes no representations
+about the suitability of this software for any purpose.  It is
+provided "as is" without express or implied warranty.
+
+CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION 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 © 2004 Nokia
+
+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, and that the name of Nokia not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Nokia makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+NOKIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL NOKIA 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.
+
+
+(c)Copyright 1988,1991 Adobe Systems Incorporated.
+All rights reserved.
+
+Permission to use, copy, modify, distribute, and sublicense this software and its
+documentation for any purpose and without fee is hereby granted, provided that
+the above copyright notices appear in all copies and that both those copyright
+notices and this permission notice appear in supporting documentation and that
+the name of Adobe Systems Incorporated not be used in advertising or publicity
+pertaining to distribution of the software without specific, written prior
+permission.  No trademark license to use the Adobe trademarks is hereby
+granted.  If the Adobe trademark "Display PostScript"(tm) is used to describe
+this software, its functionality or for any other purpose, such use shall be
+limited to a statement that this software works in conjunction with the Display
+PostScript system.  Proper trademark attribution to reflect Adobe's ownership
+of the trademark shall be given whenever any such reference to the Display
+PostScript system is made.
+
+ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR ANY
+PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.  ADOBE
+DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
+INFRINGEMENT OF THIRD PARTY RIGHTS.  IN NO EVENT SHALL ADOBE BE LIABLE TO YOU
+OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
+DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,NEGLIGENCE, STRICT
+LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.  ADOBE WILL NOT PROVIDE ANY TRAINING OR OTHER
+SUPPORT FOR THE SOFTWARE.
+
+Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems
+Incorporated which may be registered in certain jurisdictions.
+
+
+Copyright 1989 Network Computing Devices, Inc., Mountain View, California.
+
+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 N.C.D. not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.  N.C.D. makes no representations about the
+suitability of this software for any purpose.  It is provided "as is"
+without express or implied warranty.
+
+
+Copyright (c) 1987 by the Regents of the University of California
+
+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.  The University of California
+makes no representations about the suitability of this
+software for any purpose.  It is provided "as is" without
+express or implied warranty.
+
+
+Copyright 1992, 1993 Data General Corporation;
+Copyright 1992, 1993 OMRON Corporation
+
+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, and that
+neither the name OMRON or DATA GENERAL be used in advertising or publicity
+pertaining to distribution of the software without specific, written prior
+permission of the party whose name is to be used.  Neither OMRON or
+DATA GENERAL make any representation about the suitability of this software
+for any purpose.  It is provided "as is" without express or implied warranty.
+
+OMRON AND DATA GENERAL EACH DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
+IN NO EVENT SHALL OMRON OR DATA GENERAL 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 © 1998-2004, 2006 Keith Packard
+Copyright © 2000-2002 Keith Packard, member of The XFree86 Project, Inc.
+Copyright (c) 2002 Apple Computer, Inc.
+Copyright (c) 2003 Torrey T. Lyons.
+All Rights Reserved.
+
+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, and that the name of Keith Packard not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Keith Packard makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL KEITH 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 © 1999 Keith Packard
+Copyright © 2000 Compaq Computer Corporation
+Copyright © 2002 MontaVista Software Inc.
+Copyright © 2005 OpenedHand Ltd.
+Copyright © 2006 Nokia Corporation
+
+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, and that the name of the authors and/or copyright holders
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  The authors and/or
+copyright holders make no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+THE AUTHORS AND/OR COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE AUTHORS AND/OR COPYRIGHT HOLDERS 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 1993 by Davor Matic
+
+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.  Davor Matic makes no representations about
+the suitability of this software for any purpose.  It is provided "as
+is" without express or implied warranty.
+
+
+Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved.
+Copyright (C) Colin Harrison 2005-2008
+
+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 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 HAROLD L HUNT II 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 Harold L Hunt II
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+from Harold L Hunt II.
+
+
+Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+
+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, and that the name of Thomas Roell not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Thomas Roell makes no representations
+about the suitability of this software for any purpose.  It is provided
+"as is" without express or implied warranty.
+
+THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THOMAS ROELL 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 1990,91 by Thomas Roell, Dinkelscherben, Germany
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+
+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, and that the names of Thomas Roell and David Wexelblat
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission.  Thomas Roell and
+David Wexelblat makes no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT 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 1990,91,92,93 by Thomas Roell, Germany.
+Copyright 1991,92,93    by SGCS (Snitily Graphics Consulting Services), USA.
+
+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, and that the name of Thomas Roell nor
+SGCS be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+Thomas Roell nor SGCS makes no representations about the suitability
+of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+
+THOMAS ROELL AND SGCS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THOMAS ROELL OR SGCS 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 1998 by Alan Hourihane, Wigan, England.
+Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales.
+
+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, and that the name of Alan Hourihane not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Alan Hourihane makes no representations
+about the suitability of this software for any purpose.  It is provided
+"as is" without express or implied warranty.
+
+ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ALAN HOURIHANE 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 1995  Kaleb S. KEITHLEY
+
+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 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 Kaleb S. KEITHLEY 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 Kaleb S. KEITHLEY
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+from Kaleb S. KEITHLEY
+
+
+Copyright (c) 1997 Matthieu Herrb
+
+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, and that the name of Matthieu Herrb not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Matthieu Herrb makes no
+representations about the suitability of this software for any purpose.
+ It is provided "as is" without express or implied warranty.
+
+MATTHIEU HERRB DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL MATTHIEU HERRB 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 2004, Egbert Eich
+
+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 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
+EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Egbert Eich shall not
+be used in advertising or otherwise to promote the sale, use or other deal-
+ings in this Software without prior written authorization from Egbert Eich.
+
+
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+Copyright 2005 by Kean Johnston <jkj@sco.com>
+Copyright 1993 by David McCullough <davidm@stallion.oz.au>
+
+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, and that the name of David Wexelblat not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  David Wexelblat makes no representations
+about the suitability of this software for any purpose.  It is provided
+"as is" without express or implied warranty.
+
+DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL DAVID WEXELBLAT 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 1992 by Orest Zborowski <obz@Kodak.com>
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+
+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, and that the names of Orest Zborowski and David Wexelblat
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission.  Orest Zborowski
+and David Wexelblat make no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+OREST ZBOROWSKI AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT 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 1992 by Orest Zborowski <obz@Kodak.com>
+Copyright 1993 by David Dawes <dawes@xfree86.org>
+
+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, and that the names of Orest Zborowski and David Dawes
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission.  Orest Zborowski
+and David Dawes make no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES 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 1995-1999 by Frederic Lepied, France. <fred@sugix.frmug.fr.net>
+
+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, and that   the  name of  Frederic   Lepied not  be  used  in
+advertising or publicity pertaining to distribution of the software without
+specific,  written      prior  permission.     Frederic  Lepied   makes  no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+FREDERIC  LEPIED DISCLAIMS ALL   WARRANTIES WITH REGARD  TO  THIS SOFTWARE,
+INCLUDING ALL IMPLIED   WARRANTIES OF MERCHANTABILITY  AND   FITNESS, IN NO
+EVENT  SHALL FREDERIC  LEPIED 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 1992 by Rich Murphey <Rich@Rice.edu>
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+
+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, and that the names of Rich Murphey and David Wexelblat
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission.  Rich Murphey and
+David Wexelblat make no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT 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 1992 by Rich Murphey <Rich@Rice.edu>
+Copyright 1993 by David Dawes <dawes@xfree86.org>
+
+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, and that the names of Rich Murphey and David Dawes
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission.  Rich Murphey and
+David Dawes make no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+RICH MURPHEY AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID DAWES 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 © 2003-2004 Anders Carlsson
+
+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, and that the name of Anders Carlsson not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Anders Carlsson makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+ANDERS CARLSSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ANDERS CARLSSON 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 (C) 2003 Anders Carlsson
+Copyright © 2003-2004 Eric Anholt
+Copyright © 2004 Keith Packard
+
+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, and that the name of Eric Anholt not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Eric Anholt makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ERIC ANHOLT 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 (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE
+FOR ANY SPECIAL, DIRECT, 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 © 2003-2004 Philip Blundell
+
+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, and that the name of Philip Blundell not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Philip Blundell makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+PHILIP BLUNDELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL PHILIP BLUNDELL 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 (c) 1994-2003 by The XFree86 Project, Inc.
+Copyright 1997 by Metro Link, Inc.
+Copyright 2003 by David H. Dawes.
+Copyright 2003 by X-Oz Technologies.
+Copyright (c) 2004, X.Org Foundation
+
+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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
+and author(s) 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 copyright holder(s) and author(s).
+
+
+Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+Copyright 1999 by David Holland <davidh@iquest.net>
+Copyright © 2000 Compaq Computer Corporation
+Copyright © 2002 Hewlett-Packard Company
+Copyright © 2004, 2005 Red Hat, Inc.
+Copyright © 2004 Nicholas Miell
+Copyright © 2005 Trolltech AS
+Copyright © 2006 Intel Corporation
+Copyright © 2006-2007 Keith Packard
+Copyright © 2008 Red Hat, Inc
+Copyright © 2008 George Sapountzis <gsap7@yahoo.gr>
+
+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, and
+that the name of the copyright holders not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.  The copyright holders make no representations
+about the suitability of this software for any purpose.  It is provided "as
+is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS 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 © 2000 Keith Packard, member of The XFree86 Project, Inc.
+            2005 Lars Knoll & Zack Rusin, Trolltech
+
+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, and that the name of Keith Packard not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Keith Packard makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS 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 1987, 1998  The Open Group
+Copyright © 1998-1999, 2001 The XFree86 Project, Inc.
+Copyright © 2000 VA Linux Systems, Inc.
+Copyright (c) 2000, 2001 Nokia Home Communications
+Copyright © 2007, 2008 Red Hat, Inc.
+All rights reserved.
+
+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, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+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
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+
+Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
+
+                        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 the above listed
+copyright holder(s) not be used in advertising or publicity pertaining
+to distribution of the software without specific, written prior
+permission.
+
+THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright (c) 2001 Andreas Monitzer.
+Copyright (c) 2001-2004 Greg Parker.
+Copyright (c) 2001-2004 Torrey T. Lyons
+Copyright (c) 2002-2003 Apple Computer, Inc.
+Copyright (c) 2004-2005 Alexander Gottwald
+Copyright (c) 2002-2009 Apple Inc.
+Copyright (c) 2007 Jeremy Huddleston
+All Rights Reserved.
+
+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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
+holders shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in this Software without prior written authorization.
+
+
+Copyright (C) 1999,2000 by Eric Sunshine <sunshine@sunshineco.com>
+Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+  3. The name of the author may not be used to endorse or promote products
+     derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Copyright (C) 2005 Bogdan D. bogdand@users.sourceforge.net
+
+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 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 © 2002 David Dawes
+
+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 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(S) 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(s) 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(s).
+
+
+Copyright (C) 1996-1999 SciTech Software, Inc.
+Copyright (C) David Mosberger-Tang
+Copyright (C) 1999 Egbert Eich
+Copyright (C) 2008 Bart Trojanowski, Symbio Technologies, LLC
+
+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, and that the name of the authors not be used
+in advertising or publicity pertaining to distribution of the software
+without specific, written prior permission.  The authors makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE AUTHORS 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 2005-2006 Luc Verhaegen.
+
+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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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.
+
+
+Copyright 1995 by Robin Cutshaw <robin@XFree86.Org>
+Copyright 2000 by Egbert Eich
+Copyright 2002 by David Dawes
+
+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, and that the names of the above listed copyright holder(s)
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission.  The above listed
+copyright holder(s) make(s) no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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 1997-2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
+
+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, and
+that the name of Marc Aurele La France not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.  Marc Aurele La France makes no representations
+about the suitability of this software for any purpose.  It is provided
+"as-is" without express or implied warranty.
+
+MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO
+EVENT SHALL MARC AURELE LA FRANCE 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 1990, 1991 by Thomas Roell, Dinkelscherben, Germany
+Copyright 1992 by David Dawes <dawes@XFree86.org>
+Copyright 1992 by Jim Tsillas <jtsilla@damon.ccs.northeastern.edu>
+Copyright 1992 by Rich Murphey <Rich@Rice.edu>
+Copyright 1992 by Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu>
+Copyright 1992 by Orest Zborowski <obz@eskimo.com>
+Copyright 1993 by Vrije Universiteit, The Netherlands
+Copyright 1993 by David Wexelblat <dwex@XFree86.org>
+Copyright 1994, 1996 by Holger Veit <Holger.Veit@gmd.de>
+Copyright 1997 by Takis Psarogiannakopoulos <takis@dpmms.cam.ac.uk>
+Copyright 1994-2003 by The XFree86 Project, Inc
+
+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, and that the names of the above listed copyright holders
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission.  The above listed
+copyright holders make no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS 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 2001-2005 by J. Kean Johnston <jkj@sco.com>
+
+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, and that the name J. Kean Johnston not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  J. Kean Johnston makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL J. KEAN JOHNSTON 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 (C) 2000 Jakub Jelinek (jakub@redhat.com)
+
+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 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
+JAKUB JELINEK 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.
+
+
+Copyright 1997,1998 by UCHIYAMA Yasushi
+
+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, and that the name of UCHIYAMA Yasushi not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  UCHIYAMA Yasushi makes no representations
+about the suitability of this software for any purpose.  It is provided
+"as is" without express or implied warranty.
+
+UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL UCHIYAMA YASUSHI 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 (C) 2000 Keith Packard
+              2004 Eric Anholt
+              2005 Zack Rusin
+
+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, and that the name of copyright holders not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Copyright holders make no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS 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.
+
+
+(C) Copyright IBM Corporation 2002-2007
+All Rights Reserved.
+
+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
+on the rights to use, copy, modify, merge, publish, distribute, sub
+license, 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 NON-INFRINGEMENT.  IN NO EVENT SHALL
+THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS 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.
+
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+this permission notice appear in supporting documentation.  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.
+
+
+Copyright © 2007 OpenedHand Ltd
+
+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, and that the name of OpenedHand Ltd not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. OpenedHand Ltd makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL OpenedHand Ltd 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 (c) 1989, 1990, 1993, 1994
+     The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Chris Torek.
+
+This code is derived from software contributed to Berkeley by
+Michael Rendell of Memorial University of Newfoundland.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ 4. Neither the name of the University nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644 (file)
index 0000000..4a3e532
--- /dev/null
@@ -0,0 +1,7 @@
+[DEFAULT]
+# the default branch for upstream sources:
+upstream-branch = upstream-experimental
+# the default branch for the debian patch:
+debian-branch = ubuntu
+# use pristine-tar:
+pristine-tar = True
diff --git a/debian/local/10-kbd.conf b/debian/local/10-kbd.conf
new file mode 100644 (file)
index 0000000..fee5fc8
--- /dev/null
@@ -0,0 +1,5 @@
+Section "InputClass"
+       Identifier "kbd catchall"
+       MatchIsKeyboard "on"
+       Driver "kbd"
+EndSection
diff --git a/debian/local/10-mouse.conf b/debian/local/10-mouse.conf
new file mode 100644 (file)
index 0000000..39183ea
--- /dev/null
@@ -0,0 +1,5 @@
+Section "InputClass"
+       Identifier "mouse catchall"
+       MatchIsPointer "on"
+       Driver "mouse"
+EndSection
diff --git a/debian/local/64-xorg-xkb.rules b/debian/local/64-xorg-xkb.rules
new file mode 100644 (file)
index 0000000..5a3c5b8
--- /dev/null
@@ -0,0 +1,8 @@
+ACTION!="add|change", GOTO="xorg_xkb_end"
+SUBSYSTEM!="input", GOTO="xorg_xkb_end"
+KERNEL!="event*", GOTO="xorg_xkb_end"
+
+# import keyboard layout from /etc/default/keyboard
+ENV{ID_INPUT_KEY}=="?*", IMPORT{file}="/etc/default/keyboard"
+
+LABEL="xorg_xkb_end"
diff --git a/debian/local/dh_xsf_substvars b/debian/local/dh_xsf_substvars
new file mode 100644 (file)
index 0000000..c5242ed
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/sh
+# © 2011 Cyril Brulebois <kibi@debian.org>
+#
+# Usage:
+#   Call this script from debian/rules, before dh_gencontrol is run,
+#   to get all needed variables computed in debian/$p.substvars for
+#   each package $p found through dh_listpackages.
+#   .
+#   This script has support for udebs.
+set -e
+
+# Sanity check. All drivers build-depend on debhelper:
+if ! which dh_listpackages >/dev/null 2>&1; then
+  echo "E: dh_listpackages not found, debhelper package missing?"
+  exit 1
+fi
+
+# Read the dependencies once:
+INPUTDEP=$(cat /usr/share/xserver-xorg/xinputdep 2>/dev/null)
+VIDEODEP=$(cat /usr/share/xserver-xorg/videodrvdep 2>/dev/null)
+
+# Iterate on the packages:
+for package in $(dh_listpackages); do
+  case $package in
+    *-udeb)
+      # udebs depend on udebs, tweak the dependency on the server:
+      inputdep=$(echo "$INPUTDEP"|sed 's/xserver-xorg-core/&-udeb/')
+      videodep=$(echo "$VIDEODEP"|sed 's/xserver-xorg-core/&-udeb/')
+    ;;
+    *)
+      # just copy the dependencies read previously:
+      inputdep="$INPUTDEP"
+      videodep="$VIDEODEP"
+  esac
+
+  # To avoid having "unused substitution variable" warnings from
+  # dpkg-gencontrol, only set variables which make sense:
+  case $package in
+    *-dbg|*-dev|*-all)
+      # debug, devel, or meta package, no need for Depends/Provides.
+      :
+    ;;
+    xserver-xorg-input-*)
+      # input driver:
+      echo "xinpdriver:Depends=$inputdep" >> debian/$package.substvars
+      echo "xinpdriver:Provides=xorg-driver-input" >> debian/$package.substvars
+    ;;
+    xserver-xorg-video-*)
+      # video driver:
+      echo "xviddriver:Depends=$videodep" >> debian/$package.substvars
+      echo "xviddriver:Provides=xorg-driver-video" >> debian/$package.substvars
+  esac
+done
diff --git a/debian/local/xsf.pm b/debian/local/xsf.pm
new file mode 100644 (file)
index 0000000..9037d70
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Debian::Debhelper::Dh_Lib;
+
+insert_before("dh_gencontrol", "dh_xsf_substvars");
+
+1;
diff --git a/debian/local/xvfb-run b/debian/local/xvfb-run
new file mode 100644 (file)
index 0000000..82ecb5b
--- /dev/null
@@ -0,0 +1,191 @@
+#!/bin/sh
+
+# This script starts an instance of Xvfb, the "fake" X server, runs a command
+# with that server available, and kills the X server when done.  The return
+# value of the command becomes the return value of this script, except in cases
+# where this script encounters an error.
+#
+# If anyone is using this to build a Debian package, make sure the package
+# Build-Depends on xvfb and xauth.
+
+set -e
+
+PROGNAME=xvfb-run
+SERVERNUM=99
+AUTHFILE=
+ERRORFILE=/dev/null
+XVFBARGS="-screen 0 640x480x8"
+LISTENTCP="-nolisten tcp"
+XAUTHPROTO=.
+
+# 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
+
+# Display a message, wrapping lines at the terminal width.
+message () {
+    echo "$PROGNAME: $*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS}
+}
+
+# Display an error message.
+error () {
+    message "error: $*" >&2
+}
+
+# Display a usage message.
+usage () {
+    if [ -n "$*" ]; then
+        message "usage error: $*"
+    fi
+    cat <<EOF
+Usage: $PROGNAME [OPTION ...] COMMAND
+Run COMMAND (usually an X client) in a virtual X server environment.
+Options:
+-a        --auto-servernum          try to get a free server number, starting at
+                                    --server-num
+-e FILE   --error-file=FILE         file used to store xauth errors and Xvfb
+                                    output (default: $ERRORFILE)
+-f FILE   --auth-file=FILE          file used to store auth cookie
+                                    (default: ./.Xauthority)
+-h        --help                    display this usage message and exit
+-n NUM    --server-num=NUM          server number to use (default: $SERVERNUM)
+-l        --listen-tcp              enable TCP port listening in the X server
+-p PROTO  --xauth-protocol=PROTO    X authority protocol name to use
+                                    (default: xauth command's default)
+-s ARGS   --server-args=ARGS        arguments (other than server number and
+                                    "-nolisten tcp") to pass to the Xvfb server
+                                    (default: "$XVFBARGS")
+EOF
+}
+
+# Find a free server number by looking at .X*-lock files in /tmp.
+find_free_servernum() {
+    # Sadly, the "local" keyword is not POSIX.  Leave the next line commented in
+    # the hope Debian Policy eventually changes to allow it in /bin/sh scripts
+    # anyway.
+    #local i
+
+    i=$SERVERNUM
+    while [ -f /tmp/.X$i-lock ]; do
+        i=$(($i + 1))
+    done
+    echo $i
+}
+
+# Clean up files
+clean_up() {
+    if [ -e "$AUTHFILE" ]; then
+        XAUTHORITY=$AUTHFILE xauth remove ":$SERVERNUM" >>"$ERRORFILE" 2>&1
+    fi
+    if [ -n "$XVFB_RUN_TMPDIR" ]; then
+        if ! rm -r "$XVFB_RUN_TMPDIR"; then
+            error "problem while cleaning up temporary directory"
+            exit 5
+        fi
+    fi
+    if [ -n "$XVFBPID" ]; then
+        kill "$XVFBPID" >>"$ERRORFILE" 2>&1
+    fi
+}
+
+# Parse the command line.
+ARGS=$(getopt --options +ae:f:hn:lp:s:w: \
+       --long auto-servernum,error-file:,auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \
+       --name "$PROGNAME" -- "$@")
+GETOPT_STATUS=$?
+
+if [ $GETOPT_STATUS -ne 0 ]; then
+    error "internal error; getopt exited with status $GETOPT_STATUS"
+    exit 6
+fi
+
+eval set -- "$ARGS"
+
+while :; do
+    case "$1" in
+        -a|--auto-servernum) SERVERNUM=$(find_free_servernum); AUTONUM="yes" ;;
+        -e|--error-file) ERRORFILE="$2"; shift ;;
+        -f|--auth-file) AUTHFILE="$2"; shift ;;
+        -h|--help) SHOWHELP="yes" ;;
+        -n|--server-num) SERVERNUM="$2"; shift ;;
+        -l|--listen-tcp) LISTENTCP="" ;;
+        -p|--xauth-protocol) XAUTHPROTO="$2"; shift ;;
+        -s|--server-args) XVFBARGS="$2"; shift ;;
+        -w|--wait) shift ;;
+        --) shift; break ;;
+        *) error "internal error; getopt permitted \"$1\" unexpectedly"
+           exit 6
+           ;;
+    esac
+    shift
+done
+
+if [ "$SHOWHELP" ]; then
+    usage
+    exit 0
+fi
+
+if [ -z "$*" ]; then
+    usage "need a command to run" >&2
+    exit 2
+fi
+
+if ! which xauth >/dev/null; then
+    error "xauth command not found"
+    exit 3
+fi
+
+# tidy up after ourselves
+trap clean_up EXIT
+
+# If the user did not specify an X authorization file to use, set up a temporary
+# directory to house one.
+if [ -z "$AUTHFILE" ]; then
+    XVFB_RUN_TMPDIR="$(mktemp -d -t $PROGNAME.XXXXXX)"
+    # Create empty file to avoid xauth warning
+    AUTHFILE=$(tempfile -n "$XVFB_RUN_TMPDIR/Xauthority")
+fi
+
+# Start Xvfb.
+MCOOKIE=$(mcookie)
+tries=10
+while [ $tries -gt 0 ]; do
+    tries=$(( $tries - 1 ))
+    XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1
+add :$SERVERNUM $XAUTHPROTO $MCOOKIE
+EOF
+    # handle SIGUSR1 so Xvfb knows to send a signal when it's ready to accept
+    # connections
+    trap : USR1
+    (trap '' USR1; exec Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP -auth $AUTHFILE >>"$ERRORFILE" 2>&1) &
+    XVFBPID=$!
+
+    wait || :
+    if kill -0 $XVFBPID 2>/dev/null; then
+        break
+    elif [ -n "$AUTONUM" ]; then
+        # The display is in use so try another one (if '-a' was specified).
+        SERVERNUM=$((SERVERNUM + 1))
+        SERVERNUM=$(find_free_servernum)
+        continue
+    fi
+    error "Xvfb failed to start" >&2
+    XVFBPID=
+    exit 1
+done
+
+# Start the command and save its exit status.
+set +e
+DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1
+RETVAL=$?
+set -e
+
+# Return the executed command's exit status.
+exit $RETVAL
+
+# vim:set ai et sts=4 sw=4 tw=80:
diff --git a/debian/local/xvfb-run.1 b/debian/local/xvfb-run.1
new file mode 100644 (file)
index 0000000..da6f606
--- /dev/null
@@ -0,0 +1,281 @@
+.\" Copyright 1998-2004 Branden Robinson <branden@debian.org>.
+.\"
+.\" This is free software; you may redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2,
+.\" or (at your option) any later version.
+.\"
+.\" This is distributed in the hope that it will be useful, but
+.\" WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License with
+.\" the Debian operating system, in /usr/share/common-licenses/GPL;  if
+.\" not, write to the Free Software Foundation, Inc., 59 Temple Place,
+.\" Suite 330, Boston, MA 02111-1307 USA
+.\"
+.\" We need the URL macro from groff's www macro package, but also want
+.\" things to work all right for people who don't have it.  So we define
+.\" our own URL macro and let the www macro package override it if it's
+.\" available.
+.de URL
+\\$2 \(laURL: \\$1 \(ra\\$3
+..
+.if \n[.g] .mso www.tmac
+.TH xvfb\-run 1 "2004\-11\-12" "Debian Project"
+.SH NAME
+xvfb\-run \- run specified X client or command in a virtual X server environment
+.SH SYNOPSIS
+.B xvfb\-run
+[
+.I options
+]
+.I command
+.SH DESCRIPTION
+.B xvfb\-run
+is a wrapper for the
+.BR Xvfb (1x)
+command which simplifies the task of running commands (typically an X
+client, or a script containing a list of clients to be run) within a virtual
+X server environment.
+.PP
+.B xvfb\-run
+sets up an X authority file (or uses an existing user\-specified one),
+writes a cookie to it (see
+.BR xauth (1x))
+and then starts the
+.B Xvfb
+X server as a background process.
+The process ID of
+.B Xvfb
+is stored for later use.
+The specified
+.I command
+is then run using the X display corresponding to the
+.B Xvfb
+server
+just started and the X authority file created earlier.
+.PP
+When the
+.I command
+exits, its status is saved, the
+.B Xvfb
+server is killed (using the process ID stored earlier), the X authority
+cookie removed, and the authority file deleted (if the user did not specify
+one to use).
+.B xvfb\-run
+then exits with the exit status of
+.IR command ,
+except in error conditions (see
+.SM
+.B EXIT STATUS
+below).
+.PP
+.B xvfb\-run
+requires the
+.B xauth
+command to function.
+.SH OPTIONS
+.TP
+.B \-a\fR,\fB \-\-auto\-servernum
+Try to get a free server number, starting at 99, or the argument to
+.BR \-\-server\-num .
+.TP
+.BI \-e\  file \fR,\fB\ \-\-error\-file= file
+Store output from
+.B xauth
+and
+.B Xvfb
+in
+.IR file .
+The default is
+.IR /dev/null .
+.TP
+.BI \-f\  file \fR,\fB\ \-\-auth\-file= file
+Store X authentication data in
+.IR file .
+By default, a temporary directory called
+.IR xvfb\-run. PID
+(where PID is the process ID of
+.B xvfb\-run
+itself) is created in the directory specified by the environment variable
+.B TMPDIR
+(or
+.I /tmp
+if that variable is null or unset), and the
+.BR tempfile (1)
+command is used to create a file in that temporary directory called
+.IR Xauthority .
+.TP
+.B \-h\fR,\fB \-\-help
+Display a usage message and exit.
+.TP
+.BI \-n\  servernumber \fR,\fB\ \-\-server\-num= servernumber
+Use
+.I servernumber
+as the server number (but see the
+.B \-a\fR,\fB \-\-auto\-servernum
+option above).
+The default is 99.
+.TP
+.B \-l\fR,\fB \-\-listen\-tcp
+Enable TCP port listening in the X server.
+For security reasons (to avoid denial\-of\-service attacks or exploits),
+TCP port listening is disabled by default.
+.TP
+.BI \-p\  protocolname \fR,\fB\ \-\-xauth\-protocol= protocolname
+Use
+.I protocolname
+as the X authority protocol to use.
+The default is \(oq.\(cq, which
+.B xauth
+interprets as its own default protocol, which is MIT\-MAGIC\-COOKIE\-1.
+.TP
+.BI \-s\  arguments \fR,\fB\ \-\-server\-args= arguments
+Pass
+.I arguments
+to the
+.B Xvfb
+server.
+Be careful to quote any whitespace characters that may occur within
+.I arguments
+to prevent them from regarded as separators for
+.BR xvfb\-run 's
+own arguments.
+Also, note that specification of \(oq\-nolisten tcp\(cq in
+.I arguments
+may override the function of
+.BR xvfb\-run 's
+own
+.B \-l\fR,\fB \-\-listen\-tcp
+option, and that specification of the server number (e.g., \(oq:1\(cq) may
+be ignored because of the way the X server parses its argument list.
+Use the
+.B xvfb\-run
+option
+.BI \-n\  servernumber \fR,\fB\ \-\-server\-num= servernumber
+to achieve the latter function.
+The default is \(oq\-screen 0 640x480x8\(cq.
+.TP
+.BI \-w\  delay \fR,\fB\ \-\-wait= delay
+Ignored for compatibility with earlier versions.
+.SH ENVIRONMENT
+.TP
+.B COLUMNS
+indicates the width of the terminal device in character cells.
+This value is used for formatting diagnostic messages.
+If not set, the terminal is queried using
+.BR stty (1)
+to determine its width.
+If that fails, a value of \(oq80\(cq is assumed.
+.TP
+.B TMPDIR
+specifies the directory in which to place
+.BR xvfb\-run 's
+temporary directory for storage of the X authority file; only used if the
+.B \-f
+or
+.B \-\-auth\-file
+options are not specified.
+.SH "OUTPUT FILES"
+.PP
+Unless the
+.B \-f
+or
+.B \-\-auth\-file
+options are specified, a temporary
+directory and file within it are created (and deleted) to store the X
+authority cookies used by the
+.B Xvfb
+server and client(s) run under it.
+See
+.BR tempfile (1).
+If \-f or \-\-auth\-file are used, then the specified X authority file is
+only written to, not created or deleted (though
+.B xauth
+creates an authority file itself if told to use use that does not already
+exist).
+.PP
+An error file with a user\-specified name is also created if the
+.B \-e
+or
+.B \-\-error\-file
+options are specifed; see above.
+.SH "EXIT STATUS"
+.B xvfb\-run
+uses its exit status as well as output to standard error to communicate
+diagnostics.
+.TP
+0
+.B xvfb\-run
+only uses this exit status if the
+.B \-h\fR,\fB \-\-help
+option is given.
+In all other situations, this may be interpreted as success of the specified
+command.
+.TP
+1
+.B Xvfb
+did not start correctly.
+.TP
+2
+No command to run was specified.
+.TP
+3
+The
+.B xauth
+command is not available.
+.TP
+4
+The temporary directory that was going to be used already exists; since
+.B xvfb\-run
+produces a uniquely named directory, this may indicate an attempt by another
+process on the system to exploit a temporary file race condition.
+.TP
+5
+A problem was encountered while cleaning up the temporary directory.
+.TP
+6
+A problem was encountered while using
+.BR getopt (1)
+to parse the command\-line arguments.
+.SH EXAMPLES
+.TP
+.B xvfb\-run \-\-auto\-servernum \-\-server\-num=1 xlogo
+runs the
+.BR xlogo (1x)
+demonstration client inside the
+.B Xvfb
+X server on the first available server number greater than or equal to 1.
+.TP
+.B xvfb\-run \-\-server\-args="\-screen 0 1024x768x24" ico \-faces
+runs the
+.BR ico (1x)
+demonstration client (and passes it the
+.B \-faces
+argument) inside the
+.B Xvfb
+X server, configured with a root window of 1024 by 768 pixels and a color
+depth of 24 bits.
+.PP
+Note that the demo X clients used in the above examples will not exit on
+their own, so they will have to be killed before
+.B xvfb\-run
+will exit.
+.SH BUGS
+See
+.URL "http://bugs.debian.org/xvfb" "the Debian Bug Tracking System" .
+If you wish to report a bug in
+.BR xvfb\-run ,
+please use the 
+.BR reportbug (1)
+command.
+.SH AUTHOR
+.B xvfb\-run
+was written by Branden Robinson and Jeff Licquia with sponsorship from
+Progeny Linux Systems.
+.SH "SEE ALSO"
+.BR Xvfb (1x),
+.BR xauth (1x)
+.\" vim:set et tw=80:
diff --git a/debian/patches/001_fedora_extramodes.patch b/debian/patches/001_fedora_extramodes.patch
new file mode 100644 (file)
index 0000000..77005b2
--- /dev/null
@@ -0,0 +1,83 @@
+From: Adam Jackson <ajax@redhat.com>
+Date: Sun, 28 Oct 2007 09:37:52 +0100
+Subject: [PATCH] Fedora extra modes list
+
+---
+--- a/hw/xfree86/common/extramodes
++++ b/hw/xfree86/common/extramodes
+@@ -3,16 +3,75 @@
+ //
+ // $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $
+ //
++// NOTE:  Please keep all video modes sorted in order of X res, then Y res for
++//        ease of maintenance and readability.
+ # 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz
+ ModeLine "832x624" 57.284 832  864  928 1152  624  625  628  667 -Hsync -Vsync
++# 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz
++Modeline "1152x864"  81.62  1152 1216 1336 1520  864 865 868 895  -HSync +Vsync
++
++# 1152x864 @ 70.00 Hz (GTF) hsync: 63.00 kHz; pclk: 96.77 MHz
++Modeline "1152x864"  96.77  1152 1224 1344 1536  864 865 868 900  -HSync +Vsync
++
++# 1152x864 @ 75.00 Hz (GTF) hsync: 67.65 kHz; pclk: 104.99 MHz
++Modeline "1152x864"  104.99  1152 1224 1352 1552  864 865 868 902  -HSync +Vsync
++
++# 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz
++Modeline "1152x864"  119.65  1152 1224 1352 1552  864 865 868 907  -HSync +Vsync
++
++# 1152x864 @ 85Hz (Red Hat custom modeline)
++ModeLine "1152x864"  121.5 1152 1216 1344 1568    864  865  868  911 +hsync -vsync
++
++# 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz
++Modeline "1152x864"  143.47  1152 1232 1360 1568  864 865 868 915  -HSync +Vsync
++
++# 1360x768 59.96 Hz (CVT) hsync: 47.37 kHz; pclk: 72.00 MHz
++Modeline "1360x768"   72.00  1360 1408 1440 1520  768 771 781 790 +hsync -vsync
++
++# 1360x768 59.80 Hz (CVT) hsync: 47.72 kHz; pclk: 84.75 MHz
++Modeline "1360x768"   84.75  1360 1432 1568 1776  768 771 781 798 -hsync +vsync
++
+ # 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz
+ ModeLine "1400x1050" 122.0 1400 1488 1640 1880   1050 1052 1064 1082 +hsync +vsync
++# 1400x1050 @ 70.00 Hz (GTF) hsync: 76.51 kHz; pclk: 145.06 MHz
++Modeline "1400x1050"  145.06  1400 1496 1648 1896  1050 1051 1054 1093  -HSync +Vsync
++
+ # 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz
+ ModeLine "1400x1050" 155.8 1400 1464 1784 1912   1050 1052 1064 1090 +hsync +vsync
++# 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz
++Modeline "1400x1050"  179.26  1400 1504 1656 1912  1050 1051 1054 1103  -HSync +Vsync
++
++# 1440x900 @ 60.00 Hz (CVT) field rate 59.89 Hz; hsync: 55.93 kHz; pclk: 106.50 MHz
++Modeline "1440x900"  106.50  1440 1520 1672 1904  900 903 909 934  -HSync +Vsync
++
++# 1600x1024 for SGI 1600 SW
++ModeLine "1600x1024" 103.125 1600 1600 1656 1664 1024 1024 1029 1030 +Hsync +Vsync
++
++# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz
++Modeline "1680x1050"  119.00  1680 1728 1760 1840  1050 1053 1059 1080 +hsync -vsync
++
++# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
++Modeline "1680x1050"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
++
++# 1680x1050 69.88 Hz (CVT) hsync: 76.58 kHz; pclk: 174.00 MHz
++Modeline "1680x1050"  174.00  1680 1800 1976 2272  1050 1053 1059 1096 -hsync +vsync
++
++# 1680x1050 74.89 Hz (CVT 1.76MA) hsync: 82.31 kHz; pclk: 187.00 MHz
++Modeline "1680x1050"  187.00  1680 1800 1976 2272  1050 1053 1059 1099 -hsync +vsync
++
++# 1680x1050 84.94 Hz (CVT 1.76MA) hsync: 93.86 kHz; pclk: 214.75 MHz
++Modeline "1680x1050"  214.75  1680 1808 1984 2288  1050 1053 1059 1105 -hsync +vsync
++
++# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz
++Modeline "1920x1080"  138.50  1920 1968 2000 2080  1080 1083 1088 1111 +hsync -vsync
++
++# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz
++Modeline "1920x1200"  154.00  1920 1968 2000 2080  1200 1203 1209 1235 +hsync -vsync
++
+ # 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz
+ Modeline "1920x1440" 341.35  1920 2072 2288 2656  1440 1441 1444 1512 -hsync +vsync
diff --git a/debian/patches/02_kbsd-input-devd.diff b/debian/patches/02_kbsd-input-devd.diff
new file mode 100644 (file)
index 0000000..bdadae2
--- /dev/null
@@ -0,0 +1,551 @@
+>From d96e2bd2a2b48ede527ad7071d3e0eeda9861b73 Mon Sep 17 00:00:00 2001
+From: Robert Millan <rmh@debian.org>
+Date: Mon, 24 Feb 2014 23:22:57 +0100
+Subject: [PATCH] Add devd config backend for FreeBSD (and GNU/kFreeBSD)
+
+Based on original code by Baptiste Daroussin, with some fixes made
+by Koop Mast and myself.
+
+Signed-off-by: Robert Millan <rmh@freebsd.org>
+---
+ config/Makefile.am              |    4 +
+ config/config-backends.h        |    5 +
+ config/config.c                 |    5 +
+ config/devd.c                   |  387 +++++++++++++++++++++++++++++++++++++++
+ configure.ac                    |   16 ++
+ hw/xfree86/common/xf86Config.c  |    7 +-
+ hw/xfree86/common/xf86Globals.c |    3 +-
+ include/dix-config.h.in         |    3 +
+ 8 files changed, 427 insertions(+), 3 deletions(-)
+ create mode 100644 config/devd.c
+
+Index: xorg-server/config/Makefile.am
+===================================================================
+--- xorg-server.orig/config/Makefile.am
++++ xorg-server/config/Makefile.am
+@@ -40,6 +40,10 @@ if CONFIG_WSCONS
+ libconfig_la_SOURCES += wscons.c
+ endif # CONFIG_WSCONS
++if CONFIG_DEVD
++libconfig_la_SOURCES += devd.c
++endif
++
+ endif # CONFIG_NEED_DBUS
+ endif # !CONFIG_UDEV
+Index: xorg-server/config/config-backends.h
+===================================================================
+--- xorg-server.orig/config/config-backends.h
++++ xorg-server/config/config-backends.h
+@@ -75,3 +75,8 @@ void config_hal_fini(void);
+ int config_wscons_init(void);
+ void config_wscons_fini(void);
+ #endif
++
++#ifdef CONFIG_DEVD
++int config_devd_init(void);
++void config_devd_fini(void);
++#endif
+Index: xorg-server/config/config.c
+===================================================================
+--- xorg-server.orig/config/config.c
++++ xorg-server/config/config.c
+@@ -64,6 +64,9 @@ config_init(void)
+ #elif defined(CONFIG_WSCONS)
+     if (!config_wscons_init())
+         ErrorF("[config] failed to initialise wscons\n");
++#elif defined(CONFIG_DEVD)
++    if (!config_devd_init())
++        ErrorF("[config] failed to initialise devd\n");
+ #endif
+ }
+@@ -82,6 +85,8 @@ config_fini(void)
+     config_dbus_core_fini();
+ #elif defined(CONFIG_WSCONS)
+     config_wscons_fini();
++#elif defined(CONFIG_DEVD)
++    config_devd_fini();
+ #endif
+ }
+Index: xorg-server/config/devd.c
+===================================================================
+--- /dev/null
++++ xorg-server/config/devd.c
+@@ -0,0 +1,387 @@
++/*
++ * Copyright © 2012 Baptiste Daroussin
++ * Copyright © 2014 Robert Millan
++ *
++ * 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.
++ *
++ * Author: Baptiste Daroussin <bapt@FreeBSD.org>
++ */
++
++#ifdef HAVE_DIX_CONFIG_H
++#include <dix-config.h>
++#endif
++
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <sys/sysctl.h>
++#include <sys/un.h>
++
++#include <ctype.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <stdarg.h>
++#include <stdbool.h>
++#include <unistd.h>
++
++#include "input.h"
++#include "inputstr.h"
++#include "hotplug.h"
++#include "config-backends.h"
++#include "os.h"
++
++#define DEVD_SOCK_PATH "/var/run/devd.pipe"
++
++#define DEVD_EVENT_ADD                '+'
++#define DEVD_EVENT_REMOVE     '-'
++
++static int sock_devd = -1;
++
++struct hw_type {
++    const char *driver;
++    int flag;
++    const char *xdriver;
++};
++
++static struct hw_type hw_types[] = {
++    {"ukbd", ATTR_KEYBOARD, "kbd"},
++    {"atkbd", ATTR_KEYBOARD, "kbd"},
++    {"ums", ATTR_POINTER, "mouse"},
++    {"psm", ATTR_POINTER, "mouse"},
++    {"uhid", ATTR_POINTER, "mouse"},
++    {"joy", ATTR_JOYSTICK, NULL},
++    {"atp", ATTR_TOUCHPAD, NULL},
++    {"uep", ATTR_TOUCHSCREEN, NULL},
++    {NULL, -1, NULL},
++};
++
++static bool
++sysctl_exists(const char *format, ...)
++{
++    va_list args;
++    char *name = NULL;
++    size_t len;
++    int ret;
++
++    if (format == NULL)
++        return false;
++
++    va_start(args, format);
++    vasprintf(&name, format, args);
++    va_end(args);
++
++    ret = sysctlbyname(name, NULL, &len, NULL, 0);
++
++    if (ret == -1)
++        len = 0;
++
++    free(name);
++    return (len > 0);
++}
++
++static char *
++sysctl_get_str(const char *format, ...)
++{
++    va_list args;
++    char *name = NULL;
++    char *dest = NULL;
++    size_t len;
++
++    if (format == NULL)
++        return NULL;
++
++    va_start(args, format);
++    vasprintf(&name, format, args);
++    va_end(args);
++
++    if (sysctlbyname(name, NULL, &len, NULL, 0) == 0) {
++        dest = malloc(len + 1);
++        if (!dest)
++            goto unwind;
++        if (sysctlbyname(name, dest, &len, NULL, 0) == 0)
++            dest[len] = '\0';
++        else {
++            free(dest);
++            dest = NULL;
++        }
++    }
++
++ unwind:
++    free(name);
++    return dest;
++}
++
++static void
++device_added(char *devname)
++{
++    char path[PATH_MAX];
++    char *vendor;
++    char *product = NULL;
++    char *config_info = NULL;
++    char *walk;
++    InputOption *options = NULL;
++    InputAttributes attrs = { };
++    DeviceIntPtr dev = NULL;
++    int i, rc;
++    int fd;
++
++    for (i = 0; hw_types[i].driver != NULL; i++) {
++        if (strncmp(devname, hw_types[i].driver,
++                    strlen(hw_types[i].driver)) == 0 &&
++            isdigit(*(devname + strlen(hw_types[i].driver)))) {
++            attrs.flags |= hw_types[i].flag;
++            break;
++        }
++    }
++    if (hw_types[i].driver == NULL) {
++        LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n",
++                       devname);
++        return;
++    }
++    if (hw_types[i].xdriver == NULL) {
++        LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n",
++                       devname);
++        return;
++    }
++    snprintf(path, sizeof(path), "/dev/%s", devname);
++
++    options = input_option_new(NULL, "_source", "server/devd");
++    if (!options)
++        return;
++
++    vendor =
++        sysctl_get_str("dev.%s.%s.%%desc", hw_types[i].driver,
++                       devname + strlen(hw_types[i].driver));
++    if (vendor == NULL) {
++        attrs.vendor = strdup("(unnamed)");
++        attrs.product = strdup("(unnamed)");
++    }
++    else {
++        if ((walk = strchr(vendor, ' ')) != NULL) {
++            walk[0] = '\0';
++            walk++;
++            product = walk;
++            if ((walk = strchr(product, ',')) != NULL)
++                walk[0] = '\0';
++        }
++
++        attrs.vendor = strdup(vendor);
++        if (product) 
++            attrs.product = strdup(product);
++        else
++            attrs.product = strdup("(unnamed)");
++
++        options = input_option_new(options, "name", xstrdup(attrs.product));
++
++        free(vendor);
++    }
++    attrs.usb_id = NULL;
++    attrs.device = strdup(path);
++    options = input_option_new(options, "driver", hw_types[i].xdriver);
++    if (attrs.flags & ATTR_KEYBOARD) {
++        /*
++         * Don't pass device option if keyboard is attached to console (open fails),
++         * thus activating special logic in xf86-input-keyboard.
++         */
++        fd = open(path, O_RDONLY | O_NONBLOCK | O_EXCL);
++        if (fd > 0) {
++            close(fd);
++            options = input_option_new(options, "device", xstrdup(path));
++        }
++    }
++    else {
++        options = input_option_new(options, "device", xstrdup(path));
++    }
++
++    if (asprintf(&config_info, "devd:%s", devname) == -1) {
++        config_info = NULL;
++        goto unwind;
++    }
++
++    if (device_is_duplicate(config_info)) {
++        LogMessage(X_WARNING, "config/devd: device %s already added. "
++                   "Ignoring.\n", attrs.product);
++        goto unwind;
++    }
++
++    options = input_option_new(options, "config_info", config_info);
++    LogMessage(X_INFO, "config/devd: adding input device %s (%s)\n",
++               attrs.product, path);
++
++    rc = NewInputDeviceRequest(options, &attrs, &dev);
++
++    if (rc != Success)
++        goto unwind;
++
++ unwind:
++    free(config_info);
++    input_option_free_list(&options);
++
++    free(attrs.usb_id);
++    free(attrs.product);
++    free(attrs.device);
++    free(attrs.vendor);
++}
++
++static void
++device_removed(char *devname)
++{
++    char *value;
++
++    if (asprintf(&value, "devd:%s", devname) == -1)
++        return;
++
++    remove_devices("devd", value);
++
++    free(value);
++}
++
++static ssize_t
++socket_getline(int fd, char **out)
++{
++    char *buf, *newbuf;
++    ssize_t ret, cap, sz = 0;
++    char c;
++
++    cap = 1024;
++    buf = malloc(cap * sizeof(char));
++    if (!buf)
++        return -1;
++
++    for (;;) {
++        ret = read(sock_devd, &c, 1);
++        if (ret < 1) {
++            if (errno == EINTR)
++                continue;
++            free(buf);
++            return -1;
++        }
++
++        if (c == '\n')
++            break;
++
++        if (sz + 1 >= cap) {
++            cap *= 2;
++            newbuf = realloc(buf, cap * sizeof(char));
++            if (!newbuf) {
++                free(buf);
++                return -1;
++            }
++            buf = newbuf;
++        }
++        buf[sz] = c;
++        sz++;
++    }
++
++    buf[sz] = '\0';
++    if (sz >= 0)
++        *out = buf;
++    else
++        free(buf);
++
++    return sz;                  /* number of bytes in the line, not counting the line break */
++}
++
++static void
++wakeup_handler(void *data, int err, void *read_mask)
++{
++    char *line = NULL;
++    char *walk;
++
++    if (err < 0)
++        return;
++
++    if (FD_ISSET(sock_devd, (fd_set *) read_mask)) {
++        if (socket_getline(sock_devd, &line) < 0)
++            return;
++
++        walk = strchr(line + 1, ' ');
++        if (walk != NULL)
++            walk[0] = '\0';
++
++        switch (*line) {
++        case DEVD_EVENT_ADD:
++            device_added(line + 1);
++            break;
++        case DEVD_EVENT_REMOVE:
++            device_removed(line + 1);
++            break;
++        default:
++            break;
++        }
++        free(line);
++    }
++}
++
++static void
++block_handler(void *data, struct timeval **tv, void *read_mask)
++{
++}
++
++int
++config_devd_init(void)
++{
++    struct sockaddr_un devd;
++    char devicename[1024];
++    int i, j;
++
++    /* first scan the sysctl to determine the hardware if needed */
++
++    for (i = 0; hw_types[i].driver != NULL; i++) {
++        for (j = 0; sysctl_exists("dev.%s.%i.%%desc", hw_types[i].driver, j);
++             j++) {
++            snprintf(devicename, sizeof(devicename), "%s%i", hw_types[i].driver,
++                     j);
++            device_added(devicename);
++        }
++
++    }
++    sock_devd = socket(AF_UNIX, SOCK_STREAM, 0);
++    if (sock_devd < 0) {
++        ErrorF("config/devd: Fail opening stream socket");
++        return 0;
++    }
++
++    devd.sun_family = AF_UNIX;
++    strlcpy(devd.sun_path, DEVD_SOCK_PATH, sizeof(devd.sun_path));
++
++    if (connect(sock_devd, (struct sockaddr *) &devd, sizeof(devd)) < 0) {
++        close(sock_devd);
++        ErrorF("config/devd: Fail to connect to devd");
++        return 0;
++    }
++
++    RegisterBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL);
++    AddGeneralSocket(sock_devd);
++
++    return 1;
++}
++
++void
++config_devd_fini(void)
++{
++    if (sock_devd < 0)
++        return;
++
++    RemoveGeneralSocket(sock_devd);
++    RemoveBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL);
++    close(sock_devd);
++}
+Index: xorg-server/configure.ac
+===================================================================
+--- xorg-server.orig/configure.ac
++++ xorg-server/configure.ac
+@@ -618,6 +618,7 @@ AC_ARG_ENABLE(config-udev,    AS_HELP_ST
+ AC_ARG_ENABLE(config-udev-kms,    AS_HELP_STRING([--enable-config-udev-kms], [Build udev kms support (default: auto)]), [CONFIG_UDEV_KMS=$enableval], [CONFIG_UDEV_KMS=auto])
+ AC_ARG_ENABLE(config-dbus,    AS_HELP_STRING([--enable-config-dbus], [Build D-BUS API support (default: no)]), [CONFIG_DBUS_API=$enableval], [CONFIG_DBUS_API=no])
+ AC_ARG_ENABLE(config-hal,     AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto])
++AC_ARG_ENABLE(config-devd,    AS_HELP_STRING([--disable-config-devd], [Build devd support (default: auto)]), [CONFIG_DEVD=$enableval], [CONFIG_DEVD=auto])
+ AC_ARG_ENABLE(config-wscons,  AS_HELP_STRING([--enable-config-wscons], [Build wscons config support (default: auto)]), [CONFIG_WSCONS=$enableval], [CONFIG_WSCONS=auto])
+ AC_ARG_ENABLE(xfree86-utils,     AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
+ AC_ARG_ENABLE(vgahw,          AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes])
+@@ -922,6 +923,21 @@ if test "x$CONFIG_WSCONS" = xyes; then
+       AC_DEFINE(CONFIG_WSCONS, 1, [Use wscons for input auto configuration])
+ fi
++if test "x$CONFIG_DEVD" = xauto; then
++      case $host_os in
++              freebsd* | kfreebsd*-gnu)
++                      CONFIG_DEVD=yes;
++                      ;;
++              *)
++                      CONFIG_DEVD=no;
++                      ;;
++      esac
++fi
++AM_CONDITIONAL(CONFIG_DEVD, [test "x$CONFIG_DEVD" = xyes])
++if test "x$CONFIG_DEVD" = xyes; then
++      AC_DEFINE(CONFIG_DEVD, 1, [Use devd for input auto configuration])
++fi
++
+ if test "x$USE_SIGIO_BY_DEFAULT" = xyes; then
+       USE_SIGIO_BY_DEFAULT_VALUE=TRUE
+ else
+Index: xorg-server/hw/xfree86/common/xf86Config.c
+===================================================================
+--- xorg-server.orig/hw/xfree86/common/xf86Config.c
++++ xorg-server/hw/xfree86/common/xf86Config.c
+@@ -1377,15 +1377,18 @@ checkCoreInputDevices(serverLayoutPtr se
+     }
+     if (!xf86Info.forceInputDevices && !(foundPointer && foundKeyboard)) {
+-#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS)
++#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) || \
++    defined(CONFIG_DEVD)
+         const char *config_backend;
+ #if defined(CONFIG_HAL)
+         config_backend = "HAL";
+ #elif defined(CONFIG_UDEV)
+         config_backend = "udev";
+-#else
++#elif defined(CONFIG_WSCONS)
+         config_backend = "wscons";
++#elif defined(CONFIG_DEVD)
++        config_backend = "devd";
+ #endif
+         xf86Msg(X_INFO, "The server relies on %s to provide the list of "
+                 "input devices.\n\tIf no devices become available, "
+Index: xorg-server/hw/xfree86/common/xf86Globals.c
+===================================================================
+--- xorg-server.orig/hw/xfree86/common/xf86Globals.c
++++ xorg-server/hw/xfree86/common/xf86Globals.c
+@@ -123,7 +123,8 @@ xf86InfoRec xf86Info = {
+     .log = LogNone,
+     .disableRandR = FALSE,
+     .randRFrom = X_DEFAULT,
+-#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS)
++#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) || \
++    defined(CONFIG_DEVD)
+     .forceInputDevices = FALSE,
+     .autoAddDevices = TRUE,
+     .autoEnableDevices = TRUE,
+Index: xorg-server/include/dix-config.h.in
+===================================================================
+--- xorg-server.orig/include/dix-config.h.in
++++ xorg-server/include/dix-config.h.in
+@@ -420,6 +420,9 @@
+ /* Support HAL for hotplug */
+ #undef CONFIG_HAL
++/* Support devd for hotplug */
++#undef CONFIG_DEVD
++
+ /* Have a monotonic clock from clock_gettime() */
+ #undef MONOTONIC_CLOCK
diff --git a/debian/patches/03_static-nettle.diff b/debian/patches/03_static-nettle.diff
new file mode 100644 (file)
index 0000000..4a48338
--- /dev/null
@@ -0,0 +1,17 @@
+Link against static libnettle
+
+There's no libnettle udeb.
+
+Index: xorg-server/configure.ac
+===================================================================
+--- xorg-server.orig/configure.ac      2013-08-02 20:15:25.471466837 +0200
++++ xorg-server/configure.ac   2013-08-02 20:17:12.875999417 +0200
+@@ -1433,7 +1433,7 @@
+ if test "x$with_sha1" = xlibnettle; then
+       AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
+                 [Use libnettle SHA1 functions])
+-      SHA1_LIBS=-lnettle
++      SHA1_LIBS=-l:libnettle.a
+ fi
+ AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
+ if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
diff --git a/debian/patches/05_Revert-Unload-submodules.diff b/debian/patches/05_Revert-Unload-submodules.diff
new file mode 100644 (file)
index 0000000..1cc8ff8
--- /dev/null
@@ -0,0 +1,28 @@
+From 272537ae14a04911fcf2fec51492fa0f91c4a676 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+Date: Wed, 29 Aug 2012 20:16:40 +0200
+Subject: [PATCH] Revert "Unload submodules."
+
+This reverts commit 0d4bb5442ceb8e8e4a8de6cfc4203cae469eee72.
+
+This doesn't seem to work quite well.  See Debian bug#686152.
+---
+ hw/xfree86/common/xf86Helper.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/hw/xfree86/common/xf86Helper.c
++++ b/hw/xfree86/common/xf86Helper.c
+@@ -1596,7 +1596,13 @@ xf86LoadOneModule(char *name, pointer op
+ void
+ xf86UnloadSubModule(pointer mod)
+ {
++    /*
++     * This is disabled for now.  The loader isn't smart enough yet to undo
++     * relocations.
++     */
++#if 0
+     UnloadSubModule(mod);
++#endif
+ }
+ Bool
diff --git a/debian/patches/06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff b/debian/patches/06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff
new file mode 100644 (file)
index 0000000..c3a6e50
--- /dev/null
@@ -0,0 +1,68 @@
+From 10aaa5d2ffa62df99f03c857dc78e6ff2b33c183 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+Date: Sun, 30 Sep 2012 12:02:11 +0200
+Subject: [PATCH] Revert "fb: reorder Bresenham error correction to avoid
+ overshoot."
+
+This reverts commit 3e62f48edf47a59d923ac58b6d4262b02456a556.
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54168
+Debian: http://buss.debian.org/688908
+
+Signed-off-by: Julien Cristau <jcristau@debian.org>
+---
+ fb/fbseg.c |   18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/fb/fbseg.c b/fb/fbseg.c
+index 1848387..0e4e0a9 100644
+--- a/fb/fbseg.c
++++ b/fb/fbseg.c
+@@ -65,12 +65,6 @@ fbBresSolid(DrawablePtr pDrawable,
+     if (axis == X_AXIS) {
+         bits = 0;
+         while (len--) {
+-            if (e >= 0) {
+-                WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits));
+-                bits = 0;
+-                dst += dstStride;
+-                e += e3;
+-            }
+             bits |= mask;
+             mask = fbBresShiftMask(mask, signdx, dstBpp);
+             if (!mask) {
+@@ -80,12 +74,21 @@ fbBresSolid(DrawablePtr pDrawable,
+                 mask = mask0;
+             }
+             e += e1;
++            if (e >= 0) {
++                WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, bits));
++                bits = 0;
++                dst += dstStride;
++                e += e3;
++            }
+         }
+         if (bits)
+             WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, bits));
+     }
+     else {
+         while (len--) {
++            WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, mask));
++            dst += dstStride;
++            e += e1;
+             if (e >= 0) {
+                 e += e3;
+                 mask = fbBresShiftMask(mask, signdx, dstBpp);
+@@ -94,9 +97,6 @@ fbBresSolid(DrawablePtr pDrawable,
+                     mask = mask0;
+                 }
+             }
+-            WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, mask));
+-            dst += dstStride;
+-            e += e1;
+         }
+     }
+-- 
+1.7.10.4
+
diff --git a/debian/patches/08_xfree86_fix_ia64_inx_outx.diff b/debian/patches/08_xfree86_fix_ia64_inx_outx.diff
new file mode 100644 (file)
index 0000000..10dbbe9
--- /dev/null
@@ -0,0 +1,64 @@
+From: Stephan Schreiber <info@fs-driver.org>
+Subject: xfree86: restore {in,out}{b,w,l} on linux/ia64
+
+Call the equivalent glibc functions.
+
+Debian bug #685750
+
+--- a/hw/xfree86/common/compiler.h
++++ b/hw/xfree86/common/compiler.h
+@@ -438,6 +438,54 @@ extern _X_EXPORT unsigned int inl(unsign
+ #include <machine/pio.h>
+ #endif                          /* __NetBSD__ */
++#elif defined(linux) && defined(__ia64__)
++/* for Linux on ia64, we use the LIBC _inx/_outx routines */
++/* note that the appropriate setup via "ioperm" needs to be done */
++/*  *before* any inx/outx is done. */
++
++extern _X_EXPORT void _outb(unsigned char val, unsigned long port);
++extern _X_EXPORT void _outw(unsigned short val, unsigned long port);
++extern _X_EXPORT void _outl(unsigned int val, unsigned long port);
++extern _X_EXPORT unsigned int _inb(unsigned long port);
++extern _X_EXPORT unsigned int _inw(unsigned long port);
++extern _X_EXPORT unsigned int _inl(unsigned long port);
++
++static __inline__ void
++outb(unsigned long port, unsigned char val)
++{
++    _outb(val, port);
++}
++
++static __inline__ void
++outw(unsigned long port, unsigned short val)
++{
++    _outw(val, port);
++}
++
++static __inline__ void
++outl(unsigned long port, unsigned int val)
++{
++    _outl(val, port);
++}
++
++static __inline__ unsigned int
++inb(unsigned long port)
++{
++    return _inb(port);
++}
++
++static __inline__ unsigned int
++inw(unsigned long port)
++{
++    return _inw(port);
++}
++
++static __inline__ unsigned int
++inl(unsigned long port)
++{
++    return _inl(port);
++}
++
+ #elif (defined(linux) || defined(__FreeBSD__)) && defined(__amd64__)
+ #include <inttypes.h>
diff --git a/debian/patches/105_nvidia_fglrx_autodetect.patch b/debian/patches/105_nvidia_fglrx_autodetect.patch
new file mode 100644 (file)
index 0000000..1d08205
--- /dev/null
@@ -0,0 +1,53 @@
+diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
+index 43c746b..750b425 100644
+--- a/hw/xfree86/common/xf86AutoConfig.c
++++ b/hw/xfree86/common/xf86AutoConfig.c
+@@ -75,6 +75,13 @@
+       "\tDevice\t" BUILTIN_DEVICE_NAME "\n" \
+       "EndSection\n\n"
++#define BUILTIN_SCREEN_SECTION_PROPRIETARY \
++      "Section \"Screen\"\n" \
++      "\tIdentifier\t" BUILTIN_SCREEN_NAME "\n" \
++      "\tDevice\t" BUILTIN_DEVICE_NAME "\n" \
++      "\tDefaultDepth\t24\n" \
++      "EndSection\n\n"
++
+ #define BUILTIN_LAYOUT_SECTION_PRE \
+       "Section \"ServerLayout\"\n" \
+       "\tIdentifier\t\"Builtin Default Layout\"\n"
+@@ -153,7 +160,11 @@ xf86AutoConfig(void)
+     for (p = deviceList; *p; p++) {
+         snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
+         AppendToConfig(buf);
+-        snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
++        if (strcmp(*p, "fglrx") == 0 || strcmp(*p, "nvidia") == 0)
++            snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION_PROPRIETARY, *p,
++                     0, *p, 0);
++        else
++            snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
+         AppendToConfig(buf);
+     }
+diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
+index e52f1da..bd62a7e 100644
+--- a/hw/xfree86/common/xf86pciBus.c
++++ b/hw/xfree86/common/xf86pciBus.c
+@@ -1107,7 +1107,8 @@ videoPtrToDriverList(struct pci_device *dev,
+         driverList[0] = "ast";
+         break;
+     case 0x1002:
+-        driverList[0] = "ati";
++        driverList[0] = "fglrx";
++        driverList[1] = "ati";
+         break;
+     case 0x102c:
+         driverList[0] = "chips";
+@@ -1143,6 +1144,7 @@ videoPtrToDriverList(struct pci_device *dev,
+     {
+         int idx = 0;
++        driverList[idx++] = "nvidia";
+ #ifdef __linux__
+         driverList[idx++] = "nouveau";
+ #endif
diff --git a/debian/patches/111_armel-drv-fallbacks.patch b/debian/patches/111_armel-drv-fallbacks.patch
new file mode 100644 (file)
index 0000000..bc76c4e
--- /dev/null
@@ -0,0 +1,86 @@
+diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
+index 55412b4..d4a95d2 100644
+--- a/hw/xfree86/common/xf86AutoConfig.c
++++ b/hw/xfree86/common/xf86AutoConfig.c
+@@ -45,6 +45,12 @@
+ #include "xf86sbusBus.h"
+ #endif
++#if defined(__arm__) && defined(__linux__)
++#include "loaderProcs.h"
++#include <sys/types.h>          /* For opendir in test_sysfs_device */
++#include <dirent.h>             /* For opendir in test_sysfs_device */
++#endif
++
+ #ifdef sun
+ #include <sys/visual_io.h>
+ #include <ctype.h>
+@@ -200,6 +206,27 @@ xf86AutoConfig(void)
+     return ret == CONFIG_OK;
+ }
++#if defined(__arm__) && defined(__linux__)
++static int
++test_sysfs_device(char *device_name, char *driver_name)
++{
++    DIR *dir = opendir("/sys/devices/platform");
++    struct dirent *current_dir;
++    int len = strlen(device_name);
++
++    while (current_dir = readdir(dir)) {
++        if (strlen(current_dir->d_name) >= len &&
++            strncmp(device_name, current_dir->d_name, len) == 0)
++            break;
++    }
++    closedir(dir);
++    if (!current_dir)
++        return 0;
++
++    return 1;
++}
++#endif                          /* defined(__arm__) && defined(__linux__) */
++
+ static void
+ listPossibleVideoDrivers(char *matches[], int nmatches)
+ {
+@@ -287,6 +314,21 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
+ #endif
+     }
++#if defined(__linux__) && defined(__arm__)
++    if (i < (nmatches - 1)) {
++        if (test_sysfs_device("mxc_gpu", "imx"))
++            matches[i++] = xnfstrdup("imx");
++        else if (test_sysfs_device("dovefb", "dovefb"))
++            matches[i++] = xnfstrdup("dovefb");
++        else if (test_sysfs_device("omapdrm", "omap"))
++            matches[i++] = xnfstrdup("omap");
++        else if (test_sysfs_device("omapfb", "omapfb"))
++            matches[i++] = xnfstrdup("omapfb");
++        else if (test_sysfs_device("omap", "pvr"))
++            matches[i++] = xnfstrdup("pvr");
++    }
++#endif                          /* defined(__linux__) && defined(__arm__) */
++
+ #if defined(__linux__)
+     matches[i++] = xnfstrdup("modesetting");
+ #endif
+diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
+index 24b9473..0061c25 100644
+--- a/hw/xfree86/common/xf86platformBus.c
++++ b/hw/xfree86/common/xf86platformBus.c
+@@ -362,6 +362,14 @@ xf86platformProbeDev(DriverPtr drvp)
+                     if (xf86IsPrimaryPlatform(&xf86_platform_devices[j]))
+                         break;
+                 }
++                else {
++                    /* there's no way to handle real platform devices at this point,
++                     * as there's no valid busID to be used, so try to move forward
++                     * in case there's only one platform device, and see if the
++                     * driver's probe succeeds or not at least once */
++                    if ((xf86_num_platform_devices == 1) && (!foundScreen))
++                        break;
++                }
+             }
+         }
diff --git a/debian/patches/122_xext_fix_card32_overflow_in_xauth.patch b/debian/patches/122_xext_fix_card32_overflow_in_xauth.patch
new file mode 100644 (file)
index 0000000..6f8cfab
--- /dev/null
@@ -0,0 +1,25 @@
+diff --git a/Xext/security.c b/Xext/security.c
+index 3699510..5e5a703 100644
+--- a/Xext/security.c
++++ b/Xext/security.c
+@@ -260,9 +260,9 @@ SecurityComputeAuthorizationTimeout(SecurityAuthorizationPtr pAuth,
+     /* maxSecs is the number of full seconds that can be expressed in
+      * 32 bits worth of milliseconds
+      */
+-    CARD32 maxSecs = (CARD32) (~0) / (CARD32) MILLI_PER_SECOND;
++    CARD32 maxSecs = (CARD32) (MAXINT) / (CARD32) MILLI_PER_SECOND;
+-    if (seconds > maxSecs) {    /* only come here if we want to wait more than 49 days */
++    if (seconds > maxSecs) {    /* only come here if we want to wait more than 24 days */
+         pAuth->secondsRemaining = seconds - maxSecs;
+         return maxSecs * MILLI_PER_SECOND;
+     }
+@@ -296,8 +296,6 @@ SecurityAuthorizationExpired(OsTimerPtr timer, CARD32 time, pointer pval)
+ {
+     SecurityAuthorizationPtr pAuth = (SecurityAuthorizationPtr) pval;
+-    assert(pAuth->timer == timer);
+-
+     if (pAuth->secondsRemaining) {
+         return SecurityComputeAuthorizationTimeout(pAuth,
+                                                    pAuth->secondsRemaining);
diff --git a/debian/patches/168_glibc_trace_to_stderr.patch b/debian/patches/168_glibc_trace_to_stderr.patch
new file mode 100644 (file)
index 0000000..4020d88
--- /dev/null
@@ -0,0 +1,14 @@
+diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
+index 0974893..797f054 100644
+--- a/hw/xfree86/common/xf86Init.c
++++ b/hw/xfree86/common/xf86Init.c
+@@ -938,6 +938,9 @@ OsVendorInit(void)
+     if (!beenHere) {
+         umask(022);
++        /* have glibc report internal abort traces to stderr instead of
++           the controlling terminal */
++        setenv("LIBC_FATAL_STDERR_", "1", 0);
+         xf86LogInit();
+     }
diff --git a/debian/patches/188_default_primary_to_first_busid.patch b/debian/patches/188_default_primary_to_first_busid.patch
new file mode 100644 (file)
index 0000000..99c33c0
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
+index e52f1da..462faa9 100644
+--- a/hw/xfree86/common/xf86pciBus.c
++++ b/hw/xfree86/common/xf86pciBus.c
+@@ -135,8 +135,8 @@ xf86PciProbe(void)
+                 }
+                 else {
+                     xf86Msg(X_NOTICE,
+-                            "More than one possible primary device found\n");
+-                    primaryBus.type ^= (BusType) (-1);
++                            "More than one possible primary device found.  Using first one seen.\n");
++                    break;
+                 }
+             }
+         }
diff --git a/debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch b/debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch
new file mode 100644 (file)
index 0000000..c5a08bc
--- /dev/null
@@ -0,0 +1,398 @@
+Last-Update: 2013-09-19
+
+Index: xorg-server-1.14.2.901/configure.ac
+===================================================================
+--- xorg-server-1.14.2.901.orig/configure.ac   2013-09-19 11:43:53.948797077 -0400
++++ xorg-server-1.14.2.901/configure.ac        2013-09-19 11:43:53.944797077 -0400
+@@ -517,9 +517,9 @@
+ AC_ARG_WITH(xkb-path,         AS_HELP_STRING([--with-xkb-path=PATH], [Path to XKB base dir (default: ${datadir}/X11/xkb)]),
+                               [ XKBPATH="$withval" ],
+                               [ XKBPATH="${datadir}/X11/xkb" ])
+-AC_ARG_WITH(xkb-output,       AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]),
++AC_ARG_WITH(xkb-output,       AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${localstatedir}/cache/xkb)]),
+                               [ XKBOUTPUT="$withval" ],
+-                              [ XKBOUTPUT="compiled" ])
++                              [ XKBOUTPUT="${localstatedir}/cache/xkb" ])
+ AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES],
+                                    [Keyboard ruleset (default: base/evdev)]),
+                                 [ XKB_DFLT_RULES="$withval" ],
+@@ -1225,7 +1225,7 @@
+ dnl Make sure XKM_OUTPUT_DIR is an absolute path
+ XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
+ if [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then
+-   XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT"
++   AC_MSG_ERROR([xkb-output must be an absolute path.])
+ fi
+ dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed
+Index: xorg-server-1.14.2.901/xkb/README.compiled
+===================================================================
+--- xorg-server-1.14.2.901.orig/xkb/README.compiled    2013-09-19 11:43:53.948797077 -0400
++++ xorg-server-1.14.2.901/xkb/README.compiled 2013-09-19 11:43:53.944797077 -0400
+@@ -4,10 +4,10 @@
+ or some other tool might destroy or replace the files in this directory,
+ so it is not a safe place to store compiled keymaps for long periods of
+ time.  The default keymap for any server is usually stored in:
+-     X<num>-default.xkm
+-where <num> is the display number of the server in question, which makes
+-it possible for several servers *on the same host* to share the same 
+-directory.
++     server-<SHA1>.xkm
++
++where <SHA1> is the SHA1 hash of keymap source, so that compiled
++keymap of different keymap sources are stored in different files.
+ Unless the X server is modified, sharing this directory between servers on
+ different hosts could cause problems.
+Index: xorg-server-1.14.2.901/xkb/ddxLoad.c
+===================================================================
+--- xorg-server-1.14.2.901.orig/xkb/ddxLoad.c  2013-09-19 11:43:53.948797077 -0400
++++ xorg-server-1.14.2.901/xkb/ddxLoad.c       2013-09-19 11:51:04.744800715 -0400
+@@ -30,6 +30,12 @@
+ #include <xkb-config.h>
++#ifdef HAVE_SHA1_IN_LIBGCRYPT   /* Use libgcrypt for SHA1 */
++#include <gcrypt.h>
++#else                           /* Use OpenSSL's libcrypto */
++#warning "xkbcomp caching support disabled"
++#endif
++
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <X11/X.h>
+@@ -43,20 +49,9 @@
+ #define       XKBSRV_NEED_FILE_FUNCS
+ #include <xkbsrv.h>
+ #include <X11/extensions/XI.h>
++#include <errno.h>
+ #include "xkb.h"
+-        /*
+-         * If XKM_OUTPUT_DIR specifies a path without a leading slash, it is
+-         * relative to the top-level XKB configuration directory.
+-         * Making the server write to a subdirectory of that directory
+-         * requires some work in the general case (install procedure
+-         * has to create links to /var or somesuch on many machines),
+-         * so we just compile into /usr/tmp for now.
+-         */
+-#ifndef XKM_OUTPUT_DIR
+-#define       XKM_OUTPUT_DIR  "compiled/"
+-#endif
+-
+ #define       PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\""
+ #define       ERROR_PREFIX    "\"> \""
+ #define       POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X server\""
+@@ -69,35 +64,87 @@
+ #endif
+ static void
+-OutputDirectory(char *outdir, size_t size)
++OutputDirectory(char *outdir, size_t size, Bool *is_private_directory)
+ {
+ #ifndef WIN32
+     /* Can we write an xkm and then open it too? */
+     if (access(XKM_OUTPUT_DIR, W_OK | X_OK) == 0 &&
+         (strlen(XKM_OUTPUT_DIR) < size)) {
+         (void) strcpy(outdir, XKM_OUTPUT_DIR);
++        if (is_private_directory)
++            *is_private_directory = TRUE;
+     }
+     else
+ #else
+     if (strlen(Win32TempDir()) + 1 < size) {
+         (void) strcpy(outdir, Win32TempDir());
+         (void) strcat(outdir, "\\");
++        if (is_private_directory)
++            *is_private_directory = FALSE;
+     }
+     else
+ #endif
+     if (strlen("/tmp/") < size) {
+         (void) strcpy(outdir, "/tmp/");
++        if (is_private_directory)
++            *is_private_directory = FALSE;
+     }
+ }
++#ifndef SHA_DIGEST_LENGTH
++#define SHA_DIGEST_LENGTH 20
++#endif
++
++static Bool
++Sha1Asc(char sha1Asc[SHA_DIGEST_LENGTH * 2 + 1], const char *input)
++{
++    int i;
++    unsigned char sha1[SHA_DIGEST_LENGTH];
++
++#ifdef HAVE_SHA1_IN_LIBGCRYPT   /* Use libgcrypt for SHA1 */
++    static int init;
++    gcry_md_hd_t h;
++    gcry_error_t err;
++
++    if (!init) {
++        if (!gcry_check_version(NULL))
++            return BadAlloc;
++        gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
++        gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
++        init = 1;
++    }
++
++    err = gcry_md_open(&h, GCRY_MD_SHA1, 0);
++    if (err)
++        return BadAlloc;
++    gcry_md_write(h, input, strlen(input));
++    memcpy(sha1, gcry_md_read(h, GCRY_MD_SHA1), 20);
++    gcry_md_close(h);
++#endif
++
++    /* convert sha1 to sha1_asc */
++    for (i = 0; i < SHA_DIGEST_LENGTH; ++i) {
++        sprintf(sha1Asc + i * 2, "%02X", sha1[i]);
++    }
++
++    return Success;
++}
++
++/* call xkbcomp and compile XKB keymap, return xkm file name in
++   nameRtrn */
+ static Bool
+ XkbDDXCompileKeymapByNames(XkbDescPtr xkb,
+                            XkbComponentNamesPtr names,
+                            unsigned want,
+-                           unsigned need, char *nameRtrn, int nameRtrnLen)
++                           unsigned need, char *nameRtrn, int nameRtrnLen,
++                           Bool *is_private_directory)
+ {
+     FILE *out;
+-    char *buf = NULL, keymap[PATH_MAX], xkm_output_dir[PATH_MAX];
++    char *buf = NULL, xkmfile[PATH_MAX], xkm_output_dir[PATH_MAX];
++    char *tmpXkmFile = NULL;
++    char *canonicalXkmFileName = NULL;
++    char sha1Asc[SHA_DIGEST_LENGTH * 2 + 1], xkbKeyMapBuf[100 * 1024];
++    int ret, result;
+     const char *emptystring = "";
+     char *xkbbasedirflag = NULL;
+@@ -108,14 +155,68 @@
+     /* WIN32 has no popen. The input must be stored in a file which is
+        used as input for xkbcomp. xkbcomp does not read from stdin. */
+     char tmpname[PATH_MAX];
+-    const char *xkmfile = tmpname;
++    const char *xkbfile = tmpname;
+ #else
+-    const char *xkmfile = "-";
++    const char *xkbfile = "-";
+ #endif
+-    snprintf(keymap, sizeof(keymap), "server-%s", display);
++    /* Write keymap source (xkbfile) to memory buffer `xkbKeyMapBuf',
++       of which SHA1 is generated and used as result xkm file name  */
++    memset(xkbKeyMapBuf, 0, sizeof(xkbKeyMapBuf));
++    out = fmemopen(xkbKeyMapBuf, sizeof(xkbKeyMapBuf), "w");
++    if (NULL == out) {
++        ErrorF("[xkb] Open xkbKeyMapBuf for writing failed\n");
++        return FALSE;
++    }
++    ret = XkbWriteXKBKeymapForNames(out, names, xkb, want, need);
++    if (fclose(out) != 0) {
++        ErrorF
++            ("[xkb] XkbWriteXKBKeymapForNames error, perhaps xkbKeyMapBuf is too small\n");
++        return FALSE;
++    }
++#ifdef DEBUG
++    if (xkbDebugFlags) {
++        ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
++        fputs(xkbKeyMapBuf, stderr);
++    }
++#endif
++    if (!ret) {
++        ErrorF
++            ("[xkb] Generating XKB Keymap failed, giving up compiling keymap\n");
++        return FALSE;
++    }
++
++    DebugF("[xkb] computing SHA1 of keymap\n");
++    if (Success == Sha1Asc(sha1Asc, xkbKeyMapBuf)) {
++        snprintf(xkmfile, sizeof(xkmfile), "server-%s", sha1Asc);
++    }
++    else {
++        ErrorF("[xkb] Computing SHA1 of keymap failed, "
++               "using display name instead as xkm file name\n");
++        snprintf(xkmfile, sizeof(xkmfile), "server-%s", display);
++    }
++
++    OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir), is_private_directory);
++    /* set nameRtrn, fail if it's too small */
++    if ((strlen(xkmfile) + 1 > nameRtrnLen) && nameRtrn) {
++        ErrorF("[xkb] nameRtrn too small to hold xkmfile name\n");
++        return FALSE;
++    }
++    strncpy(nameRtrn, xkmfile, nameRtrnLen);
+-    OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
++    /* if the xkm file already exists, reuse it */
++    canonicalXkmFileName = Xprintf("%s%s.xkm", xkm_output_dir, xkmfile);
++    if ((*is_private_directory) && (access(canonicalXkmFileName, R_OK) == 0)) {
++        /* yes, we can reuse the old xkm file */
++        LogMessage(X_INFO, "XKB: reuse xkmfile %s\n", canonicalXkmFileName);
++        result = TRUE;
++        goto _ret;
++    }
++    LogMessage(X_INFO, "XKB: generating xkmfile %s\n", canonicalXkmFileName);
++
++    /* continue to call xkbcomp to compile the keymap. to avoid race
++       condition, we compile it to a tmpfile then rename it to
++       xkmfile */
+ #ifdef WIN32
+     strcpy(tmpname, Win32TempDir());
+@@ -139,15 +240,21 @@
+         }
+     }
++    if ((tmpXkmFile = tempnam(xkm_output_dir, NULL)) == NULL) {
++        ErrorF("[xkb] Can't generate temp xkm file name");
++        result = FALSE;
++        goto _ret;
++    }
++
+     if (asprintf(&buf,
+                  "\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" "
+-                 "-em1 %s -emp %s -eml %s \"%s%s.xkm\"",
++                 "-em1 %s -emp %s -eml %s \"%s\"",
+                  xkbbindir, xkbbindirsep,
+                  ((xkbDebugFlags < 2) ? 1 :
+                   ((xkbDebugFlags > 10) ? 10 : (int) xkbDebugFlags)),
+-                 xkbbasedirflag ? xkbbasedirflag : "", xkmfile,
++                 xkbbasedirflag ? xkbbasedirflag : "", xkbfile,
+                  PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1,
+-                 xkm_output_dir, keymap) == -1)
++                 tmpXkmFile) == -1)
+         buf = NULL;
+     free(xkbbasedirflag);
+@@ -158,6 +265,11 @@
+         return FALSE;
+     }
++    /* there's a potential race condition between calling tempnam()
++       and invoking xkbcomp to write the result file (potential temp
++       file name conflicts), but since xkbcomp is a standalone
++       program, we have to live with this */
++
+ #ifndef WIN32
+     out = Popen(buf, "w");
+ #else
+@@ -165,32 +277,43 @@
+ #endif
+     if (out != NULL) {
+-#ifdef DEBUG
+-        if (xkbDebugFlags) {
+-            ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
+-            XkbWriteXKBKeymapForNames(stderr, names, xkb, want, need);
++        /* write XKBKeyMapBuf to xkbcomp */
++        if (EOF == fputs(xkbKeyMapBuf, out)) {
++            ErrorF("[xkb] Sending keymap to xkbcomp failed\n");
++            result = FALSE;
++            goto _ret;
+         }
+-#endif
+-        XkbWriteXKBKeymapForNames(out, names, xkb, want, need);
+ #ifndef WIN32
+         if (Pclose(out) == 0)
+ #else
+         if (fclose(out) == 0 && System(buf) >= 0)
+ #endif
+         {
++            /* xkbcomp success */
+             if (xkbDebugFlags)
+                 DebugF("[xkb] xkb executes: %s\n", buf);
+-            if (nameRtrn) {
+-                strlcpy(nameRtrn, keymap, nameRtrnLen);
++
++            /* if canonicalXkmFileName already exists now, we simply
++               overwrite it, this is OK */
++            ret = rename(tmpXkmFile, canonicalXkmFileName);
++            if (0 != ret) {
++                ErrorF("[xkb] Can't rename %s to %s, error: %s\n",
++                       tmpXkmFile, canonicalXkmFileName, strerror(errno));
++
++                /* in case of error, don't unlink tmpXkmFile, leave i
++                   for debugging */
++
++                result = FALSE;
++                goto _ret;
+             }
+-            free(buf);
+ #ifdef WIN32
+             unlink(tmpname);
+ #endif
+-            return TRUE;
++            result = TRUE;
++            goto _ret;
+         }
+         else
+-            LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap);
++            LogMessage(X_ERROR, "Error compiling keymap (%s)\n", xkbfile);
+ #ifdef WIN32
+         /* remove the temporary file */
+         unlink(tmpname);
+@@ -205,8 +328,17 @@
+     }
+     if (nameRtrn)
+         nameRtrn[0] = '\0';
+-    free(buf);
+-    return FALSE;
++    result = FALSE;
++
++ _ret:
++    if (tmpXkmFile)
++        free(tmpXkmFile);
++    if (canonicalXkmFileName)
++        free(canonicalXkmFileName);
++    if (buf)
++        free(buf);
++
++    return result;
+ }
+ static FILE *
+@@ -217,7 +349,7 @@
+     buf[0] = '\0';
+     if (mapName != NULL) {
+-        OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
++        OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir), NULL);
+         if ((XkbBaseDirectory != NULL) && (xkm_output_dir[0] != '/')
+ #ifdef WIN32
+             && (!isalpha(xkm_output_dir[0]) || xkm_output_dir[1] != ':')
+@@ -256,6 +388,7 @@
+     FILE *file;
+     char fileName[PATH_MAX];
+     unsigned missing;
++    Bool is_private_directory;
+     *xkbRtrn = NULL;
+     if ((keybd == NULL) || (keybd->key == NULL) ||
+@@ -271,7 +404,8 @@
+         return 0;
+     }
+     else if (!XkbDDXCompileKeymapByNames(xkb, names, want, need,
+-                                         nameRtrn, nameRtrnLen)) {
++                                         nameRtrn, nameRtrnLen,
++                                         &is_private_directory)) {
+         LogMessage(X_ERROR, "XKB: Couldn't compile keymap\n");
+         return 0;
+     }
+@@ -293,7 +427,8 @@
+                (*xkbRtrn)->defined);
+     }
+     fclose(file);
+-    (void) unlink(fileName);
++    if (!is_private_directory)
++        (void) unlink(fileName);
+     return (need | want) & (~missing);
+ }
diff --git a/debian/patches/191-Xorg-add-an-extra-module-path.patch b/debian/patches/191-Xorg-add-an-extra-module-path.patch
new file mode 100644 (file)
index 0000000..6ff6c30
--- /dev/null
@@ -0,0 +1,90 @@
+diff --git a/configure.ac b/configure.ac
+index 2693ce7..44780a2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -467,6 +467,10 @@ AC_ARG_WITH(module-dir,      AS_HELP_STRING([--with-module-dir=DIR],
+                                 [Directory where modules are installed (default: $libdir/xorg/modules)]),
+                               [ moduledir="$withval" ],
+                               [ moduledir="${libdir}/xorg/modules" ])
++AC_ARG_WITH(extra-module-dir,AS_HELP_STRING([--with-extra-module-dir=DIR],
++                                [Extra module directory to search for modules before the default one (default: empty)]),
++                              [ extra_moduledir="$withval" ],
++                              [ extra_moduledir="" ])
+ AC_ARG_WITH(log-dir,         AS_HELP_STRING([--with-log-dir=DIR],
+                                 [Directory where log files are kept (default: $localstatedir/log)]),
+                               [ logdir="$withval" ],
+@@ -1751,6 +1755,7 @@ if test "x$XORG" = xyes; then
+       AC_DEFINE_DIR(XF86CONFIGFILE, XF86CONFIGFILE, [Name of configuration file])
+       AC_DEFINE_DIR(__XCONFIGDIR__, XF86CONFIGDIR, [Name of configuration directory])
+       AC_DEFINE_DIR(DEFAULT_MODULE_PATH, moduledir, [Default module search path])
++      AC_DEFINE_DIR(EXTRA_MODULE_PATH, extra_moduledir, [Extra module search path, searched before the default one])
+       AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path])
+       AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default log location])
+       AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
+diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
+index ec679df..8ae85ab 100644
+--- a/hw/xfree86/common/xf86Config.c
++++ b/hw/xfree86/common/xf86Config.c
+@@ -647,11 +647,22 @@ configFiles(XF86ConfFilesPtr fileconf)
+     /* ModulePath */
+-    if (fileconf) {
+-        if (xf86ModPathFrom != X_CMDLINE && fileconf->file_modulepath) {
++    if (xf86ModPathFrom != X_CMDLINE) {
++        if (fileconf && fileconf->file_modulepath) {
+             xf86ModulePath = fileconf->file_modulepath;
+             xf86ModPathFrom = X_CONFIG;
+         }
++        else if (strcmp(xf86ExtraModulePath, "") != 0) {
++            char *newpath = malloc(strlen(xf86ExtraModulePath)
++                                   + strlen(xf86ModulePath)
++                                   + 2);
++
++            strcpy(newpath, xf86ExtraModulePath);
++            strcat(newpath, ",");
++            strcat(newpath, xf86ModulePath);
++
++            xf86ModulePath = newpath;
++        }
+     }
+     xf86Msg(xf86ModPathFrom, "ModulePath set to \"%s\"\n", xf86ModulePath);
+diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
+index 0071004..13c403f 100644
+--- a/hw/xfree86/common/xf86Globals.c
++++ b/hw/xfree86/common/xf86Globals.c
+@@ -136,6 +136,7 @@ xf86InfoRec xf86Info = {
+ const char *xf86ConfigFile = NULL;
+ const char *xf86ConfigDir = NULL;
+ const char *xf86ModulePath = DEFAULT_MODULE_PATH;
++const char *xf86ExtraModulePath = EXTRA_MODULE_PATH;
+ MessageType xf86ModPathFrom = X_DEFAULT;
+ const char *xf86LogFile = DEFAULT_LOGPREFIX;
+ MessageType xf86LogFileFrom = X_DEFAULT;
+diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
+index 8d9cb55..fc057b3 100644
+--- a/hw/xfree86/common/xf86Priv.h
++++ b/hw/xfree86/common/xf86Priv.h
+@@ -77,6 +77,7 @@ extern _X_EXPORT const char *xf86ServerName;
+ extern _X_EXPORT xf86InfoRec xf86Info;
+ extern _X_EXPORT const char *xf86ModulePath;
++extern _X_EXPORT const char *xf86ExtraModulePath;
+ extern _X_EXPORT MessageType xf86ModPathFrom;
+ extern _X_EXPORT const char *xf86LogFile;
+ extern _X_EXPORT MessageType xf86LogFileFrom;
+diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
+index 2cc416a..4722023 100644
+--- a/include/xorg-config.h.in
++++ b/include/xorg-config.h.in
+@@ -42,6 +42,9 @@
+ /* Path to loadable modules. */
+ #undef DEFAULT_MODULE_PATH
++/* Path to extra loadable modules. */
++#undef EXTRA_MODULE_PATH
++
+ /* Path to installed libraries. */
+ #undef DEFAULT_LIBRARY_PATH
diff --git a/debian/patches/208_switch_on_release.diff b/debian/patches/208_switch_on_release.diff
new file mode 100644 (file)
index 0000000..d1f7d26
--- /dev/null
@@ -0,0 +1,110 @@
+diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
+index c473df1..0ac2c71 100644
+--- a/xkb/xkbActions.c
++++ b/xkb/xkbActions.c
+@@ -341,22 +341,83 @@ _XkbFilterLatchState(XkbSrvInfoPtr xkbi,
+ }
+ static int
+-_XkbFilterLockState(XkbSrvInfoPtr xkbi,
++xkbSwitchGroupOnRelease(void)
++{
++    /* TODO: user configuring */
++    return TRUE;
++}
++
++static void
++xkbUpdateLockedGroup(XkbSrvInfoPtr xkbi, XkbAction *pAction)
++{
++    XkbGroupAction ga = pAction->group;
++
++    if (ga.flags & XkbSA_GroupAbsolute)
++        xkbi->state.locked_group = XkbSAGroup(&ga);
++    else
++        xkbi->state.locked_group += XkbSAGroup(&ga);
++}
++
++static XkbFilterPtr _XkbNextFreeFilter(XkbSrvInfoPtr xkbi);
++
++static int
++_XkbFilterLockGroup(XkbSrvInfoPtr xkbi,
+                     XkbFilterPtr filter, unsigned keycode, XkbAction *pAction)
+ {
+-    if (pAction && (pAction->type == XkbSA_LockGroup)) {
+-        if (pAction->group.flags & XkbSA_GroupAbsolute)
+-            xkbi->state.locked_group = XkbSAGroup(&pAction->group);
+-        else
+-            xkbi->state.locked_group += XkbSAGroup(&pAction->group);
+-        return 1;
++    int sendEvent = 1;
++
++    if (!xkbSwitchGroupOnRelease()) {
++        xkbUpdateLockedGroup(xkbi, pAction);
++        return sendEvent;
+     }
++
++    /* Delay switch till button release */
++    if (filter->keycode == 0) { /* initial press */
++        filter->keycode = keycode;
++        filter->active = 1;
++        filter->filterOthers = 0;       /* for what? */
++        filter->filter = _XkbFilterLockGroup;
++
++        /* filter->priv = 0; */
++        filter->upAction = *pAction;
++
++        /* Ok, now we need to simulate the action which would go if this action didn't block it.
++           XkbSA_SetMods is the one: it is to set modifier' flag up. */
++        {
++            XkbStateRec fake_state = xkbi->state;
++            XkbAction act;
++
++            fake_state.mods = 0;
++            act = XkbGetKeyAction(xkbi, &fake_state, keycode);
++
++            /* KLUDGE: XkbSA_SetMods only? */
++            if (act.type == XkbSA_SetMods) {
++                XkbFilterPtr filter = _XkbNextFreeFilter(xkbi);
++
++                sendEvent = _XkbFilterSetState(xkbi, filter, keycode, &act);
++            }
++        }
++    }
++    else {
++        /* do nothing if some button else is pressed */
++        if (!pAction)
++            xkbUpdateLockedGroup(xkbi, &filter->upAction);
++        filter->active = 0;
++    }
++
++    return sendEvent;
++}
++
++static int
++_XkbFilterLockMods(XkbSrvInfoPtr xkbi,
++                   XkbFilterPtr filter, unsigned keycode, XkbAction *pAction)
++{
+     if (filter->keycode == 0) { /* initial press */
+         filter->keycode = keycode;
+         filter->active = 1;
+         filter->filterOthers = 0;
+         filter->priv = xkbi->state.locked_mods & pAction->mods.mask;
+-        filter->filter = _XkbFilterLockState;
++        filter->filter = _XkbFilterLockMods;
+         filter->upAction = *pAction;
+         if (!(filter->upAction.mods.flags & XkbSA_LockNoLock))
+             xkbi->state.locked_mods |= pAction->mods.mask;
+@@ -1129,9 +1190,12 @@ XkbHandleActions(DeviceIntPtr dev, DeviceIntPtr kbd, DeviceEvent *event)
+                 sendEvent = _XkbFilterLatchState(xkbi, filter, key, &act);
+                 break;
+             case XkbSA_LockMods:
++                filter = _XkbNextFreeFilter(xkbi);
++                sendEvent = _XkbFilterLockMods(xkbi, filter, key, &act);
++                break;
+             case XkbSA_LockGroup:
+                 filter = _XkbNextFreeFilter(xkbi);
+-                sendEvent = _XkbFilterLockState(xkbi, filter, key, &act);
++                sendEvent = _XkbFilterLockGroup(xkbi, filter, key, &act);
+                 break;
+             case XkbSA_ISOLock:
+                 filter = _XkbNextFreeFilter(xkbi);
diff --git a/debian/patches/226_fall_back_to_autoconfiguration.patch b/debian/patches/226_fall_back_to_autoconfiguration.patch
new file mode 100644 (file)
index 0000000..70fa7e5
--- /dev/null
@@ -0,0 +1,78 @@
+--- a/hw/xfree86/common/xf86Globals.c
++++ b/hw/xfree86/common/xf86Globals.c
+@@ -161,6 +161,7 @@
+ int xf86NumInputDrivers = 0;
+ int xf86NumScreens = 0;
+ int xf86NumGPUScreens = 0;
++Bool xf86AttemptedFallback = FALSE;
+ const char *xf86VisualNames[] = {
+     "StaticGray",
+--- a/hw/xfree86/common/xf86Init.c
++++ b/hw/xfree86/common/xf86Init.c
+@@ -481,20 +481,34 @@
+             free(optionlist);
+         }
++ Fallback:
+         /* Load all driver modules specified in the config file */
+         /* If there aren't any specified in the config file, autoconfig them */
+         /* FIXME: Does not handle multiple active screen sections, but I'm not
+          * sure if we really want to handle that case*/
+         configured_device = xf86ConfigLayout.screens->screen->device;
+-        if ((!configured_device) || (!configured_device->driver)) {
++        if (xf86AttemptedFallback) {
++            configured_device->driver = NULL;
++            if (!autoConfigDevice(configured_device)) {
++                xf86Msg(X_ERROR, "Auto configuration on fallback failed\n");
++                return;
++            }
++        }
++        else if ((!configured_device) || (!configured_device->driver)) {
+             if (!autoConfigDevice(configured_device)) {
+                 xf86Msg(X_ERROR, "Automatic driver configuration failed\n");
+                 return;
+             }
+         }
+         if ((modulelist = xf86DriverlistFromConfig())) {
+-            xf86LoadModules(modulelist, NULL);
+-            free(modulelist);
++            if (!xf86LoadModules(modulelist, NULL) && !xf86AttemptedFallback) {
++                free(modulelist);
++                xf86AttemptedFallback = TRUE;
++                goto Fallback;
++            }
++            else {
++                free(modulelist);
++            }
+         }
+         /* Load all input driver modules specified in the config file. */
+@@ -554,8 +568,15 @@
+         else
+             xf86Info.dontVTSwitch = TRUE;
+-        if (xf86BusConfig() == FALSE)
+-            return;
++        if (xf86BusConfig() == FALSE) {
++            if (!xf86AttemptedFallback) {
++                xf86AttemptedFallback = TRUE;
++                goto Fallback;
++            }
++            else {
++                return;
++            }
++        }
+         xf86PostProbe();
+--- a/hw/xfree86/common/xf86Priv.h
++++ b/hw/xfree86/common/xf86Priv.h
+@@ -89,6 +89,7 @@
+ extern _X_EXPORT Bool xf86Resetting;
+ extern _X_EXPORT Bool xf86Initialising;
+ extern _X_EXPORT int xf86NumScreens;
++extern _X_EXPORT Bool xf86AttemptedFallback;
+ extern _X_EXPORT const char *xf86VisualNames[];
+ extern _X_EXPORT int xf86Verbose;       /* verbosity level */
+ extern _X_EXPORT int xf86LogVerbose;    /* log file verbosity level */
diff --git a/debian/patches/227_null_ptr_midispcur.patch b/debian/patches/227_null_ptr_midispcur.patch
new file mode 100644 (file)
index 0000000..4b26c16
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/mi/midispcur.c b/mi/midispcur.c
+index 24b9a70..266c7e0 100644
+--- a/mi/midispcur.c
++++ b/mi/midispcur.c
+@@ -466,6 +466,10 @@ miDCRestoreUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
+     GCPtr pGC;
+     pBuffer = miGetDCDevice(pDev, pScreen);
++
++    if (!pBuffer)
++        return FALSE;
++
+     pSave = pBuffer->pSave;
+     pWin = pScreen->root;
diff --git a/debian/patches/228_autobind_gpu.patch b/debian/patches/228_autobind_gpu.patch
new file mode 100644 (file)
index 0000000..e950c9d
--- /dev/null
@@ -0,0 +1,111 @@
+From 37d51acb3b6a38af1717bfaa7925043c35bfb447 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied@redhat.com>
+Date: Fri, 17 Aug 2012 09:49:24 +1000
+Subject: [PATCH] autobind GPUs to the screen, (v3)
+
+this is racy and really not what we want for hotplug going forward,
+but until DE support is in GNOME its probably for the best.
+
+v2: fix if config or slave config is NULL
+v3: fix multi useful slaves
+DO NOT UPSTREAM.
+---
+ hw/xfree86/common/xf86Init.c        | 12 ++++++++++++
+ hw/xfree86/common/xf86platformBus.c |  3 +++
+ hw/xfree86/modes/xf86Crtc.c         | 32 ++++++++++++++++++++++++++++++++
+ 3 files changed, 47 insertions(+), 0 deletions(-)
+
+diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
+index d231ced..89629c1 100644
+--- a/hw/xfree86/common/xf86Init.c
++++ b/hw/xfree86/common/xf86Init.c
+@@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin)
+     return ret;
+ }
++extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master);                              
++static void
++xf86AutoConfigOutputDevices(void)
++{
++    int i;
++
++    for (i = 0; i < xf86NumGPUScreens; i++)
++        xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
++}
++
+ static void
+ InstallSignalHandlers(void)
+ {
+@@ -926,6 +936,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
+     for (i = 0; i < xf86NumGPUScreens; i++)
+         AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
++    xf86AutoConfigOutputDevices();
++
+     xf86VGAarbiterWrapFunctions();
+     if (sigio_blocked)
+         OsReleaseSIGIO();
+diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
+index 0525e39..82fef32 100644
+--- a/hw/xfree86/common/xf86platformBus.c
++++ b/hw/xfree86/common/xf86platformBus.c
+@@ -387,6 +387,8 @@ xf86platformProbeDev(DriverPtr drvp)
+     return foundScreen;
+ }
++extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master);
++
+ int
+ xf86platformAddDevice(int index)
+ {
+@@ -446,6 +448,7 @@ xf86platformAddDevice(int index)
+    /* attach unbound to 0 protocol screen */
+    AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
++   xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
+    return 0;
+ }
+diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
+index 3011f13..34c1848 100644
+--- a/hw/xfree86/modes/xf86Crtc.c
++++ b/hw/xfree86/modes/xf86Crtc.c
+@@ -3323,3 +3323,35 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn)
+             crtc->x = crtc->y = 0;
+         }
+ }
++
++
++void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master)
++{
++    RRProviderPtr master_provider;
++    xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(master);
++    xf86CrtcConfigPtr slave_config = XF86_CRTC_CONFIG_PTR(pScrn);
++    Bool unbound = FALSE;
++
++    if (!config || !slave_config)
++        return;
++
++    master_provider = config->randr_provider;
++
++    if ((master->capabilities & RR_Capability_SinkOffload) &&
++        pScrn->capabilities & RR_Capability_SourceOffload) {
++            /* source offload */
++            
++        DetachUnboundGPU(pScrn->pScreen);
++        unbound = TRUE;
++        AttachOffloadGPU(master->pScreen, pScrn->pScreen);
++        slave_config->randr_provider->offload_sink = master_provider;
++    }
++    if ((master->capabilities & RR_Capability_SourceOutput) &&
++               pScrn->capabilities & RR_Capability_SinkOutput) {
++        /* sink offload */
++        if (!unbound)
++            DetachUnboundGPU(pScrn->pScreen);
++        AttachOutputGPU(master->pScreen, pScrn->pScreen);
++        slave_config->randr_provider->output_source = master_provider;
++    }
++}
+-- 
+1.8.1
+
diff --git a/debian/patches/232-xf86compatoutput-valgrind.patch b/debian/patches/232-xf86compatoutput-valgrind.patch
new file mode 100644 (file)
index 0000000..8d59186
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h
+index 802303f..6e80210 100644
+--- a/hw/xfree86/modes/xf86Crtc.h
++++ b/hw/xfree86/modes/xf86Crtc.h
+@@ -730,6 +730,8 @@ static _X_INLINE xf86OutputPtr
+ xf86CompatOutput(ScrnInfoPtr pScrn)
+ {
+     xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
++    if (config->compat_output < 0)
++        return NULL;
+     return config->output[config->compat_output];
+ }
diff --git a/debian/patches/CVE-2014-8xxx/0000-glx-check-return.patch b/debian/patches/CVE-2014-8xxx/0000-glx-check-return.patch
new file mode 100644 (file)
index 0000000..a652174
--- /dev/null
@@ -0,0 +1,184 @@
+From 61a292adf45405641de1c522a04c148e0a152acd Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+Date: Thu, 9 Oct 2014 15:17:17 +0200
+Subject: glx: check return from __glXGetAnswerBuffer
+
+This function can return NULL; make sure every caller tests for that.
+
+Reviewed-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Keith Packard <keithp@keithp.com>
+
+diff --git a/glx/indirect_dispatch.c b/glx/indirect_dispatch.c
+index 329b2e6..f6cabef 100644
+--- a/glx/indirect_dispatch.c
++++ b/glx/indirect_dispatch.c
+@@ -2464,6 +2464,9 @@ __glXDisp_AreTexturesResident(__GLXclientState * cl, GLbyte * pc)
+         GLboolean answerBuffer[200];
+         GLboolean *residences =
+             __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
++
++        if (residences == NULL)
++            return BadAlloc;
+         retval =
+             glAreTexturesResident(n, (const GLuint *) (pc + 4), residences);
+         __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval);
+@@ -2488,6 +2491,9 @@ __glXDisp_AreTexturesResidentEXT(__GLXclientState * cl, GLbyte * pc)
+         GLboolean answerBuffer[200];
+         GLboolean *residences =
+             __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
++
++        if (residences == NULL)
++            return BadAlloc;
+         retval =
+             glAreTexturesResident(n, (const GLuint *) (pc + 4), residences);
+         __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval);
+@@ -2593,6 +2599,9 @@ __glXDisp_GenTextures(__GLXclientState * cl, GLbyte * pc)
+         GLuint *textures =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (textures == NULL)
++            return BadAlloc;
+         glGenTextures(n, textures);
+         __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0);
+         error = Success;
+@@ -2616,6 +2625,9 @@ __glXDisp_GenTexturesEXT(__GLXclientState * cl, GLbyte * pc)
+         GLuint *textures =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (textures == NULL)
++            return BadAlloc;
+         glGenTextures(n, textures);
+         __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0);
+         error = Success;
+@@ -3883,6 +3895,9 @@ __glXDisp_GenQueries(__GLXclientState * cl, GLbyte * pc)
+         GLuint *ids =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (ids == NULL)
++            return BadAlloc;
+         GenQueries(n, ids);
+         __glXSendReply(cl->client, ids, n, 4, GL_TRUE, 0);
+         error = Success;
+@@ -4253,6 +4268,9 @@ __glXDisp_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
+         GLuint *programs =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (programs == NULL)
++            return BadAlloc;
+         GenProgramsARB(n, programs);
+         __glXSendReply(cl->client, programs, n, 4, GL_TRUE, 0);
+         error = Success;
+@@ -4630,6 +4648,10 @@ __glXDisp_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
+         GLuint *framebuffers =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (framebuffers == NULL)
++            return BadAlloc;
++
+         GenFramebuffers(n, framebuffers);
+         __glXSendReply(cl->client, framebuffers, n, 4, GL_TRUE, 0);
+         error = Success;
+@@ -4655,6 +4677,9 @@ __glXDisp_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
+         GLuint *renderbuffers =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (renderbuffers == NULL)
++            return BadAlloc;
+         GenRenderbuffers(n, renderbuffers);
+         __glXSendReply(cl->client, renderbuffers, n, 4, GL_TRUE, 0);
+         error = Success;
+diff --git a/glx/indirect_dispatch_swap.c b/glx/indirect_dispatch_swap.c
+index 647d0c9..c0bb64d 100644
+--- a/glx/indirect_dispatch_swap.c
++++ b/glx/indirect_dispatch_swap.c
+@@ -2731,6 +2731,9 @@ __glXDispSwap_AreTexturesResident(__GLXclientState * cl, GLbyte * pc)
+         GLboolean answerBuffer[200];
+         GLboolean *residences =
+             __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
++
++        if (residences == NULL)
++            return BadAlloc;
+         retval =
+             glAreTexturesResident(n,
+                                   (const GLuint *)
+@@ -2759,6 +2762,9 @@ __glXDispSwap_AreTexturesResidentEXT(__GLXclientState * cl, GLbyte * pc)
+         GLboolean answerBuffer[200];
+         GLboolean *residences =
+             __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
++
++        if (residences == NULL)
++            return BadAlloc;
+         retval =
+             glAreTexturesResident(n,
+                                   (const GLuint *)
+@@ -2878,6 +2884,9 @@ __glXDispSwap_GenTextures(__GLXclientState * cl, GLbyte * pc)
+         GLuint *textures =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (textures == NULL)
++            return BadAlloc;
+         glGenTextures(n, textures);
+         (void) bswap_32_array((uint32_t *) textures, n);
+         __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0);
+@@ -2903,6 +2912,9 @@ __glXDispSwap_GenTexturesEXT(__GLXclientState * cl, GLbyte * pc)
+         GLuint *textures =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (textures == NULL)
++            return BadAlloc;
+         glGenTextures(n, textures);
+         (void) bswap_32_array((uint32_t *) textures, n);
+         __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0);
+@@ -4290,6 +4302,9 @@ __glXDispSwap_GenQueries(__GLXclientState * cl, GLbyte * pc)
+         GLuint *ids =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++        if (ids == NULL)
++            return BadAlloc;
++
+         GenQueries(n, ids);
+         (void) bswap_32_array((uint32_t *) ids, n);
+         __glXSendReplySwap(cl->client, ids, n, 4, GL_TRUE, 0);
+@@ -4697,6 +4712,9 @@ __glXDispSwap_GenProgramsARB(__GLXclientState * cl, GLbyte * pc)
+         GLuint *programs =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++        if (programs == NULL)
++            return BadAlloc;
++
+         GenProgramsARB(n, programs);
+         (void) bswap_32_array((uint32_t *) programs, n);
+         __glXSendReplySwap(cl->client, programs, n, 4, GL_TRUE, 0);
+@@ -5122,6 +5140,10 @@ __glXDispSwap_GenFramebuffers(__GLXclientState * cl, GLbyte * pc)
+         GLuint *framebuffers =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (framebuffers == NULL)
++            return BadAlloc;
++
+         GenFramebuffers(n, framebuffers);
+         (void) bswap_32_array((uint32_t *) framebuffers, n);
+         __glXSendReplySwap(cl->client, framebuffers, n, 4, GL_TRUE, 0);
+@@ -5149,6 +5171,10 @@ __glXDispSwap_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc)
+         GLuint *renderbuffers =
+             __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer),
+                                  4);
++
++        if (renderbuffers == NULL)
++            return BadAlloc;
++
+         GenRenderbuffers(n, renderbuffers);
+         (void) bswap_32_array((uint32_t *) renderbuffers, n);
+         __glXSendReplySwap(cl->client, renderbuffers, n, 4, GL_TRUE, 0);
+-- 
+cgit v0.10.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0000-regionsize-size_t.patch b/debian/patches/CVE-2014-8xxx/0000-regionsize-size_t.patch
new file mode 100644 (file)
index 0000000..12025f6
--- /dev/null
@@ -0,0 +1,31 @@
+From 995ecfb51d4ab8197e4591d5c0957e08a0bd6a59 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Thu, 30 Oct 2014 09:00:21 +1000
+Subject: include: change RegionSize() to take a size_t
+
+/usr/include/xorg/regionstr.h:130:36: warning: implicit conversion changes
+signedness: 'int' to 'unsigned long' [-Wsign-conversion]
+    return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec)));
+                                   ^  ~
+
+Really only just pushes the problem to the caller, but maybe that motivates
+someone to fix it.
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+diff --git a/include/regionstr.h b/include/regionstr.h
+index 4a0725d..515e93f 100644
+--- a/include/regionstr.h
++++ b/include/regionstr.h
+@@ -125,7 +125,7 @@ RegionEnd(RegionPtr reg)
+ }
+ static inline size_t
+-RegionSizeof(int n)
++RegionSizeof(size_t n)
+ {
+     return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec)));
+ }
+-- 
+cgit v0.10.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0001-unchecked-malloc-may-allow-unauthed-client-to-crash-.patch b/debian/patches/CVE-2014-8xxx/0001-unchecked-malloc-may-allow-unauthed-client-to-crash-.patch
new file mode 100644 (file)
index 0000000..b5fbb7d
--- /dev/null
@@ -0,0 +1,40 @@
+From d2f5bd2c3e3cbe4778749d457550355d344ca62a Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri, 17 Jan 2014 18:54:03 -0800
+Subject: [PATCH 01/33] unchecked malloc may allow unauthed client to crash
+ Xserver [CVE-2014-8091]
+
+authdes_ezdecode() calls malloc() using a length provided by the
+connection handshake sent by a newly connected client in order
+to authenticate to the server, so should be treated as untrusted.
+
+It didn't check if malloc() failed before writing to the newly
+allocated buffer, so could lead to a server crash if the server
+fails to allocate memory (up to UINT16_MAX bytes, since the len
+field is a CARD16 in the X protocol).
+
+Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ os/rpcauth.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/os/rpcauth.c b/os/rpcauth.c
+index d60ea35..413cc61 100644
+--- a/os/rpcauth.c
++++ b/os/rpcauth.c
+@@ -66,6 +66,10 @@ authdes_ezdecode(const char *inmsg, int len)
+     SVCXPRT xprt;
+     temp_inmsg = malloc(len);
++    if (temp_inmsg == NULL) {
++        why = AUTH_FAILED; /* generic error, since there is no AUTH_BADALLOC */
++        return NULL;
++    }
+     memmove(temp_inmsg, inmsg, len);
+     memset((char *) &msg, 0, sizeof(msg));
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0002-dix-integer-overflow-in-ProcPutImage-CVE-2014-8092-1.patch b/debian/patches/CVE-2014-8xxx/0002-dix-integer-overflow-in-ProcPutImage-CVE-2014-8092-1.patch
new file mode 100644 (file)
index 0000000..085109a
--- /dev/null
@@ -0,0 +1,34 @@
+From 7e17b41d2907afd82d668f25694e1da12e34895e Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Wed, 22 Jan 2014 21:11:16 -0800
+Subject: [PATCH 02/33] dix: integer overflow in ProcPutImage() [CVE-2014-8092
+ 1/4]
+
+ProcPutImage() calculates a length field from a width, left pad and depth
+specified by the client (if the specified format is XYPixmap).
+
+The calculations for the total amount of memory the server needs for the
+pixmap can overflow a 32-bit number, causing out-of-bounds memory writes
+on 32-bit systems (since the length is stored in a long int variable).
+
+Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ dix/dispatch.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+Index: xorg-server-1.15.1/dix/dispatch.c
+===================================================================
+--- xorg-server-1.15.1.orig/dix/dispatch.c     2014-12-04 11:52:11.007847226 -0500
++++ xorg-server-1.15.1/dix/dispatch.c  2014-12-04 11:52:10.975847036 -0500
+@@ -1957,6 +1957,9 @@
+     tmpImage = (char *) &stuff[1];
+     lengthProto = length;
++    if (lengthProto >= (INT32_MAX / stuff->height))
++        return BadLength;
++
+     if ((bytes_to_int32(lengthProto * stuff->height) +
+          bytes_to_int32(sizeof(xPutImageReq))) != client->req_len)
+         return BadLength;
diff --git a/debian/patches/CVE-2014-8xxx/0003-dix-integer-overflow-in-GetHosts-CVE-2014-8092-2-4.patch b/debian/patches/CVE-2014-8xxx/0003-dix-integer-overflow-in-GetHosts-CVE-2014-8092-2-4.patch
new file mode 100644 (file)
index 0000000..d5f2d75
--- /dev/null
@@ -0,0 +1,47 @@
+From 2f605f86acec5ce853f764c41f8c737154a274f5 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Mon, 6 Jan 2014 23:30:14 -0800
+Subject: [PATCH 03/33] dix: integer overflow in GetHosts() [CVE-2014-8092
+ 2/4]
+
+GetHosts() iterates over all the hosts it has in memory, and copies
+them to a buffer. The buffer length is calculated by iterating over
+all the hosts and adding up all of their combined length. There is a
+potential integer overflow, if there are lots and lots of hosts (with
+a combined length of > ~4 gig). This should be possible by repeatedly
+calling ProcChangeHosts() on 64bit machines with enough memory.
+
+This patch caps the list at 1mb, because multi-megabyte hostname
+lists for X access control are insane.
+
+Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ os/access.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+Index: xorg-server-1.16.0/os/access.c
+===================================================================
+--- xorg-server-1.16.0.orig/os/access.c        2014-12-04 11:11:43.752542885 -0500
++++ xorg-server-1.16.0/os/access.c     2014-12-04 11:11:43.748542843 -0500
+@@ -1323,6 +1323,10 @@
+     for (host = validhosts; host; host = host->next) {
+         nHosts++;
+         n += pad_to_int32(host->len) + sizeof(xHostEntry);
++        /* Could check for INT_MAX, but in reality having more than 1mb of
++           hostnames in the access list is ridiculous */
++        if (n >= 1048576)
++            break;
+     }
+     if (n) {
+         *data = ptr = malloc(n);
+@@ -1331,6 +1335,8 @@
+         }
+         for (host = validhosts; host; host = host->next) {
+             len = host->len;
++            if ((ptr + sizeof(xHostEntry) + len) > (data + n))
++                break;
+             ((xHostEntry *) ptr)->family = host->family;
+             ((xHostEntry *) ptr)->length = len;
+             ptr += sizeof(xHostEntry);
diff --git a/debian/patches/CVE-2014-8xxx/0004-dix-integer-overflow-in-RegionSizeof-CVE-2014-8092-3.patch b/debian/patches/CVE-2014-8xxx/0004-dix-integer-overflow-in-RegionSizeof-CVE-2014-8092-3.patch
new file mode 100644 (file)
index 0000000..552bd8b
--- /dev/null
@@ -0,0 +1,125 @@
+From d7b2f5c06259c7e6ba037909adec4c2a5a8b15ec Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Wed, 22 Jan 2014 22:37:15 -0800
+Subject: [PATCH 04/33] dix: integer overflow in RegionSizeof() [CVE-2014-8092
+ 3/4]
+
+RegionSizeof contains several integer overflows if a large length
+value is passed in.  Once we fix it to return 0 on overflow, we
+also have to fix the callers to handle this error condition
+
+v2: Fixed limit calculation in RegionSizeof as pointed out by jcristau.
+
+Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+---
+ dix/region.c        |   20 +++++++++++++-------
+ include/regionstr.h |   10 +++++++---
+ 2 files changed, 20 insertions(+), 10 deletions(-)
+
+Index: xorg-server-1.15.1/dix/region.c
+===================================================================
+--- xorg-server-1.15.1.orig/dix/region.c       2014-12-05 08:24:42.034665485 -0500
++++ xorg-server-1.15.1/dix/region.c    2014-12-05 08:24:42.030665458 -0500
+@@ -169,7 +169,6 @@
+         ((r1)->y1 <= (r2)->y1) && \
+         ((r1)->y2 >= (r2)->y2) )
+-#define xallocData(n) malloc(RegionSizeof(n))
+ #define xfreeData(reg) if ((reg)->data && (reg)->data->size) free((reg)->data)
+ #define RECTALLOC_BAIL(pReg,n,bail) \
+@@ -205,8 +204,9 @@
+ #define DOWNSIZE(reg,numRects)                                                 \
+ if (((numRects) < ((reg)->data->size >> 1)) && ((reg)->data->size > 50)) \
+ {                                                                      \
+-    RegDataPtr NewData;                                                        \
+-    NewData = (RegDataPtr)realloc((reg)->data, RegionSizeof(numRects));        \
++    size_t NewSize = RegionSizeof(numRects);                           \
++    RegDataPtr NewData =                                               \
++        (NewSize > 0) ? realloc((reg)->data, NewSize) : NULL ;                 \
+     if (NewData)                                                       \
+     {                                                                  \
+       NewData->size = (numRects);                                      \
+@@ -345,17 +345,20 @@
+ RegionRectAlloc(RegionPtr pRgn, int n)
+ {
+     RegDataPtr data;
++    size_t rgnSize;
+     if (!pRgn->data) {
+         n++;
+-        pRgn->data = xallocData(n);
++        rgnSize = RegionSizeof(n);
++        pRgn->data = (rgnSize > 0) ? malloc(rgnSize) : NULL;
+         if (!pRgn->data)
+             return RegionBreak(pRgn);
+         pRgn->data->numRects = 1;
+         *RegionBoxptr(pRgn) = pRgn->extents;
+     }
+     else if (!pRgn->data->size) {
+-        pRgn->data = xallocData(n);
++        rgnSize = RegionSizeof(n);
++        pRgn->data = (rgnSize > 0) ? malloc(rgnSize) : NULL;
+         if (!pRgn->data)
+             return RegionBreak(pRgn);
+         pRgn->data->numRects = 0;
+@@ -367,7 +370,8 @@
+                 n = 250;
+         }
+         n += pRgn->data->numRects;
+-        data = (RegDataPtr) realloc(pRgn->data, RegionSizeof(n));
++        rgnSize = RegionSizeof(n);
++        data = (rgnSize > 0) ? realloc(pRgn->data, rgnSize) : NULL;
+         if (!data)
+             return RegionBreak(pRgn);
+         pRgn->data = data;
+@@ -1312,6 +1316,7 @@
+ {
+     RegionPtr pRgn;
++    size_t rgnSize;
+     RegDataPtr pData;
+     BoxPtr pBox;
+     int i;
+@@ -1338,7 +1343,8 @@
+         }
+         return pRgn;
+     }
+-    pData = xallocData(nrects);
++    rgnSize = RegionSizeof(nrects);
++    pData = (rgnSize > 0) ? malloc(rgnSize) : NULL;
+     if (!pData) {
+         RegionBreak(pRgn);
+         return pRgn;
+Index: xorg-server-1.15.1/include/regionstr.h
+===================================================================
+--- xorg-server-1.15.1.orig/include/regionstr.h        2014-12-05 08:24:42.034665485 -0500
++++ xorg-server-1.15.1/include/regionstr.h     2014-12-05 08:24:42.030665458 -0500
+@@ -127,7 +127,10 @@
+ static inline size_t
+ RegionSizeof(size_t n)
+ {
+-    return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec)));
++    if (n < ((INT_MAX - sizeof(RegDataRec)) / sizeof(BoxRec)))
++        return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec)));
++    else
++        return 0;
+ }
+ static inline void
+@@ -138,9 +141,10 @@
+         (_pReg)->data = (RegDataPtr) NULL;
+     }
+     else {
++        size_t rgnSize;
+         (_pReg)->extents = RegionEmptyBox;
+-        if (((_size) > 1) && ((_pReg)->data =
+-                              (RegDataPtr) malloc(RegionSizeof(_size)))) {
++        if (((_size) > 1) && ((rgnSize = RegionSizeof(_size)) > 0) &&
++            (((_pReg)->data = malloc(rgnSize)) != NULL)) {
+             (_pReg)->data->size = (_size);
+             (_pReg)->data->numRects = 0;
+         }
diff --git a/debian/patches/CVE-2014-8xxx/0005-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-2014-.patch b/debian/patches/CVE-2014-8xxx/0005-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-2014-.patch
new file mode 100644 (file)
index 0000000..1009488
--- /dev/null
@@ -0,0 +1,34 @@
+From 7d4f361a216718fc7333ab805dafdb9e5c85c180 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Wed, 22 Jan 2014 23:44:46 -0800
+Subject: [PATCH 05/33] dix: integer overflow in REQUEST_FIXED_SIZE()
+ [CVE-2014-8092 4/4]
+
+Force use of 64-bit integers when evaluating data provided by clients
+in 32-bit fields which can overflow when added or multiplied during
+checks.
+
+Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ include/dix.h |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/include/dix.h b/include/dix.h
+index 991a3ce..e0c6ed8 100644
+--- a/include/dix.h
++++ b/include/dix.h
+@@ -76,7 +76,8 @@ SOFTWARE.
+ #define REQUEST_FIXED_SIZE(req, n)\
+     if (((sizeof(req) >> 2) > client->req_len) || \
+-        (((sizeof(req) + (n) + 3) >> 2) != client->req_len)) \
++        ((n >> 2) >= client->req_len) || \
++        ((((uint64_t) sizeof(req) + (n) + 3) >> 2) != (uint64_t) client->req_len))  \
+          return(BadLength)
+ #define LEGAL_NEW_RESOURCE(id,client)\
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0006-dri2-integer-overflow-in-ProcDRI2GetBuffers-CVE-2014.patch b/debian/patches/CVE-2014-8xxx/0006-dri2-integer-overflow-in-ProcDRI2GetBuffers-CVE-2014.patch
new file mode 100644 (file)
index 0000000..430e956
--- /dev/null
@@ -0,0 +1,35 @@
+From f07eb544bbcfd9d4c64f036b654f4567f1fd2b9c Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Wed, 22 Jan 2014 23:40:18 -0800
+Subject: [PATCH 06/33] dri2: integer overflow in ProcDRI2GetBuffers()
+ [CVE-2014-8094]
+
+ProcDRI2GetBuffers() tries to validate a length field (count).
+There is an integer overflow in the validation. This can cause
+out of bound reads and memory corruption later on.
+
+Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+---
+ hw/xfree86/dri2/dri2ext.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
+index ffd66fa..221ec53 100644
+--- a/hw/xfree86/dri2/dri2ext.c
++++ b/hw/xfree86/dri2/dri2ext.c
+@@ -270,6 +270,9 @@ ProcDRI2GetBuffers(ClientPtr client)
+     unsigned int *attachments;
+     REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * 4);
++    if (stuff->count > (INT_MAX / 4))
++        return BadLength;
++
+     if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
+                        &pDrawable, &status))
+         return status;
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0007-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls-CVE-.patch b/debian/patches/CVE-2014-8xxx/0007-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls-CVE-.patch
new file mode 100644 (file)
index 0000000..0167ec0
--- /dev/null
@@ -0,0 +1,73 @@
+From 0d50f11aa10fe64c74ab7b3c572cc2f3ff583020 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Wed, 22 Jan 2014 23:12:04 -0800
+Subject: [PATCH 07/33] dbe: unvalidated lengths in DbeSwapBuffers calls
+ [CVE-2014-8097]
+
+ProcDbeSwapBuffers() has a 32bit (n) length value that it uses to read
+from a buffer. The length is never validated, which can lead to out of
+bound reads, and possibly returning the data read from out of bounds to
+the misbehaving client via an X Error packet.
+
+SProcDbeSwapBuffers() swaps data (for correct endianness) before
+handing it off to the real proc.  While doing the swapping, the
+length field is not validated, which can cause memory corruption.
+
+v2: reorder checks to avoid compilers optimizing out checks for overflow
+that happen after we'd already have done the overflowing multiplications.
+
+Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ dbe/dbe.c |   11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/dbe/dbe.c b/dbe/dbe.c
+index 527588c..df2ad5c 100644
+--- a/dbe/dbe.c
++++ b/dbe/dbe.c
+@@ -450,18 +450,20 @@ ProcDbeSwapBuffers(ClientPtr client)
+     DbeSwapInfoPtr swapInfo;
+     xDbeSwapInfo *dbeSwapInfo;
+     int error;
+-    register int i, j;
+-    int nStuff;
++    unsigned int i, j;
++    unsigned int nStuff;
+     REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq);
+     nStuff = stuff->n;          /* use local variable for performance. */
+     if (nStuff == 0) {
++        REQUEST_SIZE_MATCH(xDbeSwapBuffersReq);
+         return Success;
+     }
+     if (nStuff > UINT32_MAX / sizeof(DbeSwapInfoRec))
+         return BadAlloc;
++    REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, nStuff * sizeof(xDbeSwapInfo));
+     /* Get to the swap info appended to the end of the request. */
+     dbeSwapInfo = (xDbeSwapInfo *) &stuff[1];
+@@ -914,13 +916,16 @@ static int
+ SProcDbeSwapBuffers(ClientPtr client)
+ {
+     REQUEST(xDbeSwapBuffersReq);
+-    register int i;
++    unsigned int i;
+     xDbeSwapInfo *pSwapInfo;
+     swaps(&stuff->length);
+     REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq);
+     swapl(&stuff->n);
++    if (stuff->n > UINT32_MAX / sizeof(DbeSwapInfoRec))
++        return BadAlloc;
++    REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, stuff->n * sizeof(xDbeSwapInfo));
+     if (stuff->n != 0) {
+         pSwapInfo = (xDbeSwapInfo *) stuff + 1;
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0008-Xi-unvalidated-lengths-in-Xinput-extension-CVE-2014-.patch b/debian/patches/CVE-2014-8xxx/0008-Xi-unvalidated-lengths-in-Xinput-extension-CVE-2014-.patch
new file mode 100644 (file)
index 0000000..421f070
--- /dev/null
@@ -0,0 +1,551 @@
+From 54fa1f815507cd27280f661be7a64f2f2e6c579e Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 26 Jan 2014 10:54:41 -0800
+Subject: [PATCH 08/33] Xi: unvalidated lengths in Xinput extension
+ [CVE-2014-8095]
+
+Multiple functions in the Xinput extension handling of requests from
+clients failed to check that the length of the request sent by the
+client was large enough to perform all the required operations and
+thus could read or write to memory outside the bounds of the request
+buffer.
+
+This commit includes the creation of a new REQUEST_AT_LEAST_EXTRA_SIZE
+macro in include/dix.h for the common case of needing to ensure a
+request is large enough to include both the request itself and a
+minimum amount of extra data following the request header.
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ Xi/chgdctl.c            |    8 ++++++--
+ Xi/chgfctl.c            |    2 ++
+ Xi/sendexev.c           |    3 +++
+ Xi/xiallowev.c          |    2 ++
+ Xi/xichangecursor.c     |    2 +-
+ Xi/xichangehierarchy.c  |   35 ++++++++++++++++++++++++++++++++---
+ Xi/xigetclientpointer.c |    1 +
+ Xi/xigrabdev.c          |    9 ++++++++-
+ Xi/xipassivegrab.c      |   12 ++++++++++--
+ Xi/xiproperty.c         |   14 ++++++--------
+ Xi/xiquerydevice.c      |    1 +
+ Xi/xiquerypointer.c     |    2 ++
+ Xi/xiselectev.c         |    8 ++++++++
+ Xi/xisetclientpointer.c |    3 ++-
+ Xi/xisetdevfocus.c      |    4 ++++
+ Xi/xiwarppointer.c      |    2 ++
+ include/dix.h           |    4 ++++
+ 17 files changed, 94 insertions(+), 18 deletions(-)
+
+diff --git a/Xi/chgdctl.c b/Xi/chgdctl.c
+index d078aa2..b3ee867 100644
+--- a/Xi/chgdctl.c
++++ b/Xi/chgdctl.c
+@@ -78,7 +78,7 @@ SProcXChangeDeviceControl(ClientPtr client)
+     REQUEST(xChangeDeviceControlReq);
+     swaps(&stuff->length);
+-    REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq);
++    REQUEST_AT_LEAST_EXTRA_SIZE(xChangeDeviceControlReq, sizeof(xDeviceCtl));
+     swaps(&stuff->control);
+     ctl = (xDeviceCtl *) &stuff[1];
+     swaps(&ctl->control);
+@@ -115,7 +115,7 @@ ProcXChangeDeviceControl(ClientPtr client)
+     xDeviceEnableCtl *e;
+     REQUEST(xChangeDeviceControlReq);
+-    REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq);
++    REQUEST_AT_LEAST_EXTRA_SIZE(xChangeDeviceControlReq, sizeof(xDeviceCtl));
+     len = stuff->length - bytes_to_int32(sizeof(xChangeDeviceControlReq));
+     ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);
+@@ -192,6 +192,10 @@ ProcXChangeDeviceControl(ClientPtr client)
+         break;
+     case DEVICE_ENABLE:
+         e = (xDeviceEnableCtl *) &stuff[1];
++        if ((len != bytes_to_int32(sizeof(xDeviceEnableCtl)))) {
++            ret = BadLength;
++            goto out;
++        }
+         if (IsXTestDevice(dev, NULL))
+             status = !Success;
+diff --git a/Xi/chgfctl.c b/Xi/chgfctl.c
+index 6dcf60c..224c2ba 100644
+--- a/Xi/chgfctl.c
++++ b/Xi/chgfctl.c
+@@ -467,6 +467,8 @@ ProcXChangeFeedbackControl(ClientPtr client)
+         xStringFeedbackCtl *f = ((xStringFeedbackCtl *) &stuff[1]);
+         if (client->swapped) {
++            if (len < bytes_to_int32(sizeof(xStringFeedbackCtl)))
++                return BadLength;
+             swaps(&f->num_keysyms);
+         }
+         if (len !=
+diff --git a/Xi/sendexev.c b/Xi/sendexev.c
+index 3c21386..183f88d 100644
+--- a/Xi/sendexev.c
++++ b/Xi/sendexev.c
+@@ -135,6 +135,9 @@ ProcXSendExtensionEvent(ClientPtr client)
+     if (ret != Success)
+         return ret;
++    if (stuff->num_events == 0)
++        return ret;
++
+     /* The client's event type must be one defined by an extension. */
+     first = ((xEvent *) &stuff[1]);
+diff --git a/Xi/xiallowev.c b/Xi/xiallowev.c
+index ebef233..ca263ef 100644
+--- a/Xi/xiallowev.c
++++ b/Xi/xiallowev.c
+@@ -48,6 +48,7 @@ int
+ SProcXIAllowEvents(ClientPtr client)
+ {
+     REQUEST(xXIAllowEventsReq);
++    REQUEST_AT_LEAST_SIZE(xXIAllowEventsReq);
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+@@ -55,6 +56,7 @@ SProcXIAllowEvents(ClientPtr client)
+     if (stuff->length > 3) {
+         xXI2_2AllowEventsReq *req_xi22 = (xXI2_2AllowEventsReq *) stuff;
++        REQUEST_AT_LEAST_SIZE(xXI2_2AllowEventsReq);
+         swapl(&req_xi22->touchid);
+         swapl(&req_xi22->grab_window);
+     }
+diff --git a/Xi/xichangecursor.c b/Xi/xichangecursor.c
+index 7a1bb7a..8e6255b 100644
+--- a/Xi/xichangecursor.c
++++ b/Xi/xichangecursor.c
+@@ -57,11 +57,11 @@ int
+ SProcXIChangeCursor(ClientPtr client)
+ {
+     REQUEST(xXIChangeCursorReq);
++    REQUEST_SIZE_MATCH(xXIChangeCursorReq);
+     swaps(&stuff->length);
+     swapl(&stuff->win);
+     swapl(&stuff->cursor);
+     swaps(&stuff->deviceid);
+-    REQUEST_SIZE_MATCH(xXIChangeCursorReq);
+     return (ProcXIChangeCursor(client));
+ }
+diff --git a/Xi/xichangehierarchy.c b/Xi/xichangehierarchy.c
+index 9e36354..2732445 100644
+--- a/Xi/xichangehierarchy.c
++++ b/Xi/xichangehierarchy.c
+@@ -411,7 +411,7 @@ int
+ ProcXIChangeHierarchy(ClientPtr client)
+ {
+     xXIAnyHierarchyChangeInfo *any;
+-    int required_len = sizeof(xXIChangeHierarchyReq);
++    size_t len;                       /* length of data remaining in request */
+     int rc = Success;
+     int flags[MAXDEVICES] = { 0 };
+@@ -421,21 +421,46 @@ ProcXIChangeHierarchy(ClientPtr client)
+     if (!stuff->num_changes)
+         return rc;
++    if (stuff->length > (INT_MAX >> 2))
++        return BadAlloc;
++    len = (stuff->length << 2) - sizeof(xXIAnyHierarchyChangeInfo);
++
+     any = (xXIAnyHierarchyChangeInfo *) &stuff[1];
+     while (stuff->num_changes--) {
++        if (len < sizeof(xXIAnyHierarchyChangeInfo)) {
++            rc = BadLength;
++            goto unwind;
++        }
++
+         SWAPIF(swaps(&any->type));
+         SWAPIF(swaps(&any->length));
+-        required_len += any->length;
+-        if ((stuff->length * 4) < required_len)
++        if ((any->length > (INT_MAX >> 2)) || (len < (any->length << 2)))
+             return BadLength;
++#define CHANGE_SIZE_MATCH(type) \
++    do { \
++        if ((len < sizeof(type)) || (any->length != (sizeof(type) >> 2))) { \
++            rc = BadLength; \
++            goto unwind; \
++        } \
++    } while(0)
++
+         switch (any->type) {
+         case XIAddMaster:
+         {
+             xXIAddMasterInfo *c = (xXIAddMasterInfo *) any;
++            /* Variable length, due to appended name string */
++            if (len < sizeof(xXIAddMasterInfo)) {
++                rc = BadLength;
++                goto unwind;
++            }
+             SWAPIF(swaps(&c->name_len));
++            if (c->name_len > (len - sizeof(xXIAddMasterInfo))) {
++                rc = BadLength;
++                goto unwind;
++            }
+             rc = add_master(client, c, flags);
+             if (rc != Success)
+@@ -446,6 +471,7 @@ ProcXIChangeHierarchy(ClientPtr client)
+         {
+             xXIRemoveMasterInfo *r = (xXIRemoveMasterInfo *) any;
++            CHANGE_SIZE_MATCH(xXIRemoveMasterInfo);
+             rc = remove_master(client, r, flags);
+             if (rc != Success)
+                 goto unwind;
+@@ -455,6 +481,7 @@ ProcXIChangeHierarchy(ClientPtr client)
+         {
+             xXIDetachSlaveInfo *c = (xXIDetachSlaveInfo *) any;
++            CHANGE_SIZE_MATCH(xXIDetachSlaveInfo);
+             rc = detach_slave(client, c, flags);
+             if (rc != Success)
+                 goto unwind;
+@@ -464,6 +491,7 @@ ProcXIChangeHierarchy(ClientPtr client)
+         {
+             xXIAttachSlaveInfo *c = (xXIAttachSlaveInfo *) any;
++            CHANGE_SIZE_MATCH(xXIAttachSlaveInfo);
+             rc = attach_slave(client, c, flags);
+             if (rc != Success)
+                 goto unwind;
+@@ -471,6 +499,7 @@ ProcXIChangeHierarchy(ClientPtr client)
+             break;
+         }
++        len -= any->length * 4;
+         any = (xXIAnyHierarchyChangeInfo *) ((char *) any + any->length * 4);
+     }
+diff --git a/Xi/xigetclientpointer.c b/Xi/xigetclientpointer.c
+index 3c90d58..306dd39 100644
+--- a/Xi/xigetclientpointer.c
++++ b/Xi/xigetclientpointer.c
+@@ -50,6 +50,7 @@ int
+ SProcXIGetClientPointer(ClientPtr client)
+ {
+     REQUEST(xXIGetClientPointerReq);
++    REQUEST_SIZE_MATCH(xXIGetClientPointerReq);
+     swaps(&stuff->length);
+     swapl(&stuff->win);
+diff --git a/Xi/xigrabdev.c b/Xi/xigrabdev.c
+index 63d95bc..e2a2ae3 100644
+--- a/Xi/xigrabdev.c
++++ b/Xi/xigrabdev.c
+@@ -47,6 +47,11 @@ int
+ SProcXIGrabDevice(ClientPtr client)
+ {
+     REQUEST(xXIGrabDeviceReq);
++    /*
++     * Check here for at least the length of the struct we swap, then
++     * let ProcXIGrabDevice check the full size after we swap mask_len.
++     */
++    REQUEST_AT_LEAST_SIZE(xXIGrabDeviceReq);
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+@@ -71,7 +76,7 @@ ProcXIGrabDevice(ClientPtr client)
+     unsigned int pointer_mode;
+     REQUEST(xXIGrabDeviceReq);
+-    REQUEST_AT_LEAST_SIZE(xXIGrabDeviceReq);
++    REQUEST_FIXED_SIZE(xXIGrabDeviceReq, ((size_t) stuff->mask_len) * 4);
+     ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGrabAccess);
+     if (ret != Success)
+@@ -131,6 +136,7 @@ int
+ SProcXIUngrabDevice(ClientPtr client)
+ {
+     REQUEST(xXIUngrabDeviceReq);
++    REQUEST_SIZE_MATCH(xXIUngrabDeviceReq);
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+@@ -148,6 +154,7 @@ ProcXIUngrabDevice(ClientPtr client)
+     TimeStamp time;
+     REQUEST(xXIUngrabDeviceReq);
++    REQUEST_SIZE_MATCH(xXIUngrabDeviceReq);
+     ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGetAttrAccess);
+     if (ret != Success)
+diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c
+index 700622d..9241ffd 100644
+--- a/Xi/xipassivegrab.c
++++ b/Xi/xipassivegrab.c
+@@ -53,6 +53,7 @@ SProcXIPassiveGrabDevice(ClientPtr client)
+     uint32_t *mods;
+     REQUEST(xXIPassiveGrabDeviceReq);
++    REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq);
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+@@ -63,6 +64,8 @@ SProcXIPassiveGrabDevice(ClientPtr client)
+     swaps(&stuff->mask_len);
+     swaps(&stuff->num_modifiers);
++    REQUEST_FIXED_SIZE(xXIPassiveGrabDeviceReq,
++        ((uint32_t) stuff->mask_len + stuff->num_modifiers) *4);
+     mods = (uint32_t *) &stuff[1] + stuff->mask_len;
+     for (i = 0; i < stuff->num_modifiers; i++, mods++) {
+@@ -92,7 +95,8 @@ ProcXIPassiveGrabDevice(ClientPtr client)
+     int mask_len;
+     REQUEST(xXIPassiveGrabDeviceReq);
+-    REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq);
++    REQUEST_FIXED_SIZE(xXIPassiveGrabDeviceReq,
++        ((uint32_t) stuff->mask_len + stuff->num_modifiers) * 4);
+     if (stuff->deviceid == XIAllDevices)
+         dev = inputInfo.all_devices;
+@@ -252,6 +256,7 @@ SProcXIPassiveUngrabDevice(ClientPtr client)
+     uint32_t *modifiers;
+     REQUEST(xXIPassiveUngrabDeviceReq);
++    REQUEST_AT_LEAST_SIZE(xXIPassiveUngrabDeviceReq);
+     swaps(&stuff->length);
+     swapl(&stuff->grab_window);
+@@ -259,6 +264,8 @@ SProcXIPassiveUngrabDevice(ClientPtr client)
+     swapl(&stuff->detail);
+     swaps(&stuff->num_modifiers);
++    REQUEST_FIXED_SIZE(xXIPassiveUngrabDeviceReq,
++                       ((uint32_t) stuff->num_modifiers) << 2);
+     modifiers = (uint32_t *) &stuff[1];
+     for (i = 0; i < stuff->num_modifiers; i++, modifiers++)
+@@ -277,7 +284,8 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
+     int i, rc;
+     REQUEST(xXIPassiveUngrabDeviceReq);
+-    REQUEST_AT_LEAST_SIZE(xXIPassiveUngrabDeviceReq);
++    REQUEST_FIXED_SIZE(xXIPassiveUngrabDeviceReq,
++                       ((uint32_t) stuff->num_modifiers) << 2);
+     if (stuff->deviceid == XIAllDevices)
+         dev = inputInfo.all_devices;
+diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c
+index 463607d..8e8e4b0 100644
+--- a/Xi/xiproperty.c
++++ b/Xi/xiproperty.c
+@@ -1013,10 +1013,9 @@ int
+ SProcXListDeviceProperties(ClientPtr client)
+ {
+     REQUEST(xListDevicePropertiesReq);
++    REQUEST_SIZE_MATCH(xListDevicePropertiesReq);
+     swaps(&stuff->length);
+-
+-    REQUEST_SIZE_MATCH(xListDevicePropertiesReq);
+     return (ProcXListDeviceProperties(client));
+ }
+@@ -1037,10 +1036,10 @@ int
+ SProcXDeleteDeviceProperty(ClientPtr client)
+ {
+     REQUEST(xDeleteDevicePropertyReq);
++    REQUEST_SIZE_MATCH(xDeleteDevicePropertyReq);
+     swaps(&stuff->length);
+     swapl(&stuff->property);
+-    REQUEST_SIZE_MATCH(xDeleteDevicePropertyReq);
+     return (ProcXDeleteDeviceProperty(client));
+ }
+@@ -1048,13 +1047,13 @@ int
+ SProcXGetDeviceProperty(ClientPtr client)
+ {
+     REQUEST(xGetDevicePropertyReq);
++    REQUEST_SIZE_MATCH(xGetDevicePropertyReq);
+     swaps(&stuff->length);
+     swapl(&stuff->property);
+     swapl(&stuff->type);
+     swapl(&stuff->longOffset);
+     swapl(&stuff->longLength);
+-    REQUEST_SIZE_MATCH(xGetDevicePropertyReq);
+     return (ProcXGetDeviceProperty(client));
+ }
+@@ -1253,11 +1252,10 @@ int
+ SProcXIListProperties(ClientPtr client)
+ {
+     REQUEST(xXIListPropertiesReq);
++    REQUEST_SIZE_MATCH(xXIListPropertiesReq);
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+-
+-    REQUEST_SIZE_MATCH(xXIListPropertiesReq);
+     return (ProcXIListProperties(client));
+ }
+@@ -1279,11 +1277,11 @@ int
+ SProcXIDeleteProperty(ClientPtr client)
+ {
+     REQUEST(xXIDeletePropertyReq);
++    REQUEST_SIZE_MATCH(xXIDeletePropertyReq);
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+     swapl(&stuff->property);
+-    REQUEST_SIZE_MATCH(xXIDeletePropertyReq);
+     return (ProcXIDeleteProperty(client));
+ }
+@@ -1291,6 +1289,7 @@ int
+ SProcXIGetProperty(ClientPtr client)
+ {
+     REQUEST(xXIGetPropertyReq);
++    REQUEST_SIZE_MATCH(xXIGetPropertyReq);
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+@@ -1298,7 +1297,6 @@ SProcXIGetProperty(ClientPtr client)
+     swapl(&stuff->type);
+     swapl(&stuff->offset);
+     swapl(&stuff->len);
+-    REQUEST_SIZE_MATCH(xXIGetPropertyReq);
+     return (ProcXIGetProperty(client));
+ }
+diff --git a/Xi/xiquerydevice.c b/Xi/xiquerydevice.c
+index 4e544f0..67a9a4f 100644
+--- a/Xi/xiquerydevice.c
++++ b/Xi/xiquerydevice.c
+@@ -54,6 +54,7 @@ int
+ SProcXIQueryDevice(ClientPtr client)
+ {
+     REQUEST(xXIQueryDeviceReq);
++    REQUEST_SIZE_MATCH(xXIQueryDeviceReq);
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+diff --git a/Xi/xiquerypointer.c b/Xi/xiquerypointer.c
+index e9bdd42..7ec0c85 100644
+--- a/Xi/xiquerypointer.c
++++ b/Xi/xiquerypointer.c
+@@ -63,6 +63,8 @@ int
+ SProcXIQueryPointer(ClientPtr client)
+ {
+     REQUEST(xXIQueryPointerReq);
++    REQUEST_SIZE_MATCH(xXIQueryPointerReq);
++
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+     swapl(&stuff->win);
+diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c
+index 45a996e..168579f 100644
+--- a/Xi/xiselectev.c
++++ b/Xi/xiselectev.c
+@@ -114,6 +114,7 @@ int
+ SProcXISelectEvents(ClientPtr client)
+ {
+     int i;
++    int len;
+     xXIEventMask *evmask;
+     REQUEST(xXISelectEventsReq);
+@@ -122,10 +123,17 @@ SProcXISelectEvents(ClientPtr client)
+     swapl(&stuff->win);
+     swaps(&stuff->num_masks);
++    len = stuff->length - bytes_to_int32(sizeof(xXISelectEventsReq));
+     evmask = (xXIEventMask *) &stuff[1];
+     for (i = 0; i < stuff->num_masks; i++) {
++        if (len < bytes_to_int32(sizeof(xXIEventMask)))
++            return BadLength;
++        len -= bytes_to_int32(sizeof(xXIEventMask));
+         swaps(&evmask->deviceid);
+         swaps(&evmask->mask_len);
++        if (len < evmask->mask_len)
++            return BadLength;
++        len -= evmask->mask_len;
+         evmask =
+             (xXIEventMask *) (((char *) &evmask[1]) + evmask->mask_len * 4);
+     }
+diff --git a/Xi/xisetclientpointer.c b/Xi/xisetclientpointer.c
+index 38ff51e..24d4a53 100644
+--- a/Xi/xisetclientpointer.c
++++ b/Xi/xisetclientpointer.c
+@@ -51,10 +51,11 @@ int
+ SProcXISetClientPointer(ClientPtr client)
+ {
+     REQUEST(xXISetClientPointerReq);
++    REQUEST_SIZE_MATCH(xXISetClientPointerReq);
++
+     swaps(&stuff->length);
+     swapl(&stuff->win);
+     swaps(&stuff->deviceid);
+-    REQUEST_SIZE_MATCH(xXISetClientPointerReq);
+     return (ProcXISetClientPointer(client));
+ }
+diff --git a/Xi/xisetdevfocus.c b/Xi/xisetdevfocus.c
+index 372ec24..96a9a16 100644
+--- a/Xi/xisetdevfocus.c
++++ b/Xi/xisetdevfocus.c
+@@ -44,6 +44,8 @@ int
+ SProcXISetFocus(ClientPtr client)
+ {
+     REQUEST(xXISetFocusReq);
++    REQUEST_AT_LEAST_SIZE(xXISetFocusReq);
++
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+     swapl(&stuff->focus);
+@@ -56,6 +58,8 @@ int
+ SProcXIGetFocus(ClientPtr client)
+ {
+     REQUEST(xXIGetFocusReq);
++    REQUEST_AT_LEAST_SIZE(xXIGetFocusReq);
++
+     swaps(&stuff->length);
+     swaps(&stuff->deviceid);
+diff --git a/Xi/xiwarppointer.c b/Xi/xiwarppointer.c
+index 3f051f7..780758a 100644
+--- a/Xi/xiwarppointer.c
++++ b/Xi/xiwarppointer.c
+@@ -56,6 +56,8 @@ int
+ SProcXIWarpPointer(ClientPtr client)
+ {
+     REQUEST(xXIWarpPointerReq);
++    REQUEST_SIZE_MATCH(xXIWarpPointerReq);
++
+     swaps(&stuff->length);
+     swapl(&stuff->src_win);
+     swapl(&stuff->dst_win);
+diff --git a/include/dix.h b/include/dix.h
+index e0c6ed8..21176a8 100644
+--- a/include/dix.h
++++ b/include/dix.h
+@@ -74,6 +74,10 @@ SOFTWARE.
+     if ((sizeof(req) >> 2) > client->req_len )\
+          return(BadLength)
++#define REQUEST_AT_LEAST_EXTRA_SIZE(req, extra)  \
++    if (((sizeof(req) + ((uint64_t) extra)) >> 2) > client->req_len ) \
++         return(BadLength)
++
+ #define REQUEST_FIXED_SIZE(req, n)\
+     if (((sizeof(req) >> 2) > client->req_len) || \
+         ((n >> 2) >= client->req_len) || \
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0009-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDList-C.patch b/debian/patches/CVE-2014-8xxx/0009-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDList-C.patch
new file mode 100644 (file)
index 0000000..a5f4b4f
--- /dev/null
@@ -0,0 +1,27 @@
+From 5fdc679e24abb348014164bf53b82a884a5b380d Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 26 Jan 2014 17:18:54 -0800
+Subject: [PATCH 09/33] xcmisc: unvalidated length in SProcXCMiscGetXIDList()
+ [CVE-2014-8096]
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ Xext/xcmisc.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Xext/xcmisc.c b/Xext/xcmisc.c
+index 034bfb6..1e91010 100644
+--- a/Xext/xcmisc.c
++++ b/Xext/xcmisc.c
+@@ -167,6 +167,7 @@ static int
+ SProcXCMiscGetXIDList(ClientPtr client)
+ {
+     REQUEST(xXCMiscGetXIDListReq);
++    REQUEST_SIZE_MATCH(xXCMiscGetXIDListReq);
+     swaps(&stuff->length);
+     swapl(&stuff->count);
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0010-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch b/debian/patches/CVE-2014-8xxx/0010-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch
new file mode 100644 (file)
index 0000000..0242368
--- /dev/null
@@ -0,0 +1,176 @@
+From 362ea7ec75543b694ebc8ab7268a2402e80a10bd Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 26 Jan 2014 19:23:17 -0800
+Subject: [PATCH 10/33] Xv: unvalidated lengths in XVideo extension swapped
+ procs [CVE-2014-8099]
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ Xext/xvdisp.c |   20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+Index: xorg-server-1.16.0/Xext/xvdisp.c
+===================================================================
+--- xorg-server-1.16.0.orig/Xext/xvdisp.c      2014-12-04 11:15:10.726714736 -0500
++++ xorg-server-1.16.0/Xext/xvdisp.c   2014-12-04 11:15:10.722714693 -0500
+@@ -1207,6 +1207,7 @@
+ SProcXvQueryExtension(ClientPtr client)
+ {
+     REQUEST(xvQueryExtensionReq);
++    REQUEST_SIZE_MATCH(xvQueryExtensionReq);
+     swaps(&stuff->length);
+     return XvProcVector[xv_QueryExtension] (client);
+ }
+@@ -1215,6 +1216,7 @@
+ SProcXvQueryAdaptors(ClientPtr client)
+ {
+     REQUEST(xvQueryAdaptorsReq);
++    REQUEST_SIZE_MATCH(xvQueryAdaptorsReq);
+     swaps(&stuff->length);
+     swapl(&stuff->window);
+     return XvProcVector[xv_QueryAdaptors] (client);
+@@ -1224,6 +1226,7 @@
+ SProcXvQueryEncodings(ClientPtr client)
+ {
+     REQUEST(xvQueryEncodingsReq);
++    REQUEST_SIZE_MATCH(xvQueryEncodingsReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     return XvProcVector[xv_QueryEncodings] (client);
+@@ -1233,6 +1236,7 @@
+ SProcXvGrabPort(ClientPtr client)
+ {
+     REQUEST(xvGrabPortReq);
++    REQUEST_SIZE_MATCH(xvGrabPortReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->time);
+@@ -1243,6 +1247,7 @@
+ SProcXvUngrabPort(ClientPtr client)
+ {
+     REQUEST(xvUngrabPortReq);
++    REQUEST_SIZE_MATCH(xvUngrabPortReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->time);
+@@ -1253,6 +1258,7 @@
+ SProcXvPutVideo(ClientPtr client)
+ {
+     REQUEST(xvPutVideoReq);
++    REQUEST_SIZE_MATCH(xvPutVideoReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->drawable);
+@@ -1272,6 +1278,7 @@
+ SProcXvPutStill(ClientPtr client)
+ {
+     REQUEST(xvPutStillReq);
++    REQUEST_SIZE_MATCH(xvPutStillReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->drawable);
+@@ -1291,6 +1298,7 @@
+ SProcXvGetVideo(ClientPtr client)
+ {
+     REQUEST(xvGetVideoReq);
++    REQUEST_SIZE_MATCH(xvGetVideoReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->drawable);
+@@ -1310,6 +1318,7 @@
+ SProcXvGetStill(ClientPtr client)
+ {
+     REQUEST(xvGetStillReq);
++    REQUEST_SIZE_MATCH(xvGetStillReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->drawable);
+@@ -1329,6 +1338,7 @@
+ SProcXvPutImage(ClientPtr client)
+ {
+     REQUEST(xvPutImageReq);
++    REQUEST_AT_LEAST_SIZE(xvPutImageReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->drawable);
+@@ -1352,6 +1362,7 @@
+ SProcXvShmPutImage(ClientPtr client)
+ {
+     REQUEST(xvShmPutImageReq);
++    REQUEST_SIZE_MATCH(xvShmPutImageReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->drawable);
+@@ -1379,6 +1390,7 @@
+ SProcXvSelectVideoNotify(ClientPtr client)
+ {
+     REQUEST(xvSelectVideoNotifyReq);
++    REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq);
+     swaps(&stuff->length);
+     swapl(&stuff->drawable);
+     return XvProcVector[xv_SelectVideoNotify] (client);
+@@ -1388,6 +1400,7 @@
+ SProcXvSelectPortNotify(ClientPtr client)
+ {
+     REQUEST(xvSelectPortNotifyReq);
++    REQUEST_SIZE_MATCH(xvSelectPortNotifyReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     return XvProcVector[xv_SelectPortNotify] (client);
+@@ -1397,6 +1410,7 @@
+ SProcXvStopVideo(ClientPtr client)
+ {
+     REQUEST(xvStopVideoReq);
++    REQUEST_SIZE_MATCH(xvStopVideoReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->drawable);
+@@ -1407,6 +1421,7 @@
+ SProcXvSetPortAttribute(ClientPtr client)
+ {
+     REQUEST(xvSetPortAttributeReq);
++    REQUEST_SIZE_MATCH(xvSetPortAttributeReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->attribute);
+@@ -1418,6 +1433,7 @@
+ SProcXvGetPortAttribute(ClientPtr client)
+ {
+     REQUEST(xvGetPortAttributeReq);
++    REQUEST_SIZE_MATCH(xvGetPortAttributeReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->attribute);
+@@ -1428,6 +1444,7 @@
+ SProcXvQueryBestSize(ClientPtr client)
+ {
+     REQUEST(xvQueryBestSizeReq);
++    REQUEST_SIZE_MATCH(xvQueryBestSizeReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swaps(&stuff->vid_w);
+@@ -1441,6 +1458,7 @@
+ SProcXvQueryPortAttributes(ClientPtr client)
+ {
+     REQUEST(xvQueryPortAttributesReq);
++    REQUEST_SIZE_MATCH(xvQueryPortAttributesReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     return XvProcVector[xv_QueryPortAttributes] (client);
+@@ -1450,6 +1468,7 @@
+ SProcXvQueryImageAttributes(ClientPtr client)
+ {
+     REQUEST(xvQueryImageAttributesReq);
++    REQUEST_SIZE_MATCH(xvQueryImageAttributesReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     swapl(&stuff->id);
+@@ -1462,6 +1481,7 @@
+ SProcXvListImageFormats(ClientPtr client)
+ {
+     REQUEST(xvListImageFormatsReq);
++    REQUEST_SIZE_MATCH(xvListImageFormatsReq);
+     swaps(&stuff->length);
+     swapl(&stuff->port);
+     return XvProcVector[xv_ListImageFormats] (client);
diff --git a/debian/patches/CVE-2014-8xxx/0011-dri3-unvalidated-lengths-in-DRI3-extension-swapped-p.patch b/debian/patches/CVE-2014-8xxx/0011-dri3-unvalidated-lengths-in-DRI3-extension-swapped-p.patch
new file mode 100644 (file)
index 0000000..d8f4b65
--- /dev/null
@@ -0,0 +1,64 @@
+From 45000a2286023e2307fda53e602ab24afd2193be Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 26 Jan 2014 19:28:05 -0800
+Subject: [PATCH 11/33] dri3: unvalidated lengths in DRI3 extension swapped
+ procs [CVE-2014-8103 1/2]
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ dri3/dri3_request.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+Index: xorg-server-1.15.1/dri3/dri3_request.c
+===================================================================
+--- xorg-server-1.15.1.orig/dri3/dri3_request.c        2014-12-04 11:53:23.380277861 -0500
++++ xorg-server-1.15.1/dri3/dri3_request.c     2014-12-04 11:53:23.376277836 -0500
+@@ -311,6 +311,7 @@
+ sproc_dri3_query_version(ClientPtr client)
+ {
+     REQUEST(xDRI3QueryVersionReq);
++    REQUEST_SIZE_MATCH(xDRI3QueryVersionReq);
+     swaps(&stuff->length);
+     swapl(&stuff->majorVersion);
+@@ -322,6 +323,7 @@
+ sproc_dri3_open(ClientPtr client)
+ {
+     REQUEST(xDRI3OpenReq);
++    REQUEST_SIZE_MATCH(xDRI3OpenReq);
+     swaps(&stuff->length);
+     swapl(&stuff->drawable);
+@@ -333,6 +335,7 @@
+ sproc_dri3_pixmap_from_buffer(ClientPtr client)
+ {
+     REQUEST(xDRI3PixmapFromBufferReq);
++    REQUEST_SIZE_MATCH(xDRI3PixmapFromBufferReq);
+     swaps(&stuff->length);
+     swapl(&stuff->pixmap);
+@@ -348,6 +351,7 @@
+ sproc_dri3_buffer_from_pixmap(ClientPtr client)
+ {
+     REQUEST(xDRI3BufferFromPixmapReq);
++    REQUEST_SIZE_MATCH(xDRI3BufferFromPixmapReq);
+     swaps(&stuff->length);
+     swapl(&stuff->pixmap);
+@@ -358,6 +362,7 @@
+ sproc_dri3_fence_from_fd(ClientPtr client)
+ {
+     REQUEST(xDRI3FenceFromFDReq);
++    REQUEST_SIZE_MATCH(xDRI3FenceFromFDReq);
+     swaps(&stuff->length);
+     swapl(&stuff->drawable);
+@@ -369,6 +374,7 @@
+ sproc_dri3_fd_from_fence(ClientPtr client)
+ {
+     REQUEST(xDRI3FDFromFenceReq);
++    REQUEST_SIZE_MATCH(xDRI3FDFromFenceReq);
+     swaps(&stuff->length);
+     swapl(&stuff->drawable);
diff --git a/debian/patches/CVE-2014-8xxx/0012-present-unvalidated-lengths-in-Present-extension-pro.patch b/debian/patches/CVE-2014-8xxx/0012-present-unvalidated-lengths-in-Present-extension-pro.patch
new file mode 100644 (file)
index 0000000..3fca050
--- /dev/null
@@ -0,0 +1,68 @@
+From e4bde707b4972a03ffc7737bb8e70eed830670ca Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 26 Jan 2014 19:33:34 -0800
+Subject: [PATCH 12/33] present: unvalidated lengths in Present extension
+ procs [CVE-2014-8103 2/2]
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+---
+ present/present_request.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/present/present_request.c b/present/present_request.c
+index 835890d..7c53e72 100644
+--- a/present/present_request.c
++++ b/present/present_request.c
+@@ -210,6 +210,7 @@ proc_present_query_capabilities (ClientPtr client)
+     RRCrtcPtr   crtc = NULL;
+     int         r;
++    REQUEST_SIZE_MATCH(xPresentQueryCapabilitiesReq);
+     r = dixLookupWindow(&window, stuff->target, client, DixGetAttrAccess);
+     switch (r) {
+     case Success:
+@@ -254,6 +255,7 @@ static int
+ sproc_present_query_version(ClientPtr client)
+ {
+     REQUEST(xPresentQueryVersionReq);
++    REQUEST_SIZE_MATCH(xPresentQueryVersionReq);
+     swaps(&stuff->length);
+     swapl(&stuff->majorVersion);
+@@ -265,6 +267,7 @@ static int
+ sproc_present_pixmap(ClientPtr client)
+ {
+     REQUEST(xPresentPixmapReq);
++    REQUEST_AT_LEAST_SIZE(xPresentPixmapReq);
+     swaps(&stuff->length);
+     swapl(&stuff->window);
+@@ -284,6 +287,7 @@ static int
+ sproc_present_notify_msc(ClientPtr client)
+ {
+     REQUEST(xPresentNotifyMSCReq);
++    REQUEST_SIZE_MATCH(xPresentNotifyMSCReq);
+     swaps(&stuff->length);
+     swapl(&stuff->window);
+@@ -297,6 +301,7 @@ static int
+ sproc_present_select_input (ClientPtr client)
+ {
+     REQUEST(xPresentSelectInputReq);
++    REQUEST_SIZE_MATCH(xPresentSelectInputReq);
+     swaps(&stuff->length);
+     swapl(&stuff->window);
+@@ -308,6 +313,7 @@ static int
+ sproc_present_query_capabilities (ClientPtr client)
+ {
+     REQUEST(xPresentQueryCapabilitiesReq);
++    REQUEST_SIZE_MATCH(xPresentQueryCapabilitiesReq);
+     swaps(&stuff->length);
+     swapl(&stuff->target);
+     return (*proc_present_vector[stuff->presentReqType]) (client);
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0013-randr-unvalidated-lengths-in-RandR-extension-swapped.patch b/debian/patches/CVE-2014-8xxx/0013-randr-unvalidated-lengths-in-RandR-extension-swapped.patch
new file mode 100644 (file)
index 0000000..c9d8e6d
--- /dev/null
@@ -0,0 +1,51 @@
+From 1322c6ce2a64ca3290ec76144d8443dec50f2183 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 26 Jan 2014 19:38:09 -0800
+Subject: [PATCH 13/33] randr: unvalidated lengths in RandR extension swapped
+ procs [CVE-2014-8101]
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ randr/rrsdispatch.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/randr/rrsdispatch.c b/randr/rrsdispatch.c
+index 08c3b6a..47558cf 100644
+--- a/randr/rrsdispatch.c
++++ b/randr/rrsdispatch.c
+@@ -27,6 +27,7 @@ SProcRRQueryVersion(ClientPtr client)
+ {
+     REQUEST(xRRQueryVersionReq);
++    REQUEST_SIZE_MATCH(xRRQueryVersionReq);
+     swaps(&stuff->length);
+     swapl(&stuff->majorVersion);
+     swapl(&stuff->minorVersion);
+@@ -38,6 +39,7 @@ SProcRRGetScreenInfo(ClientPtr client)
+ {
+     REQUEST(xRRGetScreenInfoReq);
++    REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
+     swaps(&stuff->length);
+     swapl(&stuff->window);
+     return (*ProcRandrVector[stuff->randrReqType]) (client);
+@@ -69,6 +71,7 @@ SProcRRSelectInput(ClientPtr client)
+ {
+     REQUEST(xRRSelectInputReq);
++    REQUEST_SIZE_MATCH(xRRSelectInputReq);
+     swaps(&stuff->length);
+     swapl(&stuff->window);
+     swaps(&stuff->enable);
+@@ -152,6 +155,7 @@ SProcRRConfigureOutputProperty(ClientPtr client)
+ {
+     REQUEST(xRRConfigureOutputPropertyReq);
++    REQUEST_AT_LEAST_SIZE(xRRConfigureOutputPropertyReq);
+     swaps(&stuff->length);
+     swapl(&stuff->output);
+     swapl(&stuff->property);
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0014-render-check-request-size-before-reading-it-CVE-2014.patch b/debian/patches/CVE-2014-8xxx/0014-render-check-request-size-before-reading-it-CVE-2014.patch
new file mode 100644 (file)
index 0000000..b712c7b
--- /dev/null
@@ -0,0 +1,36 @@
+From c12a45abf1ae41f5deca298489f5e76ac54f2121 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+Date: Tue, 28 Oct 2014 10:30:04 +0100
+Subject: [PATCH 14/33] render: check request size before reading it
+ [CVE-2014-8100 1/2]
+
+Otherwise we may be reading outside of the client request.
+
+Signed-off-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ render/render.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/render/render.c b/render/render.c
+index e3031da..200e0c8 100644
+--- a/render/render.c
++++ b/render/render.c
+@@ -276,11 +276,11 @@ ProcRenderQueryVersion(ClientPtr client)
+     REQUEST(xRenderQueryVersionReq);
++    REQUEST_SIZE_MATCH(xRenderQueryVersionReq);
++
+     pRenderClient->major_version = stuff->majorVersion;
+     pRenderClient->minor_version = stuff->minorVersion;
+-    REQUEST_SIZE_MATCH(xRenderQueryVersionReq);
+-
+     if ((stuff->majorVersion * 1000 + stuff->minorVersion) <
+         (SERVER_RENDER_MAJOR_VERSION * 1000 + SERVER_RENDER_MINOR_VERSION)) {
+         rep.majorVersion = stuff->majorVersion;
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0015-render-unvalidated-lengths-in-Render-extn.-swapped-p.patch b/debian/patches/CVE-2014-8xxx/0015-render-unvalidated-lengths-in-Render-extn.-swapped-p.patch
new file mode 100644 (file)
index 0000000..d5cd34e
--- /dev/null
@@ -0,0 +1,140 @@
+From c21e46f03bd2096aaed666d91a3188a5676f6222 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 26 Jan 2014 19:51:29 -0800
+Subject: [PATCH 15/33] render: unvalidated lengths in Render extn. swapped
+ procs [CVE-2014-8100 2/2]
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ render/render.c |   16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/render/render.c b/render/render.c
+index 200e0c8..723f380 100644
+--- a/render/render.c
++++ b/render/render.c
+@@ -1995,7 +1995,7 @@ static int
+ SProcRenderQueryVersion(ClientPtr client)
+ {
+     REQUEST(xRenderQueryVersionReq);
+-
++    REQUEST_SIZE_MATCH(xRenderQueryVersionReq);
+     swaps(&stuff->length);
+     swapl(&stuff->majorVersion);
+     swapl(&stuff->minorVersion);
+@@ -2006,6 +2006,7 @@ static int
+ SProcRenderQueryPictFormats(ClientPtr client)
+ {
+     REQUEST(xRenderQueryPictFormatsReq);
++    REQUEST_SIZE_MATCH(xRenderQueryPictFormatsReq);
+     swaps(&stuff->length);
+     return (*ProcRenderVector[stuff->renderReqType]) (client);
+ }
+@@ -2014,6 +2015,7 @@ static int
+ SProcRenderQueryPictIndexValues(ClientPtr client)
+ {
+     REQUEST(xRenderQueryPictIndexValuesReq);
++    REQUEST_AT_LEAST_SIZE(xRenderQueryPictIndexValuesReq);
+     swaps(&stuff->length);
+     swapl(&stuff->format);
+     return (*ProcRenderVector[stuff->renderReqType]) (client);
+@@ -2029,6 +2031,7 @@ static int
+ SProcRenderCreatePicture(ClientPtr client)
+ {
+     REQUEST(xRenderCreatePictureReq);
++    REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq);
+     swaps(&stuff->length);
+     swapl(&stuff->pid);
+     swapl(&stuff->drawable);
+@@ -2042,6 +2045,7 @@ static int
+ SProcRenderChangePicture(ClientPtr client)
+ {
+     REQUEST(xRenderChangePictureReq);
++    REQUEST_AT_LEAST_SIZE(xRenderChangePictureReq);
+     swaps(&stuff->length);
+     swapl(&stuff->picture);
+     swapl(&stuff->mask);
+@@ -2053,6 +2057,7 @@ static int
+ SProcRenderSetPictureClipRectangles(ClientPtr client)
+ {
+     REQUEST(xRenderSetPictureClipRectanglesReq);
++    REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq);
+     swaps(&stuff->length);
+     swapl(&stuff->picture);
+     swaps(&stuff->xOrigin);
+@@ -2065,6 +2070,7 @@ static int
+ SProcRenderFreePicture(ClientPtr client)
+ {
+     REQUEST(xRenderFreePictureReq);
++    REQUEST_SIZE_MATCH(xRenderFreePictureReq);
+     swaps(&stuff->length);
+     swapl(&stuff->picture);
+     return (*ProcRenderVector[stuff->renderReqType]) (client);
+@@ -2074,6 +2080,7 @@ static int
+ SProcRenderComposite(ClientPtr client)
+ {
+     REQUEST(xRenderCompositeReq);
++    REQUEST_SIZE_MATCH(xRenderCompositeReq);
+     swaps(&stuff->length);
+     swapl(&stuff->src);
+     swapl(&stuff->mask);
+@@ -2093,6 +2100,7 @@ static int
+ SProcRenderScale(ClientPtr client)
+ {
+     REQUEST(xRenderScaleReq);
++    REQUEST_SIZE_MATCH(xRenderScaleReq);
+     swaps(&stuff->length);
+     swapl(&stuff->src);
+     swapl(&stuff->dst);
+@@ -2193,6 +2201,7 @@ static int
+ SProcRenderCreateGlyphSet(ClientPtr client)
+ {
+     REQUEST(xRenderCreateGlyphSetReq);
++    REQUEST_SIZE_MATCH(xRenderCreateGlyphSetReq);
+     swaps(&stuff->length);
+     swapl(&stuff->gsid);
+     swapl(&stuff->format);
+@@ -2203,6 +2212,7 @@ static int
+ SProcRenderReferenceGlyphSet(ClientPtr client)
+ {
+     REQUEST(xRenderReferenceGlyphSetReq);
++    REQUEST_SIZE_MATCH(xRenderReferenceGlyphSetReq);
+     swaps(&stuff->length);
+     swapl(&stuff->gsid);
+     swapl(&stuff->existing);
+@@ -2213,6 +2223,7 @@ static int
+ SProcRenderFreeGlyphSet(ClientPtr client)
+ {
+     REQUEST(xRenderFreeGlyphSetReq);
++    REQUEST_SIZE_MATCH(xRenderFreeGlyphSetReq);
+     swaps(&stuff->length);
+     swapl(&stuff->glyphset);
+     return (*ProcRenderVector[stuff->renderReqType]) (client);
+@@ -2227,6 +2238,7 @@ SProcRenderAddGlyphs(ClientPtr client)
+     xGlyphInfo *gi;
+     REQUEST(xRenderAddGlyphsReq);
++    REQUEST_AT_LEAST_SIZE(xRenderAddGlyphsReq);
+     swaps(&stuff->length);
+     swapl(&stuff->glyphset);
+     swapl(&stuff->nglyphs);
+@@ -2261,6 +2273,7 @@ static int
+ SProcRenderFreeGlyphs(ClientPtr client)
+ {
+     REQUEST(xRenderFreeGlyphsReq);
++    REQUEST_AT_LEAST_SIZE(xRenderFreeGlyphsReq);
+     swaps(&stuff->length);
+     swapl(&stuff->glyphset);
+     SwapRestL(stuff);
+@@ -2278,6 +2291,7 @@ SProcRenderCompositeGlyphs(ClientPtr client)
+     int size;
+     REQUEST(xRenderCompositeGlyphsReq);
++    REQUEST_AT_LEAST_SIZE(xRenderCompositeGlyphsReq);
+     switch (stuff->renderReqType) {
+     default:
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0016-xfixes-unvalidated-length-in-SProcXFixesSelectSelect.patch b/debian/patches/CVE-2014-8xxx/0016-xfixes-unvalidated-length-in-SProcXFixesSelectSelect.patch
new file mode 100644 (file)
index 0000000..e3ff6a3
--- /dev/null
@@ -0,0 +1,27 @@
+From c0308b700e3e0f0b6b1dc350e822b6218d080f1a Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 26 Jan 2014 20:02:20 -0800
+Subject: [PATCH 16/33] xfixes: unvalidated length in
+ SProcXFixesSelectSelectionInput [CVE-2014-8102]
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ xfixes/select.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/xfixes/select.c b/xfixes/select.c
+index c088ed3..e964d58 100644
+--- a/xfixes/select.c
++++ b/xfixes/select.c
+@@ -201,6 +201,7 @@ SProcXFixesSelectSelectionInput(ClientPtr client)
+ {
+     REQUEST(xXFixesSelectSelectionInputReq);
++    REQUEST_SIZE_MATCH(xXFixesSelectSelectionInputReq);
+     swaps(&stuff->length);
+     swapl(&stuff->window);
+     swapl(&stuff->selection);
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0017-Add-request-length-checking-test-cases-for-some-Xinp.patch b/debian/patches/CVE-2014-8xxx/0017-Add-request-length-checking-test-cases-for-some-Xinp.patch
new file mode 100644 (file)
index 0000000..cbad490
--- /dev/null
@@ -0,0 +1,195 @@
+From 0b199c0b23aecfdce53c28ea653c9342217d6f33 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 9 Feb 2014 21:27:27 -0800
+Subject: [PATCH 17/33] Add request length checking test cases for some Xinput
+ 1.x requests
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ configure.ac                             |    1 +
+ test/Makefile.am                         |    2 +-
+ test/xi1/Makefile.am                     |   34 +++++++++
+ test/xi1/protocol-xchangedevicecontrol.c |  122 ++++++++++++++++++++++++++++++
+ 4 files changed, 158 insertions(+), 1 deletion(-)
+ create mode 100644 test/xi1/Makefile.am
+ create mode 100644 test/xi1/protocol-xchangedevicecontrol.c
+
+Index: xorg-server-1.15.1/configure.ac
+===================================================================
+--- xorg-server-1.15.1.orig/configure.ac       2014-12-04 11:54:14.712587810 -0500
++++ xorg-server-1.15.1/configure.ac    2014-12-04 11:54:14.708587787 -0500
+@@ -2553,6 +2553,7 @@
+ hw/kdrive/linux/Makefile
+ hw/kdrive/src/Makefile
+ test/Makefile
++test/xi1/Makefile
+ test/xi2/Makefile
+ xserver.ent
+ xorg-server.pc
+Index: xorg-server-1.15.1/test/xi1/Makefile.am
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ xorg-server-1.15.1/test/xi1/Makefile.am    2014-12-04 11:54:14.708587787 -0500
+@@ -0,0 +1,34 @@
++if ENABLE_UNIT_TESTS
++if HAVE_LD_WRAP
++noinst_PROGRAMS =  \
++      protocol-xchangedevicecontrol
++
++TESTS=$(noinst_PROGRAMS)
++TESTS_ENVIRONMENT = $(XORG_MALLOC_DEBUG_ENV)
++
++AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
++AM_CPPFLAGS = @XORG_INCS@ -I$(srcdir)/../xi2
++TEST_LDADD=../libxservertest.la $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS) $(GLX_SYS_LIBS)
++COMMON_SOURCES=$(srcdir)/../xi2/protocol-common.c
++
++if SPECIAL_DTRACE_OBJECTS
++TEST_LDADD += $(OS_LIB) $(DIX_LIB)
++endif
++
++protocol_xchangedevicecontrol_LDADD=$(TEST_LDADD)
++
++protocol_xchangedevicecontrol_LDFLAGS=$(AM_LDFLAGS) -Wl,-wrap,WriteToClient
++
++protocol_xchangedevicecontrol_SOURCES=$(COMMON_SOURCES) protocol-xchangedevicecontrol.c
++
++else
++# Print that xi1-tests were skipped (exit code 77 for automake test harness)
++TESTS = xi1-tests
++CLEANFILES = $(TESTS)
++
++xi1-tests:
++      @echo 'echo "ld -wrap support required for xi1 unit tests, skipping"' > $@
++      @echo 'exit 77' >> $@
++      $(AM_V_GEN)chmod +x $@
++endif
++endif
+Index: xorg-server-1.15.1/test/xi1/protocol-xchangedevicecontrol.c
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ xorg-server-1.15.1/test/xi1/protocol-xchangedevicecontrol.c        2014-12-04 11:54:14.708587787 -0500
+@@ -0,0 +1,122 @@
++/**
++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
++ *
++ * 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.
++ */
++
++#ifdef HAVE_DIX_CONFIG_H
++#include <dix-config.h>
++#endif
++
++/*
++ * Protocol testing for ChangeDeviceControl request.
++ */
++#include <stdint.h>
++#include <X11/X.h>
++#include <X11/Xproto.h>
++#include <X11/extensions/XIproto.h>
++#include "inputstr.h"
++#include "chgdctl.h"
++
++#include "protocol-common.h"
++
++static ClientRec client_request;
++
++static void
++reply_ChangeDeviceControl(ClientPtr client, int len, char *data, void *userdata)
++{
++    xChangeDeviceControlReply *rep = (xChangeDeviceControlReply *) data;
++
++    if (client->swapped) {
++        swapl(&rep->length);
++        swaps(&rep->sequenceNumber);
++    }
++
++    reply_check_defaults(rep, len, ChangeDeviceControl);
++
++    /* XXX: check status code in reply */
++}
++
++static void
++request_ChangeDeviceControl(ClientPtr client, xChangeDeviceControlReq * req,
++                            xDeviceCtl *ctl, int error)
++{
++    int rc;
++
++    client_request.req_len = req->length;
++    rc = ProcXChangeDeviceControl(&client_request);
++    assert(rc == error);
++
++    /* XXX: ChangeDeviceControl doesn't seem to fill in errorValue to check */
++
++    client_request.swapped = TRUE;
++    swaps(&req->length);
++    swaps(&req->control);
++    swaps(&ctl->length);
++    swaps(&ctl->control);
++    /* XXX: swap other contents of ctl, depending on type */
++    rc = SProcXChangeDeviceControl(&client_request);
++    assert(rc == error);
++}
++
++static unsigned char *data[4096];       /* the request buffer */
++
++static void
++test_ChangeDeviceControl(void)
++{
++    xChangeDeviceControlReq *request = (xChangeDeviceControlReq *) data;
++    xDeviceCtl *control = (xDeviceCtl *) (&request[1]);
++
++    request_init(request, ChangeDeviceControl);
++
++    reply_handler = reply_ChangeDeviceControl;
++
++    client_request = init_client(request->length, request);
++
++    printf("Testing invalid lengths:\n");
++    printf(" -- no control struct\n");
++    request_ChangeDeviceControl(&client_request, request, control, BadLength);
++
++    printf(" -- xDeviceResolutionCtl\n");
++    request_init(request, ChangeDeviceControl);
++    request->control = DEVICE_RESOLUTION;
++    control->length = (sizeof(xDeviceResolutionCtl) >> 2);
++    request->length += control->length - 2;
++    request_ChangeDeviceControl(&client_request, request, control, BadLength);
++
++    printf(" -- xDeviceEnableCtl\n");
++    request_init(request, ChangeDeviceControl);
++    request->control = DEVICE_ENABLE;
++    control->length = (sizeof(xDeviceEnableCtl) >> 2);
++    request->length += control->length - 2;
++    request_ChangeDeviceControl(&client_request, request, control, BadLength);
++
++    /* XXX: Test functionality! */
++}
++
++int
++main(int argc, char **argv)
++{
++    init_simple();
++
++    test_ChangeDeviceControl();
++
++    return 0;
++}
diff --git a/debian/patches/CVE-2014-8xxx/0018-Add-request-length-checking-test-cases-for-some-Xinp.patch b/debian/patches/CVE-2014-8xxx/0018-Add-request-length-checking-test-cases-for-some-Xinp.patch
new file mode 100644 (file)
index 0000000..20ee8ec
--- /dev/null
@@ -0,0 +1,86 @@
+From a8d2ec0a4c11fb5804c073a5b74ba342d59843a8 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 9 Feb 2014 21:28:05 -0800
+Subject: [PATCH 18/33] Add request length checking test cases for some Xinput
+ 2.x requests
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ test/xi2/protocol-xigetclientpointer.c  |    5 +++++
+ test/xi2/protocol-xipassivegrabdevice.c |    8 ++++++++
+ test/xi2/protocol-xiquerypointer.c      |    4 ++++
+ test/xi2/protocol-xiwarppointer.c       |    3 +++
+ 4 files changed, 20 insertions(+)
+
+Index: xorg-server-1.15.1/test/xi2/protocol-xigetclientpointer.c
+===================================================================
+--- xorg-server-1.15.1.orig/test/xi2/protocol-xigetclientpointer.c     2014-12-04 11:54:32.024693177 -0500
++++ xorg-server-1.15.1/test/xi2/protocol-xigetclientpointer.c  2014-12-04 11:54:32.020693152 -0500
+@@ -124,6 +124,11 @@
+     request.win = INVALID_WINDOW_ID;
+     request_XIGetClientPointer(&client_request, &request, BadWindow);
++    printf("Testing invalid length\n");
++    client_request.req_len -= 4;
++    request_XIGetClientPointer(&client_request, &request, BadLength);
++    client_request.req_len += 4;
++
+     test_data.cp_is_set = FALSE;
+     printf("Testing window None, unset ClientPointer.\n");
+Index: xorg-server-1.15.1/test/xi2/protocol-xipassivegrabdevice.c
+===================================================================
+--- xorg-server-1.15.1.orig/test/xi2/protocol-xipassivegrabdevice.c    2014-12-04 11:54:32.024693177 -0500
++++ xorg-server-1.15.1/test/xi2/protocol-xipassivegrabdevice.c 2014-12-04 11:54:32.020693152 -0500
+@@ -139,6 +139,7 @@
+     int modifiers;
+     int mask_len;
++    client_request.req_len = req->length;
+     rc = ProcXIPassiveGrabDevice(&client_request);
+     assert(rc == error);
+@@ -190,6 +191,13 @@
+     request_XIPassiveGrabDevice(&client_request, request, BadDevice,
+                                 request->deviceid);
++    printf("Testing invalid length\n");
++    request->length -= 2;
++    request_XIPassiveGrabDevice(&client_request, request, BadLength,
++                                client_request.errorValue);
++    /* re-init request since swapped length test leaves some values swapped */
++    request_init(request, XIPassiveGrabDevice);
++    request->grab_window = CLIENT_WINDOW_ID;
+     request->deviceid = XIAllMasterDevices;
+     printf("Testing invalid grab types\n");
+Index: xorg-server-1.15.1/test/xi2/protocol-xiquerypointer.c
+===================================================================
+--- xorg-server-1.15.1.orig/test/xi2/protocol-xiquerypointer.c 2014-12-04 11:54:32.024693177 -0500
++++ xorg-server-1.15.1/test/xi2/protocol-xiquerypointer.c      2014-12-04 11:54:32.020693152 -0500
+@@ -201,6 +201,10 @@
+     test_data.dev = devices.mouse;
+     request.deviceid = devices.mouse->id;
+     request_XIQueryPointer(&client_request, &request, Success);
++
++    /* test REQUEST_SIZE_MATCH */
++    client_request.req_len -= 4;
++    request_XIQueryPointer(&client_request, &request, BadLength);
+ }
+ int
+Index: xorg-server-1.15.1/test/xi2/protocol-xiwarppointer.c
+===================================================================
+--- xorg-server-1.15.1.orig/test/xi2/protocol-xiwarppointer.c  2014-12-04 11:54:32.024693177 -0500
++++ xorg-server-1.15.1/test/xi2/protocol-xiwarppointer.c       2014-12-04 11:54:32.020693152 -0500
+@@ -198,6 +198,9 @@
+     request_XIWarpPointer(&client_request, &request, Success);
+     /* FIXME: src_x/y checks */
++
++    client_request.req_len -= 2; /* invalid length */
++    request_XIWarpPointer(&client_request, &request, BadLength);
+ }
+ int
diff --git a/debian/patches/CVE-2014-8xxx/0019-Add-REQUEST_FIXED_SIZE-testcases-to-test-misc.c.patch b/debian/patches/CVE-2014-8xxx/0019-Add-REQUEST_FIXED_SIZE-testcases-to-test-misc.c.patch
new file mode 100644 (file)
index 0000000..972f4a4
--- /dev/null
@@ -0,0 +1,74 @@
+From d4934a8fb4fab54d39c42ca445687985fe4410cd Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun, 9 Feb 2014 22:42:47 -0800
+Subject: [PATCH 19/33] Add REQUEST_FIXED_SIZE testcases to test/misc.c
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ test/misc.c |   37 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+
+diff --git a/test/misc.c b/test/misc.c
+index dd792e6..66330a1 100644
+--- a/test/misc.c
++++ b/test/misc.c
+@@ -28,6 +28,8 @@
+ #include <stdint.h>
+ #include "misc.h"
+ #include "scrnintstr.h"
++#include "dix.h"
++#include "dixstruct.h"
+ ScreenInfo screenInfo;
+@@ -155,11 +157,46 @@ dix_update_desktop_dimensions(void)
+     assert_dimensions(-w2, -h2, w2, h2);
+ }
++static int
++dix_request_fixed_size_overflow(ClientRec *client)
++{
++    xReq req = { 0 };
++
++    client->req_len = req.length = 1;
++    REQUEST_FIXED_SIZE(req, SIZE_MAX);
++    return Success;
++}
++
++static int
++dix_request_fixed_size_match(ClientRec *client)
++{
++    xReq req = { 0 };
++
++    client->req_len = req.length = 9;
++    REQUEST_FIXED_SIZE(req, 30);
++    return Success;
++}
++
++static void
++dix_request_size_checks(void)
++{
++    ClientRec client = { 0 };
++    int rc;
++
++    rc = dix_request_fixed_size_overflow(&client);
++    assert(rc == BadLength);
++
++    rc = dix_request_fixed_size_match(&client);
++    assert(rc == Success);
++}
++
++
+ int
+ main(int argc, char **argv)
+ {
+     dix_version_compare();
+     dix_update_desktop_dimensions();
++    dix_request_size_checks();
+     return 0;
+ }
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0020-glx-Be-more-paranoid-about-variable-length-requests-.patch b/debian/patches/CVE-2014-8xxx/0020-glx-Be-more-paranoid-about-variable-length-requests-.patch
new file mode 100644 (file)
index 0000000..508d9e7
--- /dev/null
@@ -0,0 +1,44 @@
+From 096a5af8e52faafc38ae84dd17bede7ac03a3b83 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:36 -0500
+Subject: [PATCH 20/33] glx: Be more paranoid about variable-length requests
+ [CVE-2014-8093 1/6]
+
+If the size computation routine returns -1 we should just reject the
+request outright.  Clamping it to zero could give an attacker the
+opportunity to also mangle cmdlen in such a way that the subsequent
+length check passes, and the request would get executed, thus passing
+data we wanted to reject to the renderer.
+
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/glxcmds.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: xorg-server-1.15.1/glx/glxcmds.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/glxcmds.c      2014-12-04 11:55:22.293001486 -0500
++++ xorg-server-1.15.1/glx/glxcmds.c   2014-12-04 11:55:22.289001461 -0500
+@@ -2052,7 +2052,7 @@
+             extra = (*entry.varsize) (pc + __GLX_RENDER_HDR_SIZE,
+                                       client->swapped);
+             if (extra < 0) {
+-                extra = 0;
++                return BadLength;
+             }
+             if (cmdlen != __GLX_PAD(entry.bytes + extra)) {
+                 return BadLength;
+@@ -2169,7 +2169,7 @@
+             extra = (*entry.varsize) (pc + __GLX_RENDER_LARGE_HDR_SIZE,
+                                       client->swapped);
+             if (extra < 0) {
+-                extra = 0;
++                return BadLength;
+             }
+             /* large command's header is 4 bytes longer, so add 4 */
+             if (cmdlen != __GLX_PAD(entry.bytes + 4 + extra)) {
diff --git a/debian/patches/CVE-2014-8xxx/0021-glx-Be-more-strict-about-rejecting-invalid-image-siz.patch b/debian/patches/CVE-2014-8xxx/0021-glx-Be-more-strict-about-rejecting-invalid-image-siz.patch
new file mode 100644 (file)
index 0000000..591e88e
--- /dev/null
@@ -0,0 +1,165 @@
+From 74e31c4809dbfe437a3e2a53ee38658da1f3c8ed Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:37 -0500
+Subject: [PATCH 21/33] glx: Be more strict about rejecting invalid image
+ sizes [CVE-2014-8093 2/6]
+
+Before this we'd just clamp the image size to 0, which was just
+hideously stupid; if the parameters were such that they'd overflow an
+integer, you'd allocate a small buffer, then pass huge values into (say)
+ReadPixels, and now you're scribbling over arbitrary server memory.
+
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/singlepix.c     |   16 ++++++++--------
+ glx/singlepixswap.c |   16 ++++++++--------
+ 2 files changed, 16 insertions(+), 16 deletions(-)
+
+diff --git a/glx/singlepix.c b/glx/singlepix.c
+index 506fdaa..8b6c261 100644
+--- a/glx/singlepix.c
++++ b/glx/singlepix.c
+@@ -65,7 +65,7 @@ __glXDisp_ReadPixels(__GLXclientState * cl, GLbyte * pc)
+     lsbFirst = *(GLboolean *) (pc + 25);
+     compsize = __glReadPixels_size(format, type, width, height);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
+     glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst);
+@@ -124,7 +124,7 @@ __glXDisp_GetTexImage(__GLXclientState * cl, GLbyte * pc)
+     compsize =
+         __glGetTexImage_size(target, level, format, type, width, height, depth);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+@@ -218,9 +218,9 @@ GetSeparableFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+     compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     if (compsize2 < 0)
+-        compsize2 = 0;
++        return BadLength;
+     compsize = __GLX_PAD(compsize);
+     compsize2 = __GLX_PAD(compsize2);
+@@ -296,7 +296,7 @@ GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+      */
+     compsize = __glGetTexImage_size(target, 1, format, type, width, height, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+@@ -365,7 +365,7 @@ GetHistogram(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+      */
+     compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+@@ -426,7 +426,7 @@ GetMinmax(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+     compsize = __glGetTexImage_size(target, 1, format, type, 2, 1, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+@@ -491,7 +491,7 @@ GetColorTable(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+      */
+     compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+diff --git a/glx/singlepixswap.c b/glx/singlepixswap.c
+index 8469101..8dc304f 100644
+--- a/glx/singlepixswap.c
++++ b/glx/singlepixswap.c
+@@ -75,7 +75,7 @@ __glXDispSwap_ReadPixels(__GLXclientState * cl, GLbyte * pc)
+     lsbFirst = *(GLboolean *) (pc + 25);
+     compsize = __glReadPixels_size(format, type, width, height);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
+     glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst);
+@@ -144,7 +144,7 @@ __glXDispSwap_GetTexImage(__GLXclientState * cl, GLbyte * pc)
+     compsize =
+         __glGetTexImage_size(target, level, format, type, width, height, depth);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+@@ -252,9 +252,9 @@ GetSeparableFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+     compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     if (compsize2 < 0)
+-        compsize2 = 0;
++        return BadLength;
+     compsize = __GLX_PAD(compsize);
+     compsize2 = __GLX_PAD(compsize2);
+@@ -338,7 +338,7 @@ GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+      */
+     compsize = __glGetTexImage_size(target, 1, format, type, width, height, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+@@ -415,7 +415,7 @@ GetHistogram(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+      */
+     compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+@@ -483,7 +483,7 @@ GetMinmax(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+     compsize = __glGetTexImage_size(target, 1, format, type, 2, 1, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+@@ -554,7 +554,7 @@ GetColorTable(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag)
+      */
+     compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
+     if (compsize < 0)
+-        compsize = 0;
++        return BadLength;
+     glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
+     __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0022-glx-Additional-paranoia-in-__glXGetAnswerBuffer-__GL.patch b/debian/patches/CVE-2014-8xxx/0022-glx-Additional-paranoia-in-__glXGetAnswerBuffer-__GL.patch
new file mode 100644 (file)
index 0000000..3357e9b
--- /dev/null
@@ -0,0 +1,59 @@
+From 902b6a30c660f4b38afd936726071b631ada3fcf Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:38 -0500
+Subject: [PATCH 22/33] glx: Additional paranoia in __glXGetAnswerBuffer /
+ __GLX_GET_ANSWER_BUFFER (v2) [CVE-2014-8093 3/6]
+
+If the computed reply size is negative, something went wrong, treat it
+as an error.
+
+v2: Be more careful about size_t being unsigned (Matthieu Herrb)
+v3: SIZE_MAX not SIZE_T_MAX (Alan Coopersmith)
+
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/indirect_util.c |    7 ++++++-
+ glx/unpack.h        |    3 ++-
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/glx/indirect_util.c b/glx/indirect_util.c
+index 926e57c..de81491 100644
+--- a/glx/indirect_util.c
++++ b/glx/indirect_util.c
+@@ -76,9 +76,14 @@ __glXGetAnswerBuffer(__GLXclientState * cl, size_t required_size,
+     const unsigned mask = alignment - 1;
+     if (local_size < required_size) {
+-        const size_t worst_case_size = required_size + alignment;
++        size_t worst_case_size;
+         intptr_t temp_buf;
++        if (required_size < SIZE_MAX - alignment)
++            worst_case_size = required_size + alignment;
++        else
++            return NULL;
++
+         if (cl->returnBufSize < worst_case_size) {
+             void *temp = realloc(cl->returnBuf, worst_case_size);
+diff --git a/glx/unpack.h b/glx/unpack.h
+index 52fba74..2b1ebcf 100644
+--- a/glx/unpack.h
++++ b/glx/unpack.h
+@@ -83,7 +83,8 @@ extern xGLXSingleReply __glXReply;
+ ** pointer.
+ */
+ #define __GLX_GET_ANSWER_BUFFER(res,cl,size,align)                     \
+-    if ((size) > sizeof(answerBuffer)) {                               \
++    if (size < 0) return BadLength;                                      \
++    else if ((size) > sizeof(answerBuffer)) {                          \
+       int bump;                                                        \
+       if ((cl)->returnBufSize < (size)+(align)) {                      \
+           (cl)->returnBuf = (GLbyte*)realloc((cl)->returnBuf,          \
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0023-glx-Fix-image-size-computation-for-EXT_texture_integ.patch b/debian/patches/CVE-2014-8xxx/0023-glx-Fix-image-size-computation-for-EXT_texture_integ.patch
new file mode 100644 (file)
index 0000000..40dd0af
--- /dev/null
@@ -0,0 +1,59 @@
+From 53e2f52df33e5d45ce070ab2454c5a3d497cc8f6 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:39 -0500
+Subject: [PATCH 23/33] glx: Fix image size computation for
+ EXT_texture_integer [CVE-2014-8098 1/8]
+
+Without this we'd reject the request with BadLength.  Note that some old
+versions of Mesa had a bug in the same place, and would _send_ zero
+bytes of image data; these will now be rejected, correctly.
+
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/rensize.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/glx/rensize.c b/glx/rensize.c
+index ba22d10..9ff73c7 100644
+--- a/glx/rensize.c
++++ b/glx/rensize.c
+@@ -224,6 +224,11 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
+         case GL_ALPHA:
+         case GL_LUMINANCE:
+         case GL_INTENSITY:
++        case GL_RED_INTEGER_EXT:
++        case GL_GREEN_INTEGER_EXT:
++        case GL_BLUE_INTEGER_EXT:
++        case GL_ALPHA_INTEGER_EXT:
++        case GL_LUMINANCE_INTEGER_EXT:
+             elementsPerGroup = 1;
+             break;
+         case GL_422_EXT:
+@@ -234,14 +239,19 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
+         case GL_DEPTH_STENCIL_MESA:
+         case GL_YCBCR_MESA:
+         case GL_LUMINANCE_ALPHA:
++        case GL_LUMINANCE_ALPHA_INTEGER_EXT:
+             elementsPerGroup = 2;
+             break;
+         case GL_RGB:
+         case GL_BGR:
++        case GL_RGB_INTEGER_EXT:
++        case GL_BGR_INTEGER_EXT:
+             elementsPerGroup = 3;
+             break;
+         case GL_RGBA:
+         case GL_BGRA:
++        case GL_RGBA_INTEGER_EXT:
++        case GL_BGRA_INTEGER_EXT:
+         case GL_ABGR_EXT:
+             elementsPerGroup = 4;
+             break;
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0024-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6.patch b/debian/patches/CVE-2014-8xxx/0024-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6.patch
new file mode 100644 (file)
index 0000000..af08e6a
--- /dev/null
@@ -0,0 +1,79 @@
+From 13f54e513024fc8224065515d9c664135aba1848 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:40 -0500
+Subject: [PATCH 24/33] glx: Add safe_{add,mul,pad} (v3) [CVE-2014-8093 4/6]
+
+These are paranoid about integer overflow, and will return -1 if their
+operation would overflow a (signed) integer or if either argument is
+negative.
+
+Note that RenderLarge requests are sized with a uint32_t so in principle
+this could be sketchy there, but dix limits bigreqs to 128M so you
+shouldn't ever notice, and honestly if you're sending more than 2G of
+rendering commands you're already doing something very wrong.
+
+v2: Use INT_MAX for consistency with the rest of the server (jcristau)
+v3: Reject negative arguments (anholt)
+
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/glxserver.h |   41 +++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 41 insertions(+)
+
+Index: xorg-server-1.15.1/glx/glxserver.h
+===================================================================
+--- xorg-server-1.15.1.orig/glx/glxserver.h    2014-12-04 11:55:58.221223978 -0500
++++ xorg-server-1.15.1/glx/glxserver.h 2014-12-04 11:55:58.217223954 -0500
+@@ -230,6 +230,47 @@
+  * Routines for computing the size of variably-sized rendering commands.
+  */
++static _X_INLINE int
++safe_add(int a, int b)
++{
++    if (a < 0 || b < 0)
++        return -1;
++
++    if (INT_MAX - a < b)
++        return -1;
++
++    return a + b;
++}
++
++static _X_INLINE int
++safe_mul(int a, int b)
++{
++    if (a < 0 || b < 0)
++        return -1;
++
++    if (a == 0 || b == 0)
++        return 0;
++
++    if (a > INT_MAX / b)
++        return -1;
++
++    return a * b;
++}
++
++static _X_INLINE int
++safe_pad(int a)
++{
++    int ret;
++
++    if (a < 0)
++        return -1;
++
++    if ((ret = safe_add(a, 3)) < 0)
++        return -1;
++
++    return ret & (GLuint)~3;
++}
++
+ extern int __glXTypeSize(GLenum enm);
+ extern int __glXImageSize(GLenum format, GLenum type,
+                           GLenum target, GLsizei w, GLsizei h, GLsizei d,
diff --git a/debian/patches/CVE-2014-8xxx/0025-glx-Length-checking-for-GLXRender-requests-v2-CVE-20.patch b/debian/patches/CVE-2014-8xxx/0025-glx-Length-checking-for-GLXRender-requests-v2-CVE-20.patch
new file mode 100644 (file)
index 0000000..37c7cd0
--- /dev/null
@@ -0,0 +1,72 @@
+From 02f91446a5446d7287a0fc30aa8b15a1cd29c2cf Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+Date: Mon, 10 Nov 2014 12:13:41 -0500
+Subject: [PATCH 25/33] glx: Length checking for GLXRender requests (v2)
+ [CVE-2014-8098 2/8]
+
+v2:
+Remove can't-happen comparison for cmdlen < 0 (Michal Srb)
+
+Reviewed-by: Adam Jackson <ajax@redhat.com>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Julien Cristau <jcristau@debian.org>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/glxcmds.c |   21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+Index: xorg-server-1.15.1/glx/glxcmds.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/glxcmds.c      2014-12-04 11:56:07.897284200 -0500
++++ xorg-server-1.15.1/glx/glxcmds.c   2014-12-04 11:56:07.893284176 -0500
+@@ -2015,7 +2015,7 @@
+     left = (req->length << 2) - sz_xGLXRenderReq;
+     while (left > 0) {
+         __GLXrenderSizeData entry;
+-        int extra;
++        int extra = 0;
+         __GLXdispatchRenderProcPtr proc;
+         int err;
+@@ -2034,6 +2034,9 @@
+         cmdlen = hdr->length;
+         opcode = hdr->opcode;
++        if (left < cmdlen)
++            return BadLength;
++
+         /*
+          ** Check for core opcodes and grab entry data.
+          */
+@@ -2047,6 +2050,10 @@
+             return __glXError(GLXBadRenderRequest);
+         }
++        if (cmdlen < entry.bytes) {
++            return BadLength;
++        }
++
+         if (entry.varsize) {
+             /* variable size command */
+             extra = (*entry.varsize) (pc + __GLX_RENDER_HDR_SIZE,
+@@ -2054,17 +2061,9 @@
+             if (extra < 0) {
+                 return BadLength;
+             }
+-            if (cmdlen != __GLX_PAD(entry.bytes + extra)) {
+-                return BadLength;
+-            }
+         }
+-        else {
+-            /* constant size command */
+-            if (cmdlen != __GLX_PAD(entry.bytes)) {
+-                return BadLength;
+-            }
+-        }
+-        if (left < cmdlen) {
++
++        if (cmdlen != safe_pad(safe_add(entry.bytes, extra))) {
+             return BadLength;
+         }
diff --git a/debian/patches/CVE-2014-8xxx/0026-glx-Integer-overflow-protection-for-non-generated-re.patch b/debian/patches/CVE-2014-8xxx/0026-glx-Integer-overflow-protection-for-non-generated-re.patch
new file mode 100644 (file)
index 0000000..4a13b3e
--- /dev/null
@@ -0,0 +1,225 @@
+From 84caa119e859d66e1a8368f265c16769e44e3291 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:42 -0500
+Subject: [PATCH 26/33] glx: Integer overflow protection for non-generated
+ render requests (v3) [CVE-2014-8093 5/6]
+
+v2:
+Fix constants in __glXMap2fReqSize (Michal Srb)
+Validate w/h/d for proxy targets too (Keith Packard)
+
+v3:
+Fix Map[12]Size to correctly reject order == 0 (Julien Cristau)
+
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/rensize.c |   77 ++++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 41 insertions(+), 36 deletions(-)
+
+diff --git a/glx/rensize.c b/glx/rensize.c
+index 9ff73c7..d46334a 100644
+--- a/glx/rensize.c
++++ b/glx/rensize.c
+@@ -43,19 +43,11 @@
+   (((a & 0xff000000U)>>24) | ((a & 0xff0000U)>>8) | \
+    ((a & 0xff00U)<<8) | ((a & 0xffU)<<24))
+-static int
+-Map1Size(GLint k, GLint order)
+-{
+-    if (order <= 0 || k < 0)
+-        return -1;
+-    return k * order;
+-}
+-
+ int
+ __glXMap1dReqSize(const GLbyte * pc, Bool swap)
+ {
+     GLenum target;
+-    GLint order, k;
++    GLint order;
+     target = *(GLenum *) (pc + 16);
+     order = *(GLint *) (pc + 20);
+@@ -63,15 +55,16 @@ __glXMap1dReqSize(const GLbyte * pc, Bool swap)
+         target = SWAPL(target);
+         order = SWAPL(order);
+     }
+-    k = __glMap1d_size(target);
+-    return 8 * Map1Size(k, order);
++    if (order < 1)
++        return -1;
++    return safe_mul(8, safe_mul(__glMap1d_size(target), order));
+ }
+ int
+ __glXMap1fReqSize(const GLbyte * pc, Bool swap)
+ {
+     GLenum target;
+-    GLint order, k;
++    GLint order;
+     target = *(GLenum *) (pc + 0);
+     order = *(GLint *) (pc + 12);
+@@ -79,23 +72,24 @@ __glXMap1fReqSize(const GLbyte * pc, Bool swap)
+         target = SWAPL(target);
+         order = SWAPL(order);
+     }
+-    k = __glMap1f_size(target);
+-    return 4 * Map1Size(k, order);
++    if (order < 1)
++        return -1;
++    return safe_mul(4, safe_mul(__glMap1f_size(target), order));
+ }
+ static int
+ Map2Size(int k, int majorOrder, int minorOrder)
+ {
+-    if (majorOrder <= 0 || minorOrder <= 0 || k < 0)
++    if (majorOrder < 1 || minorOrder < 1)
+         return -1;
+-    return k * majorOrder * minorOrder;
++    return safe_mul(k, safe_mul(majorOrder, minorOrder));
+ }
+ int
+ __glXMap2dReqSize(const GLbyte * pc, Bool swap)
+ {
+     GLenum target;
+-    GLint uorder, vorder, k;
++    GLint uorder, vorder;
+     target = *(GLenum *) (pc + 32);
+     uorder = *(GLint *) (pc + 36);
+@@ -105,15 +99,14 @@ __glXMap2dReqSize(const GLbyte * pc, Bool swap)
+         uorder = SWAPL(uorder);
+         vorder = SWAPL(vorder);
+     }
+-    k = __glMap2d_size(target);
+-    return 8 * Map2Size(k, uorder, vorder);
++    return safe_mul(8, Map2Size(__glMap2d_size(target), uorder, vorder));
+ }
+ int
+ __glXMap2fReqSize(const GLbyte * pc, Bool swap)
+ {
+     GLenum target;
+-    GLint uorder, vorder, k;
++    GLint uorder, vorder;
+     target = *(GLenum *) (pc + 0);
+     uorder = *(GLint *) (pc + 12);
+@@ -123,8 +116,7 @@ __glXMap2fReqSize(const GLbyte * pc, Bool swap)
+         uorder = SWAPL(uorder);
+         vorder = SWAPL(vorder);
+     }
+-    k = __glMap2f_size(target);
+-    return 4 * Map2Size(k, uorder, vorder);
++    return safe_mul(4, Map2Size(__glMap2f_size(target), uorder, vorder));
+ }
+ /**
+@@ -175,14 +167,16 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
+     GLint bytesPerElement, elementsPerGroup, groupsPerRow;
+     GLint groupSize, rowSize, padding, imageSize;
++    if (w == 0 || h == 0 || d == 0)
++        return 0;
++
+     if (w < 0 || h < 0 || d < 0 ||
+         (type == GL_BITMAP &&
+          (format != GL_COLOR_INDEX && format != GL_STENCIL_INDEX))) {
+         return -1;
+     }
+-    if (w == 0 || h == 0 || d == 0)
+-        return 0;
++    /* proxy targets have no data */
+     switch (target) {
+     case GL_PROXY_TEXTURE_1D:
+     case GL_PROXY_TEXTURE_2D:
+@@ -199,6 +193,12 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
+         return 0;
+     }
++    /* real data has to have real sizes */
++    if (imageHeight < 0 || rowLength < 0 || skipImages < 0 || skipRows < 0)
++        return -1;
++    if (alignment != 1 && alignment != 2 && alignment != 4 && alignment != 8)
++        return -1;
++
+     if (type == GL_BITMAP) {
+         if (rowLength > 0) {
+             groupsPerRow = rowLength;
+@@ -207,11 +207,14 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
+             groupsPerRow = w;
+         }
+         rowSize = bits_to_bytes(groupsPerRow);
++        if (rowSize < 0)
++            return -1;
+         padding = (rowSize % alignment);
+         if (padding) {
+             rowSize += alignment - padding;
+         }
+-        return ((h + skipRows) * rowSize);
++
++        return safe_mul(safe_add(h, skipRows), rowSize);
+     }
+     else {
+         switch (format) {
+@@ -303,6 +306,7 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
+         default:
+             return -1;
+         }
++        /* known safe by the switches above, not checked */
+         groupSize = bytesPerElement * elementsPerGroup;
+         if (rowLength > 0) {
+             groupsPerRow = rowLength;
+@@ -310,18 +314,21 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
+         else {
+             groupsPerRow = w;
+         }
+-        rowSize = groupsPerRow * groupSize;
++
++        if ((rowSize = safe_mul(groupsPerRow, groupSize)) < 0)
++            return -1;
+         padding = (rowSize % alignment);
+         if (padding) {
+             rowSize += alignment - padding;
+         }
+-        if (imageHeight > 0) {
+-            imageSize = (imageHeight + skipRows) * rowSize;
+-        }
+-        else {
+-            imageSize = (h + skipRows) * rowSize;
+-        }
+-        return ((d + skipImages) * imageSize);
++
++        if (imageHeight > 0)
++            h = imageHeight;
++        h = safe_add(h, skipRows);
++
++        imageSize = safe_mul(h, rowSize);
++
++        return safe_mul(safe_add(d, skipImages), imageSize);
+     }
+ }
+@@ -445,9 +452,7 @@ __glXSeparableFilter2DReqSize(const GLbyte * pc, Bool swap)
+     /* XXX Should rowLength be used for either or both image? */
+     image1size = __glXImageSize(format, type, 0, w, 1, 1,
+                                 0, rowLength, 0, 0, alignment);
+-    image1size = __GLX_PAD(image1size);
+     image2size = __glXImageSize(format, type, 0, h, 1, 1,
+                                 0, rowLength, 0, 0, alignment);
+-    return image1size + image2size;
+-
++    return safe_add(safe_pad(image1size), image2size);
+ }
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0027-glx-Length-checking-for-RenderLarge-requests-v2-CVE-.patch b/debian/patches/CVE-2014-8xxx/0027-glx-Length-checking-for-RenderLarge-requests-v2-CVE-.patch
new file mode 100644 (file)
index 0000000..38e325e
--- /dev/null
@@ -0,0 +1,155 @@
+From 6070d07a25b33e9630f8dbbde1d1df6f25164286 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:43 -0500
+Subject: [PATCH 27/33] glx: Length checking for RenderLarge requests (v2)
+ [CVE-2014-8098 3/8]
+
+This is a half-measure until we start passing request length into the
+varsize function, but it's better than the nothing we had before.
+
+v2: Verify that there's at least a large render header's worth of
+dataBytes (Julien Cristau)
+
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/glxcmds.c |   57 ++++++++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 34 insertions(+), 23 deletions(-)
+
+Index: xorg-server-1.15.1/glx/glxcmds.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/glxcmds.c      2014-12-04 11:56:22.749376887 -0500
++++ xorg-server-1.15.1/glx/glxcmds.c   2014-12-04 11:56:22.745376862 -0500
+@@ -2099,6 +2099,8 @@
+     __GLX_DECLARE_SWAP_VARIABLES;
++    REQUEST_AT_LEAST_SIZE(xGLXRenderLargeReq);
++
+     req = (xGLXRenderLargeReq *) pc;
+     if (client->swapped) {
+         __GLX_SWAP_SHORT(&req->length);
+@@ -2114,12 +2116,14 @@
+         __glXResetLargeCommandStatus(cl);
+         return error;
+     }
++    if (safe_pad(req->dataBytes) < 0)
++        return BadLength;
+     dataBytes = req->dataBytes;
+     /*
+      ** Check the request length.
+      */
+-    if ((req->length << 2) != __GLX_PAD(dataBytes) + sz_xGLXRenderLargeReq) {
++    if ((req->length << 2) != safe_pad(dataBytes) + sz_xGLXRenderLargeReq) {
+         client->errorValue = req->length;
+         /* Reset in case this isn't 1st request. */
+         __glXResetLargeCommandStatus(cl);
+@@ -2129,7 +2133,7 @@
+     if (cl->largeCmdRequestsSoFar == 0) {
+         __GLXrenderSizeData entry;
+-        int extra;
++        int extra = 0;
+         size_t cmdlen;
+         int err;
+@@ -2142,13 +2146,17 @@
+             return __glXError(GLXBadLargeRequest);
+         }
++        if (dataBytes < __GLX_RENDER_LARGE_HDR_SIZE)
++            return BadLength;
++
+         hdr = (__GLXrenderLargeHeader *) pc;
+         if (client->swapped) {
+             __GLX_SWAP_INT(&hdr->length);
+             __GLX_SWAP_INT(&hdr->opcode);
+         }
+-        cmdlen = hdr->length;
+         opcode = hdr->opcode;
++        if ((cmdlen = safe_pad(hdr->length)) < 0)
++            return BadLength;
+         /*
+          ** Check for core opcodes and grab entry data.
+@@ -2170,17 +2178,13 @@
+             if (extra < 0) {
+                 return BadLength;
+             }
+-            /* large command's header is 4 bytes longer, so add 4 */
+-            if (cmdlen != __GLX_PAD(entry.bytes + 4 + extra)) {
+-                return BadLength;
+-            }
+         }
+-        else {
+-            /* constant size command */
+-            if (cmdlen != __GLX_PAD(entry.bytes + 4)) {
+-                return BadLength;
+-            }
++
++        /* the +4 is safe because we know entry.bytes is small */
++        if (cmdlen != safe_pad(safe_add(entry.bytes + 4, extra))) {
++            return BadLength;
+         }
++
+         /*
+          ** Make enough space in the buffer, then copy the entire request.
+          */
+@@ -2207,6 +2211,7 @@
+          ** We are receiving subsequent (i.e. not the first) requests of a
+          ** multi request command.
+          */
++        int bytesSoFar; /* including this packet */
+         /*
+          ** Check the request number and the total request count.
+@@ -2225,11 +2230,18 @@
+         /*
+          ** Check that we didn't get too much data.
+          */
+-        if ((cl->largeCmdBytesSoFar + dataBytes) > cl->largeCmdBytesTotal) {
++        if ((bytesSoFar = safe_add(cl->largeCmdBytesSoFar, dataBytes)) < 0) {
+             client->errorValue = dataBytes;
+             __glXResetLargeCommandStatus(cl);
+             return __glXError(GLXBadLargeRequest);
+         }
++
++        if (bytesSoFar > cl->largeCmdBytesTotal) {
++            client->errorValue = dataBytes;
++            __glXResetLargeCommandStatus(cl);
++            return __glXError(GLXBadLargeRequest);
++        }
++
+         memcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar, pc, dataBytes);
+         cl->largeCmdBytesSoFar += dataBytes;
+         cl->largeCmdRequestsSoFar++;
+@@ -2241,17 +2253,16 @@
+              ** This is the last request; it must have enough bytes to complete
+              ** the command.
+              */
+-            /* NOTE: the two pad macros have been added below; they are needed
+-             ** because the client library pads the total byte count, but not
+-             ** the per-request byte counts.  The Protocol Encoding says the
+-             ** total byte count should not be padded, so a proposal will be 
+-             ** made to the ARB to relax the padding constraint on the total 
+-             ** byte count, thus preserving backward compatibility.  Meanwhile, 
+-             ** the padding done below fixes a bug that did not allow
+-             ** large commands of odd sizes to be accepted by the server.
++            /* NOTE: the pad macro below is needed because the client library
++             ** pads the total byte count, but not the per-request byte counts.
++             ** The Protocol Encoding says the total byte count should not be
++             ** padded, so a proposal will be made to the ARB to relax the
++             ** padding constraint on the total byte count, thus preserving
++             ** backward compatibility.  Meanwhile, the padding done below
++             ** fixes a bug that did not allow large commands of odd sizes to
++             ** be accepted by the server.
+              */
+-            if (__GLX_PAD(cl->largeCmdBytesSoFar) !=
+-                __GLX_PAD(cl->largeCmdBytesTotal)) {
++            if (safe_pad(cl->largeCmdBytesSoFar) != cl->largeCmdBytesTotal) {
+                 client->errorValue = dataBytes;
+                 __glXResetLargeCommandStatus(cl);
+                 return __glXError(GLXBadLargeRequest);
diff --git a/debian/patches/CVE-2014-8xxx/0028-glx-Top-level-length-checking-for-swapped-VendorPriv.patch b/debian/patches/CVE-2014-8xxx/0028-glx-Top-level-length-checking-for-swapped-VendorPriv.patch
new file mode 100644 (file)
index 0000000..d42c840
--- /dev/null
@@ -0,0 +1,51 @@
+From efb3efd096edba7551e4e0e40bea522651211303 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:44 -0500
+Subject: [PATCH 28/33] glx: Top-level length checking for swapped
+ VendorPrivate requests [CVE-2014-8098 4/8]
+
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/glxcmdsswap.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/glx/glxcmdsswap.c b/glx/glxcmdsswap.c
+index 5d179f3..9ec1222 100644
+--- a/glx/glxcmdsswap.c
++++ b/glx/glxcmdsswap.c
+@@ -958,11 +958,13 @@ __glXDispSwap_RenderLarge(__GLXclientState * cl, GLbyte * pc)
+ int
+ __glXDispSwap_VendorPrivate(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     xGLXVendorPrivateReq *req;
+     GLint vendorcode;
+     __GLXdispatchVendorPrivProcPtr proc;
+     __GLX_DECLARE_SWAP_VARIABLES;
++    REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq);
+     req = (xGLXVendorPrivateReq *) pc;
+     __GLX_SWAP_SHORT(&req->length);
+@@ -985,11 +987,13 @@ __glXDispSwap_VendorPrivate(__GLXclientState * cl, GLbyte * pc)
+ int
+ __glXDispSwap_VendorPrivateWithReply(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     xGLXVendorPrivateWithReplyReq *req;
+     GLint vendorcode;
+     __GLXdispatchVendorPrivProcPtr proc;
+     __GLX_DECLARE_SWAP_VARIABLES;
++    REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateWithReplyReq);
+     req = (xGLXVendorPrivateWithReplyReq *) pc;
+     __GLX_SWAP_SHORT(&req->length);
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0029-glx-Request-length-checks-for-SetClientInfoARB-CVE-2.patch b/debian/patches/CVE-2014-8xxx/0029-glx-Request-length-checks-for-SetClientInfoARB-CVE-2.patch
new file mode 100644 (file)
index 0000000..19ea8c6
--- /dev/null
@@ -0,0 +1,74 @@
+From 554e382ba7aae961ca88c75edb1caffb5d00e9f6 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:45 -0500
+Subject: [PATCH 29/33] glx: Request length checks for SetClientInfoARB
+ [CVE-2014-8098 5/8]
+
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/clientinfo.c |   19 ++++++++++++++-----
+ 1 file changed, 14 insertions(+), 5 deletions(-)
+
+diff --git a/glx/clientinfo.c b/glx/clientinfo.c
+index 4aaa4c9..c5fef30 100644
+--- a/glx/clientinfo.c
++++ b/glx/clientinfo.c
+@@ -33,18 +33,21 @@ static int
+ set_client_info(__GLXclientState * cl, xGLXSetClientInfoARBReq * req,
+                 unsigned bytes_per_version)
+ {
++    ClientPtr client = cl->client;
+     char *gl_extensions;
+     char *glx_extensions;
++    REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq);
++
+     /* Verify that the size of the packet matches the size inferred from the
+      * sizes specified for the various fields.
+      */
+-    const unsigned expected_size = sz_xGLXSetClientInfoARBReq
+-        + (req->numVersions * bytes_per_version)
+-        + __GLX_PAD(req->numGLExtensionBytes)
+-        + __GLX_PAD(req->numGLXExtensionBytes);
++    int size = sz_xGLXSetClientInfoARBReq;
++    size = safe_add(size, safe_mul(req->numVersions, bytes_per_version));
++    size = safe_add(size, safe_pad(req->numGLExtensionBytes));
++    size = safe_add(size, safe_pad(req->numGLXExtensionBytes));
+-    if (req->length != (expected_size / 4))
++    if (size < 0 || req->length != (size / 4))
+         return BadLength;
+     /* Verify that the actual length of the GL extension string matches what's
+@@ -80,8 +83,11 @@ __glXDisp_SetClientInfoARB(__GLXclientState * cl, GLbyte * pc)
+ int
+ __glXDispSwap_SetClientInfoARB(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     xGLXSetClientInfoARBReq *req = (xGLXSetClientInfoARBReq *) pc;
++    REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq);
++
+     req->length = bswap_16(req->length);
+     req->numVersions = bswap_32(req->numVersions);
+     req->numGLExtensionBytes = bswap_32(req->numGLExtensionBytes);
+@@ -99,8 +105,11 @@ __glXDisp_SetClientInfo2ARB(__GLXclientState * cl, GLbyte * pc)
+ int
+ __glXDispSwap_SetClientInfo2ARB(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     xGLXSetClientInfoARBReq *req = (xGLXSetClientInfoARBReq *) pc;
++    REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq);
++
+     req->length = bswap_16(req->length);
+     req->numVersions = bswap_32(req->numVersions);
+     req->numGLExtensionBytes = bswap_32(req->numGLExtensionBytes);
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0030-glx-Length-checking-for-non-generated-vendor-private.patch b/debian/patches/CVE-2014-8xxx/0030-glx-Length-checking-for-non-generated-vendor-private.patch
new file mode 100644 (file)
index 0000000..c91b25c
--- /dev/null
@@ -0,0 +1,45 @@
+From 475a39f6ac52aa2dc1babfece38d73da1a478731 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:46 -0500
+Subject: [PATCH 30/33] glx: Length-checking for non-generated vendor private
+ requests [CVE-2014-8098 6/8]
+
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/indirect_program.c |    2 ++
+ glx/swap_interval.c    |    2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/glx/indirect_program.c b/glx/indirect_program.c
+index cda139e..5caee7b 100644
+--- a/glx/indirect_program.c
++++ b/glx/indirect_program.c
+@@ -56,6 +56,8 @@ DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc,
+     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+     ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateWithReplyReq, 8);
++
+     pc += __GLX_VENDPRIV_HDR_SIZE;
+     if (cx != NULL) {
+         GLenum target;
+diff --git a/glx/swap_interval.c b/glx/swap_interval.c
+index 17bc992..2320550 100644
+--- a/glx/swap_interval.c
++++ b/glx/swap_interval.c
+@@ -46,6 +46,8 @@ DoSwapInterval(__GLXclientState * cl, GLbyte * pc, int do_swap)
+     __GLXcontext *cx;
+     GLint interval;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 4);
++
+     cx = __glXLookupContextByTag(cl, tag);
+     if ((cx == NULL) || (cx->pGlxScreen == NULL)) {
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0031-glx-Length-checking-for-non-generated-single-request.patch b/debian/patches/CVE-2014-8xxx/0031-glx-Length-checking-for-non-generated-single-request.patch
new file mode 100644 (file)
index 0000000..496f108
--- /dev/null
@@ -0,0 +1,561 @@
+From 4ab40b2b60f4f841f75250e1e60c1624d8212cd4 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:47 -0500
+Subject: [PATCH 31/33] glx: Length checking for non-generated single requests
+ (v2) [CVE-2014-8098 7/8]
+
+v2:
+Fix single versus vendor-private length checking for ARB_imaging subset
+extensions. (Julien Cristau)
+
+v3:
+Fix single versus vendor-private length checking for ARB_imaging subset
+extensions. (Julien Cristau)
+
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Julien Cristau <jcristau@debian.org>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/indirect_texture_compression.c |    4 ++++
+ glx/single2.c                      |   23 +++++++++++++++----
+ glx/single2swap.c                  |   19 ++++++++++++----
+ glx/singlepix.c                    |   44 ++++++++++++++++++++++++------------
+ glx/singlepixswap.c                |   34 ++++++++++++++++++++++++----
+ 5 files changed, 95 insertions(+), 29 deletions(-)
+
+Index: xorg-server-1.15.1/glx/indirect_texture_compression.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/indirect_texture_compression.c 2014-12-04 11:56:48.021535287 -0500
++++ xorg-server-1.15.1/glx/indirect_texture_compression.c      2014-12-04 11:56:48.017535262 -0500
+@@ -43,6 +43,8 @@
+     __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
+     ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 8);
++
+     pc += __GLX_SINGLE_HDR_SIZE;
+     if (cx != NULL) {
+         const GLenum target = *(GLenum *) (pc + 0);
+@@ -85,6 +87,8 @@
+         __glXForceCurrent(cl, bswap_32(req->contextTag), &error);
+     ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 8);
++
+     pc += __GLX_SINGLE_HDR_SIZE;
+     if (cx != NULL) {
+         const GLenum target = (GLenum) bswap_32(*(int *) (pc + 0));
+Index: xorg-server-1.15.1/glx/single2.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/single2.c      2014-12-04 11:56:48.021535287 -0500
++++ xorg-server-1.15.1/glx/single2.c   2014-12-04 11:56:48.017535262 -0500
+@@ -45,11 +45,14 @@
+ int
+ __glXDisp_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     GLsizei size;
+     GLenum type;
+     __GLXcontext *cx;
+     int error;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 8);
++
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+         return error;
+@@ -76,10 +79,13 @@
+ int
+ __glXDisp_SelectBuffer(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     __GLXcontext *cx;
+     GLsizei size;
+     int error;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
++
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+         return error;
+@@ -104,7 +110,7 @@
+ int
+ __glXDisp_RenderMode(__GLXclientState * cl, GLbyte * pc)
+ {
+-    ClientPtr client;
++    ClientPtr client = cl->client;
+     xGLXRenderModeReply reply;
+     __GLXcontext *cx;
+     GLint nitems = 0, retBytes = 0, retval, newModeCheck;
+@@ -112,6 +118,8 @@
+     GLenum newMode;
+     int error;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
++
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+         return error;
+@@ -188,7 +196,6 @@
+      ** selection array, as per the API for glRenderMode itself.
+      */
+  noChangeAllowed:;
+-    client = cl->client;
+     reply = (xGLXRenderModeReply) {
+         .type = X_Reply,
+         .sequenceNumber = client->sequence,
+@@ -207,9 +214,12 @@
+ int
+ __glXDisp_Flush(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     __GLXcontext *cx;
+     int error;
++    REQUEST_SIZE_MATCH(xGLXSingleReq);
++
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+         return error;
+@@ -223,10 +233,12 @@
+ int
+ __glXDisp_Finish(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     __GLXcontext *cx;
+-    ClientPtr client;
+     int error;
++    REQUEST_SIZE_MATCH(xGLXSingleReq);
++
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+         return error;
+@@ -317,7 +329,7 @@
+ int
+ DoGetString(__GLXclientState * cl, GLbyte * pc, GLboolean need_swap)
+ {
+-    ClientPtr client;
++    ClientPtr client = cl->client;
+     __GLXcontext *cx;
+     GLenum name;
+     const char *string;
+@@ -327,6 +339,8 @@
+     char *buf = NULL, *buf1 = NULL;
+     GLint length = 0;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
++
+     /* If the client has the opposite byte order, swap the contextTag and
+      * the name.
+      */
+@@ -343,7 +357,6 @@
+     pc += __GLX_SINGLE_HDR_SIZE;
+     name = *(GLenum *) (pc + 0);
+     string = (const char *) glGetString(name);
+-    client = cl->client;
+     if (string == NULL)
+         string = "";
+Index: xorg-server-1.15.1/glx/single2swap.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/single2swap.c  2014-12-04 11:56:48.021535287 -0500
++++ xorg-server-1.15.1/glx/single2swap.c       2014-12-04 11:56:48.017535262 -0500
+@@ -41,6 +41,7 @@
+ int
+ __glXDispSwap_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     GLsizei size;
+     GLenum type;
+@@ -48,6 +49,8 @@
+     __GLXcontext *cx;
+     int error;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 8);
++
+     __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+@@ -77,12 +80,15 @@
+ int
+ __glXDispSwap_SelectBuffer(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     __GLXcontext *cx;
+     GLsizei size;
+     __GLX_DECLARE_SWAP_VARIABLES;
+     int error;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
++
+     __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+@@ -109,7 +115,7 @@
+ int
+ __glXDispSwap_RenderMode(__GLXclientState * cl, GLbyte * pc)
+ {
+-    ClientPtr client;
++    ClientPtr client = cl->client;
+     __GLXcontext *cx;
+     xGLXRenderModeReply reply;
+     GLint nitems = 0, retBytes = 0, retval, newModeCheck;
+@@ -120,6 +126,8 @@
+     __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+     int error;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
++
+     __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+@@ -200,7 +208,6 @@
+      ** selection array, as per the API for glRenderMode itself.
+      */
+  noChangeAllowed:;
+-    client = cl->client;
+     reply = (xGLXRenderModeReply) {
+         .type = X_Reply,
+         .sequenceNumber = client->sequence,
+@@ -224,11 +231,14 @@
+ int
+ __glXDispSwap_Flush(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     __GLXcontext *cx;
+     int error;
+     __GLX_DECLARE_SWAP_VARIABLES;
++    REQUEST_SIZE_MATCH(xGLXSingleReq);
++
+     __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+@@ -243,12 +253,14 @@
+ int
+ __glXDispSwap_Finish(__GLXclientState * cl, GLbyte * pc)
+ {
++    ClientPtr client = cl->client;
+     __GLXcontext *cx;
+-    ClientPtr client;
+     int error;
+     __GLX_DECLARE_SWAP_VARIABLES;
++    REQUEST_SIZE_MATCH(xGLXSingleReq);
++
+     __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+@@ -260,7 +272,6 @@
+     cx->hasUnflushedCommands = GL_FALSE;
+     /* Send empty reply packet to indicate finish is finished */
+-    client = cl->client;
+     __GLX_BEGIN_REPLY(0);
+     __GLX_PUT_RETVAL(0);
+     __GLX_SWAP_REPLY_HEADER();
+Index: xorg-server-1.15.1/glx/singlepix.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/singlepix.c    2014-12-04 11:56:48.021535287 -0500
++++ xorg-server-1.15.1/glx/singlepix.c 2014-12-04 11:56:48.017535262 -0500
+@@ -51,6 +51,8 @@
+     int error;
+     char *answer, answerBuffer[200];
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 28);
++
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+         return error;
+@@ -100,6 +102,8 @@
+     char *answer, answerBuffer[200];
+     GLint width = 0, height = 0, depth = 1;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 20);
++
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+         return error;
+@@ -157,6 +161,8 @@
+     GLubyte answerBuffer[200];
+     char *answer;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
++
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+         return error;
+@@ -217,15 +223,13 @@
+     compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
+     compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1);
+-    if (compsize < 0)
++    if ((compsize = safe_pad(compsize)) < 0)
+         return BadLength;
+-    if (compsize2 < 0)
++    if ((compsize2 = safe_pad(compsize2)) < 0)
+         return BadLength;
+-    compsize = __GLX_PAD(compsize);
+-    compsize2 = __GLX_PAD(compsize2);
+     glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes);
+-    __GLX_GET_ANSWER_BUFFER(answer, cl, compsize + compsize2, 1);
++    __GLX_GET_ANSWER_BUFFER(answer, cl, safe_add(compsize, compsize2), 1);
+     __glXClearErrorOccured();
+     glGetSeparableFilter(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                          *(GLenum *) (pc + 8), answer, answer + compsize, NULL);
+@@ -249,7 +253,8 @@
+ __glXDisp_GetSeparableFilter(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetSeparableFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -257,7 +262,8 @@
+ __glXDisp_GetSeparableFilterEXT(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetSeparableFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
+@@ -323,7 +329,8 @@
+ __glXDisp_GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetConvolutionFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -331,7 +338,8 @@
+ __glXDisp_GetConvolutionFilterEXT(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetConvolutionFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
+@@ -390,7 +398,8 @@
+ __glXDisp_GetHistogram(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -398,7 +407,8 @@
+ __glXDisp_GetHistogramEXT(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
+@@ -450,7 +460,8 @@
+ __glXDisp_GetMinmax(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetMinmax(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -458,7 +469,8 @@
+ __glXDisp_GetMinmaxEXT(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetMinmax(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
+@@ -517,7 +529,8 @@
+ __glXDisp_GetColorTable(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetColorTable(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -525,6 +538,7 @@
+ __glXDisp_GetColorTableSGI(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+-
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetColorTable(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
+Index: xorg-server-1.15.1/glx/singlepixswap.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/singlepixswap.c        2014-12-04 11:56:48.021535287 -0500
++++ xorg-server-1.15.1/glx/singlepixswap.c     2014-12-04 11:56:48.017535262 -0500
+@@ -53,6 +53,8 @@
+     int error;
+     char *answer, answerBuffer[200];
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 28);
++
+     __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+@@ -114,6 +116,8 @@
+     char *answer, answerBuffer[200];
+     GLint width = 0, height = 0, depth = 1;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 20);
++
+     __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+@@ -184,6 +188,8 @@
+     __GLX_DECLARE_SWAP_VARIABLES;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
++
+     __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
+     cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+     if (!cx) {
+@@ -251,15 +257,13 @@
+     compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
+     compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1);
+-    if (compsize < 0)
++    if ((compsize = safe_pad(compsize)) < 0)
+         return BadLength;
+-    if (compsize2 < 0)
++    if ((compsize2 = safe_pad(compsize2)) < 0)
+         return BadLength;
+-    compsize = __GLX_PAD(compsize);
+-    compsize2 = __GLX_PAD(compsize2);
+     glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes);
+-    __GLX_GET_ANSWER_BUFFER(answer, cl, compsize + compsize2, 1);
++    __GLX_GET_ANSWER_BUFFER(answer, cl, safe_add(compsize, compsize2), 1);
+     __glXClearErrorOccured();
+     glGetSeparableFilter(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4),
+                          *(GLenum *) (pc + 8), answer, answer + compsize, NULL);
+@@ -285,7 +289,9 @@
+ __glXDispSwap_GetSeparableFilter(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetSeparableFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -293,7 +299,9 @@
+ __glXDispSwap_GetSeparableFilterEXT(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetSeparableFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
+@@ -367,7 +375,9 @@
+ __glXDispSwap_GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetConvolutionFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -375,7 +385,9 @@
+ __glXDispSwap_GetConvolutionFilterEXT(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetConvolutionFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
+@@ -441,7 +453,9 @@
+ __glXDispSwap_GetHistogram(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -449,7 +463,9 @@
+ __glXDispSwap_GetHistogramEXT(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
+@@ -507,7 +523,9 @@
+ __glXDispSwap_GetMinmax(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetMinmax(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -515,7 +533,9 @@
+ __glXDispSwap_GetMinmaxEXT(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetMinmax(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
+@@ -581,7 +601,9 @@
+ __glXDispSwap_GetColorTable(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
+     return GetColorTable(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+ }
+@@ -589,6 +611,8 @@
+ __glXDispSwap_GetColorTableSGI(__GLXclientState * cl, GLbyte * pc)
+ {
+     const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
++    ClientPtr client = cl->client;
++    REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
+     return GetColorTable(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+ }
diff --git a/debian/patches/CVE-2014-8xxx/0032-glx-Pass-remaining-request-length-into-varsize-v2-CV.patch b/debian/patches/CVE-2014-8xxx/0032-glx-Pass-remaining-request-length-into-varsize-v2-CV.patch
new file mode 100644 (file)
index 0000000..131b0d6
--- /dev/null
@@ -0,0 +1,913 @@
+From d303d79450436a1ef04252c2a7e36870c2506f38 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Mon, 10 Nov 2014 12:13:48 -0500
+Subject: [PATCH 32/33] glx: Pass remaining request length into ->varsize (v2)
+ [CVE-2014-8098 8/8]
+
+v2: Handle more multiplies in indirect_reqsize.c (Julien Cristau)
+
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/glxcmds.c          |    7 +-
+ glx/glxserver.h        |    2 +-
+ glx/indirect_reqsize.c |  142 +++++++++++++++++++------------------
+ glx/indirect_reqsize.h |  181 +++++++++++++++++++++++++++++-------------------
+ glx/rensize.c          |   27 +++++---
+ 5 files changed, 205 insertions(+), 154 deletions(-)
+
+Index: xorg-server-1.15.1/glx/glxcmds.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/glxcmds.c      2014-12-04 11:57:06.345650678 -0500
++++ xorg-server-1.15.1/glx/glxcmds.c   2014-12-04 11:57:06.337650627 -0500
+@@ -2057,7 +2057,8 @@
+         if (entry.varsize) {
+             /* variable size command */
+             extra = (*entry.varsize) (pc + __GLX_RENDER_HDR_SIZE,
+-                                      client->swapped);
++                                      client->swapped,
++                                      left - __GLX_RENDER_HDR_SIZE);
+             if (extra < 0) {
+                 return BadLength;
+             }
+@@ -2134,6 +2135,7 @@
+     if (cl->largeCmdRequestsSoFar == 0) {
+         __GLXrenderSizeData entry;
+         int extra = 0;
++        int left = (req->length << 2) - sz_xGLXRenderLargeReq;
+         size_t cmdlen;
+         int err;
+@@ -2174,7 +2176,8 @@
+              ** will be in the 1st request, so it's okay to do this.
+              */
+             extra = (*entry.varsize) (pc + __GLX_RENDER_LARGE_HDR_SIZE,
+-                                      client->swapped);
++                                      client->swapped,
++                                      left - __GLX_RENDER_LARGE_HDR_SIZE);
+             if (extra < 0) {
+                 return BadLength;
+             }
+Index: xorg-server-1.15.1/glx/glxserver.h
+===================================================================
+--- xorg-server-1.15.1.orig/glx/glxserver.h    2014-12-04 11:57:06.345650678 -0500
++++ xorg-server-1.15.1/glx/glxserver.h 2014-12-04 11:57:06.337650627 -0500
+@@ -179,7 +179,7 @@
+ /*
+  * Tables for computing the size of each rendering command.
+  */
+-typedef int (*gl_proto_size_func) (const GLbyte *, Bool);
++typedef int (*gl_proto_size_func) (const GLbyte *, Bool, int);
+ typedef struct {
+     int bytes;
+Index: xorg-server-1.15.1/glx/indirect_reqsize.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/indirect_reqsize.c     2014-12-04 11:57:06.345650678 -0500
++++ xorg-server-1.15.1/glx/indirect_reqsize.c  2014-12-04 11:57:06.337650627 -0500
+@@ -31,24 +31,22 @@
+ #include "indirect_size.h"
+ #include "indirect_reqsize.h"
+-#define __GLX_PAD(x)  (((x) + 3) & ~3)
+-
+ #if defined(__CYGWIN__) || defined(__MINGW32__)
+ #undef HAVE_ALIAS
+ #endif
+ #ifdef HAVE_ALIAS
+ #define ALIAS2(from,to) \
+-    GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \
++    GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap, int reqlen ) \
+         __attribute__ ((alias( # to )));
+ #define ALIAS(from,to) ALIAS2( from, __glX ## to ## ReqSize )
+ #else
+ #define ALIAS(from,to) \
+-    GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \
+-    { return __glX ## to ## ReqSize( pc, swap ); }
++    GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap, int reqlen ) \
++    { return __glX ## to ## ReqSize( pc, swap, reqlen ); }
+ #endif
+ int
+-__glXCallListsReqSize(const GLbyte * pc, Bool swap)
++__glXCallListsReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei n = *(GLsizei *) (pc + 0);
+     GLenum type = *(GLenum *) (pc + 4);
+@@ -60,11 +58,11 @@
+     }
+     compsize = __glCallLists_size(type);
+-    return __GLX_PAD((compsize * n));
++    return safe_pad(safe_mul(compsize, n));
+ }
+ int
+-__glXBitmapReqSize(const GLbyte * pc, Bool swap)
++__glXBitmapReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -88,7 +86,7 @@
+ }
+ int
+-__glXFogfvReqSize(const GLbyte * pc, Bool swap)
++__glXFogfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 0);
+     GLsizei compsize;
+@@ -98,11 +96,11 @@
+     }
+     compsize = __glFogfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXLightfvReqSize(const GLbyte * pc, Bool swap)
++__glXLightfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 4);
+     GLsizei compsize;
+@@ -112,11 +110,11 @@
+     }
+     compsize = __glLightfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXLightModelfvReqSize(const GLbyte * pc, Bool swap)
++__glXLightModelfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 0);
+     GLsizei compsize;
+@@ -126,11 +124,11 @@
+     }
+     compsize = __glLightModelfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXMaterialfvReqSize(const GLbyte * pc, Bool swap)
++__glXMaterialfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 4);
+     GLsizei compsize;
+@@ -140,11 +138,11 @@
+     }
+     compsize = __glMaterialfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXPolygonStippleReqSize(const GLbyte * pc, Bool swap)
++__glXPolygonStippleReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -164,7 +162,7 @@
+ }
+ int
+-__glXTexParameterfvReqSize(const GLbyte * pc, Bool swap)
++__glXTexParameterfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 4);
+     GLsizei compsize;
+@@ -174,11 +172,11 @@
+     }
+     compsize = __glTexParameterfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXTexImage1DReqSize(const GLbyte * pc, Bool swap)
++__glXTexImage1DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -206,7 +204,7 @@
+ }
+ int
+-__glXTexImage2DReqSize(const GLbyte * pc, Bool swap)
++__glXTexImage2DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -236,7 +234,7 @@
+ }
+ int
+-__glXTexEnvfvReqSize(const GLbyte * pc, Bool swap)
++__glXTexEnvfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 4);
+     GLsizei compsize;
+@@ -246,11 +244,11 @@
+     }
+     compsize = __glTexEnvfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXTexGendvReqSize(const GLbyte * pc, Bool swap)
++__glXTexGendvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 4);
+     GLsizei compsize;
+@@ -260,11 +258,11 @@
+     }
+     compsize = __glTexGendv_size(pname);
+-    return __GLX_PAD((compsize * 8));
++    return safe_pad(safe_mul(compsize, 8));
+ }
+ int
+-__glXTexGenfvReqSize(const GLbyte * pc, Bool swap)
++__glXTexGenfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 4);
+     GLsizei compsize;
+@@ -274,11 +272,11 @@
+     }
+     compsize = __glTexGenfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXPixelMapfvReqSize(const GLbyte * pc, Bool swap)
++__glXPixelMapfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei mapsize = *(GLsizei *) (pc + 4);
+@@ -286,11 +284,11 @@
+         mapsize = bswap_32(mapsize);
+     }
+-    return __GLX_PAD((mapsize * 4));
++    return safe_pad(safe_mul(mapsize, 4));
+ }
+ int
+-__glXPixelMapusvReqSize(const GLbyte * pc, Bool swap)
++__glXPixelMapusvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei mapsize = *(GLsizei *) (pc + 4);
+@@ -298,11 +296,11 @@
+         mapsize = bswap_32(mapsize);
+     }
+-    return __GLX_PAD((mapsize * 2));
++    return safe_pad(safe_mul(mapsize, 2));
+ }
+ int
+-__glXDrawPixelsReqSize(const GLbyte * pc, Bool swap)
++__glXDrawPixelsReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -330,7 +328,7 @@
+ }
+ int
+-__glXPrioritizeTexturesReqSize(const GLbyte * pc, Bool swap)
++__glXPrioritizeTexturesReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei n = *(GLsizei *) (pc + 0);
+@@ -338,11 +336,11 @@
+         n = bswap_32(n);
+     }
+-    return __GLX_PAD((n * 4) + (n * 4));
++    return safe_pad(safe_add(safe_mul(n, 4), safe_mul(n, 4)));
+ }
+ int
+-__glXTexSubImage1DReqSize(const GLbyte * pc, Bool swap)
++__glXTexSubImage1DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -370,7 +368,7 @@
+ }
+ int
+-__glXTexSubImage2DReqSize(const GLbyte * pc, Bool swap)
++__glXTexSubImage2DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -400,7 +398,7 @@
+ }
+ int
+-__glXColorTableReqSize(const GLbyte * pc, Bool swap)
++__glXColorTableReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -428,7 +426,7 @@
+ }
+ int
+-__glXColorTableParameterfvReqSize(const GLbyte * pc, Bool swap)
++__glXColorTableParameterfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 4);
+     GLsizei compsize;
+@@ -438,11 +436,11 @@
+     }
+     compsize = __glColorTableParameterfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXColorSubTableReqSize(const GLbyte * pc, Bool swap)
++__glXColorSubTableReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -470,7 +468,7 @@
+ }
+ int
+-__glXConvolutionFilter1DReqSize(const GLbyte * pc, Bool swap)
++__glXConvolutionFilter1DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -498,7 +496,7 @@
+ }
+ int
+-__glXConvolutionFilter2DReqSize(const GLbyte * pc, Bool swap)
++__glXConvolutionFilter2DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = 0;
+@@ -528,7 +526,7 @@
+ }
+ int
+-__glXConvolutionParameterfvReqSize(const GLbyte * pc, Bool swap)
++__glXConvolutionParameterfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 4);
+     GLsizei compsize;
+@@ -538,11 +536,11 @@
+     }
+     compsize = __glConvolutionParameterfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXTexImage3DReqSize(const GLbyte * pc, Bool swap)
++__glXTexImage3DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = *(GLint *) (pc + 8);
+@@ -579,7 +577,7 @@
+ }
+ int
+-__glXTexSubImage3DReqSize(const GLbyte * pc, Bool swap)
++__glXTexSubImage3DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLint row_length = *(GLint *) (pc + 4);
+     GLint image_height = *(GLint *) (pc + 8);
+@@ -613,7 +611,7 @@
+ }
+ int
+-__glXCompressedTexImage1DReqSize(const GLbyte * pc, Bool swap)
++__glXCompressedTexImage1DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei imageSize = *(GLsizei *) (pc + 20);
+@@ -621,11 +619,11 @@
+         imageSize = bswap_32(imageSize);
+     }
+-    return __GLX_PAD(imageSize);
++    return safe_pad(imageSize);
+ }
+ int
+-__glXCompressedTexImage2DReqSize(const GLbyte * pc, Bool swap)
++__glXCompressedTexImage2DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei imageSize = *(GLsizei *) (pc + 24);
+@@ -633,11 +631,11 @@
+         imageSize = bswap_32(imageSize);
+     }
+-    return __GLX_PAD(imageSize);
++    return safe_pad(imageSize);
+ }
+ int
+-__glXCompressedTexImage3DReqSize(const GLbyte * pc, Bool swap)
++__glXCompressedTexImage3DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei imageSize = *(GLsizei *) (pc + 28);
+@@ -645,11 +643,11 @@
+         imageSize = bswap_32(imageSize);
+     }
+-    return __GLX_PAD(imageSize);
++    return safe_pad(imageSize);
+ }
+ int
+-__glXCompressedTexSubImage3DReqSize(const GLbyte * pc, Bool swap)
++__glXCompressedTexSubImage3DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei imageSize = *(GLsizei *) (pc + 36);
+@@ -657,11 +655,11 @@
+         imageSize = bswap_32(imageSize);
+     }
+-    return __GLX_PAD(imageSize);
++    return safe_pad(imageSize);
+ }
+ int
+-__glXPointParameterfvReqSize(const GLbyte * pc, Bool swap)
++__glXPointParameterfvReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum pname = *(GLenum *) (pc + 0);
+     GLsizei compsize;
+@@ -671,11 +669,11 @@
+     }
+     compsize = __glPointParameterfv_size(pname);
+-    return __GLX_PAD((compsize * 4));
++    return safe_pad(safe_mul(compsize, 4));
+ }
+ int
+-__glXDrawBuffersReqSize(const GLbyte * pc, Bool swap)
++__glXDrawBuffersReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei n = *(GLsizei *) (pc + 0);
+@@ -683,11 +681,11 @@
+         n = bswap_32(n);
+     }
+-    return __GLX_PAD((n * 4));
++    return safe_pad(safe_mul(n, 4));
+ }
+ int
+-__glXProgramStringARBReqSize(const GLbyte * pc, Bool swap)
++__glXProgramStringARBReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei len = *(GLsizei *) (pc + 8);
+@@ -695,11 +693,11 @@
+         len = bswap_32(len);
+     }
+-    return __GLX_PAD(len);
++    return safe_pad(len);
+ }
+ int
+-__glXVertexAttribs1dvNVReqSize(const GLbyte * pc, Bool swap)
++__glXVertexAttribs1dvNVReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei n = *(GLsizei *) (pc + 4);
+@@ -707,11 +705,11 @@
+         n = bswap_32(n);
+     }
+-    return __GLX_PAD((n * 8));
++    return safe_pad(safe_mul(n, 8));
+ }
+ int
+-__glXVertexAttribs2dvNVReqSize(const GLbyte * pc, Bool swap)
++__glXVertexAttribs2dvNVReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei n = *(GLsizei *) (pc + 4);
+@@ -719,11 +717,11 @@
+         n = bswap_32(n);
+     }
+-    return __GLX_PAD((n * 16));
++    return safe_pad(safe_mul(n, 16));
+ }
+ int
+-__glXVertexAttribs3dvNVReqSize(const GLbyte * pc, Bool swap)
++__glXVertexAttribs3dvNVReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei n = *(GLsizei *) (pc + 4);
+@@ -731,11 +729,11 @@
+         n = bswap_32(n);
+     }
+-    return __GLX_PAD((n * 24));
++    return safe_pad(safe_mul(n, 24));
+ }
+ int
+-__glXVertexAttribs3fvNVReqSize(const GLbyte * pc, Bool swap)
++__glXVertexAttribs3fvNVReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei n = *(GLsizei *) (pc + 4);
+@@ -743,11 +741,11 @@
+         n = bswap_32(n);
+     }
+-    return __GLX_PAD((n * 12));
++    return safe_pad(safe_mul(n, 12));
+ }
+ int
+-__glXVertexAttribs3svNVReqSize(const GLbyte * pc, Bool swap)
++__glXVertexAttribs3svNVReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei n = *(GLsizei *) (pc + 4);
+@@ -755,11 +753,11 @@
+         n = bswap_32(n);
+     }
+-    return __GLX_PAD((n * 6));
++    return safe_pad(safe_mul(n, 6));
+ }
+ int
+-__glXVertexAttribs4dvNVReqSize(const GLbyte * pc, Bool swap)
++__glXVertexAttribs4dvNVReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLsizei n = *(GLsizei *) (pc + 4);
+@@ -767,7 +765,7 @@
+         n = bswap_32(n);
+     }
+-    return __GLX_PAD((n * 32));
++    return safe_pad(safe_mul(n, 32));
+ }
+ ALIAS(Fogiv, Fogfv)
+Index: xorg-server-1.15.1/glx/indirect_reqsize.h
+===================================================================
+--- xorg-server-1.15.1.orig/glx/indirect_reqsize.h     2014-12-04 11:57:06.345650678 -0500
++++ xorg-server-1.15.1/glx/indirect_reqsize.h  2014-12-04 11:57:06.337650627 -0500
+@@ -36,115 +36,156 @@
+ #define PURE
+ #endif
+-extern PURE _X_HIDDEN int __glXCallListsReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXBitmapReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXFogfvReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXFogivReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXLightfvReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXLightivReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXLightModelfvReqSize(const GLbyte * pc,
+-                                                   Bool swap);
+-extern PURE _X_HIDDEN int __glXLightModelivReqSize(const GLbyte * pc,
+-                                                   Bool swap);
+-extern PURE _X_HIDDEN int __glXMaterialfvReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXMaterialivReqSize(const GLbyte * pc, Bool swap);
++extern PURE _X_HIDDEN int __glXCallListsReqSize(const GLbyte * pc, Bool swap,
++                                                int reqlen);
++extern PURE _X_HIDDEN int __glXBitmapReqSize(const GLbyte * pc, Bool swap,
++                                             int reqlen);
++extern PURE _X_HIDDEN int __glXFogfvReqSize(const GLbyte * pc, Bool swap,
++                                            int reqlen);
++extern PURE _X_HIDDEN int __glXFogivReqSize(const GLbyte * pc, Bool swap,
++                                            int reqlen);
++extern PURE _X_HIDDEN int __glXLightfvReqSize(const GLbyte * pc, Bool swap,
++                                              int reqlen);
++extern PURE _X_HIDDEN int __glXLightivReqSize(const GLbyte * pc, Bool swap,
++                                              int reqlen);
++extern PURE _X_HIDDEN int __glXLightModelfvReqSize(const GLbyte * pc, Bool swap,
++                                                   int reqlen);
++extern PURE _X_HIDDEN int __glXLightModelivReqSize(const GLbyte * pc, Bool swap,
++                                                   int reqlen);
++extern PURE _X_HIDDEN int __glXMaterialfvReqSize(const GLbyte * pc, Bool swap,
++                                                 int reqlen);
++extern PURE _X_HIDDEN int __glXMaterialivReqSize(const GLbyte * pc, Bool swap,
++                                                 int reqlen);
+ extern PURE _X_HIDDEN int __glXPolygonStippleReqSize(const GLbyte * pc,
+-                                                     Bool swap);
++                                                     Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXTexParameterfvReqSize(const GLbyte * pc,
+-                                                     Bool swap);
++                                                     Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXTexParameterivReqSize(const GLbyte * pc,
+-                                                     Bool swap);
+-extern PURE _X_HIDDEN int __glXTexImage1DReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXTexImage2DReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXTexEnvfvReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXTexEnvivReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXTexGendvReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXTexGenfvReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXTexGenivReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXMap1dReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXMap1fReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXMap2dReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXMap2fReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXPixelMapfvReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXPixelMapuivReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXPixelMapusvReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXDrawPixelsReqSize(const GLbyte * pc, Bool swap);
+-extern PURE _X_HIDDEN int __glXDrawArraysReqSize(const GLbyte * pc, Bool swap);
++                                                     Bool swap, int reqlen);
++extern PURE _X_HIDDEN int __glXTexImage1DReqSize(const GLbyte * pc, Bool swap,
++                                                 int reqlen);
++extern PURE _X_HIDDEN int __glXTexImage2DReqSize(const GLbyte * pc, Bool swap,
++                                                 int reqlen);
++extern PURE _X_HIDDEN int __glXTexEnvfvReqSize(const GLbyte * pc, Bool swap,
++                                               int reqlen);
++extern PURE _X_HIDDEN int __glXTexEnvivReqSize(const GLbyte * pc, Bool swap,
++                                               int reqlen);
++extern PURE _X_HIDDEN int __glXTexGendvReqSize(const GLbyte * pc, Bool swap,
++                                               int reqlen);
++extern PURE _X_HIDDEN int __glXTexGenfvReqSize(const GLbyte * pc, Bool swap,
++                                               int reqlen);
++extern PURE _X_HIDDEN int __glXTexGenivReqSize(const GLbyte * pc, Bool swap,
++                                               int reqlen);
++extern PURE _X_HIDDEN int __glXMap1dReqSize(const GLbyte * pc, Bool swap,
++                                            int reqlen);
++extern PURE _X_HIDDEN int __glXMap1fReqSize(const GLbyte * pc, Bool swap,
++                                            int reqlen);
++extern PURE _X_HIDDEN int __glXMap2dReqSize(const GLbyte * pc, Bool swap,
++                                            int reqlen);
++extern PURE _X_HIDDEN int __glXMap2fReqSize(const GLbyte * pc, Bool swap,
++                                            int reqlen);
++extern PURE _X_HIDDEN int __glXPixelMapfvReqSize(const GLbyte * pc, Bool swap,
++                                                 int reqlen);
++extern PURE _X_HIDDEN int __glXPixelMapuivReqSize(const GLbyte * pc, Bool swap,
++                                                  int reqlen);
++extern PURE _X_HIDDEN int __glXPixelMapusvReqSize(const GLbyte * pc, Bool swap,
++                                                  int reqlen);
++extern PURE _X_HIDDEN int __glXDrawPixelsReqSize(const GLbyte * pc, Bool swap,
++                                                 int reqlen);
++extern PURE _X_HIDDEN int __glXDrawArraysReqSize(const GLbyte * pc, Bool swap,
++                                                 int reqlen);
+ extern PURE _X_HIDDEN int __glXPrioritizeTexturesReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXTexSubImage1DReqSize(const GLbyte * pc,
+-                                                    Bool swap);
++                                                    Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXTexSubImage2DReqSize(const GLbyte * pc,
+-                                                    Bool swap);
+-extern PURE _X_HIDDEN int __glXColorTableReqSize(const GLbyte * pc, Bool swap);
++                                                    Bool swap, int reqlen);
++extern PURE _X_HIDDEN int __glXColorTableReqSize(const GLbyte * pc, Bool swap,
++                                                 int reqlen);
+ extern PURE _X_HIDDEN int __glXColorTableParameterfvReqSize(const GLbyte * pc,
+-                                                            Bool swap);
++                                                            Bool swap,
++                                                            int reqlen);
+ extern PURE _X_HIDDEN int __glXColorTableParameterivReqSize(const GLbyte * pc,
+-                                                            Bool swap);
++                                                            Bool swap,
++                                                            int reqlen);
+ extern PURE _X_HIDDEN int __glXColorSubTableReqSize(const GLbyte * pc,
+-                                                    Bool swap);
++                                                    Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXConvolutionFilter1DReqSize(const GLbyte * pc,
+-                                                          Bool swap);
++                                                          Bool swap,
++                                                          int reqlen);
+ extern PURE _X_HIDDEN int __glXConvolutionFilter2DReqSize(const GLbyte * pc,
+-                                                          Bool swap);
++                                                          Bool swap,
++                                                          int reqlen);
+ extern PURE _X_HIDDEN int __glXConvolutionParameterfvReqSize(const GLbyte * pc,
+-                                                             Bool swap);
++                                                             Bool swap,
++                                                             int reqlen);
+ extern PURE _X_HIDDEN int __glXConvolutionParameterivReqSize(const GLbyte * pc,
+-                                                             Bool swap);
++                                                             Bool swap,
++                                                             int reqlen);
+ extern PURE _X_HIDDEN int __glXSeparableFilter2DReqSize(const GLbyte * pc,
+-                                                        Bool swap);
+-extern PURE _X_HIDDEN int __glXTexImage3DReqSize(const GLbyte * pc, Bool swap);
++                                                        Bool swap, int reqlen);
++extern PURE _X_HIDDEN int __glXTexImage3DReqSize(const GLbyte * pc, Bool swap,
++                                                 int reqlen);
+ extern PURE _X_HIDDEN int __glXTexSubImage3DReqSize(const GLbyte * pc,
+-                                                    Bool swap);
++                                                    Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXCompressedTexImage1DReqSize(const GLbyte * pc,
+-                                                           Bool swap);
++                                                           Bool swap,
++                                                           int reqlen);
+ extern PURE _X_HIDDEN int __glXCompressedTexImage2DReqSize(const GLbyte * pc,
+-                                                           Bool swap);
++                                                           Bool swap,
++                                                           int reqlen);
+ extern PURE _X_HIDDEN int __glXCompressedTexImage3DReqSize(const GLbyte * pc,
+-                                                           Bool swap);
++                                                           Bool swap,
++                                                           int reqlen);
+ extern PURE _X_HIDDEN int __glXCompressedTexSubImage1DReqSize(const GLbyte * pc,
+-                                                              Bool swap);
++                                                              Bool swap,
++                                                              int reqlen);
+ extern PURE _X_HIDDEN int __glXCompressedTexSubImage2DReqSize(const GLbyte * pc,
+-                                                              Bool swap);
++                                                              Bool swap,
++                                                              int reqlen);
+ extern PURE _X_HIDDEN int __glXCompressedTexSubImage3DReqSize(const GLbyte * pc,
+-                                                              Bool swap);
++                                                              Bool swap,
++                                                              int reqlen);
+ extern PURE _X_HIDDEN int __glXPointParameterfvReqSize(const GLbyte * pc,
+-                                                       Bool swap);
++                                                       Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXPointParameterivReqSize(const GLbyte * pc,
+-                                                       Bool swap);
+-extern PURE _X_HIDDEN int __glXDrawBuffersReqSize(const GLbyte * pc, Bool swap);
++                                                       Bool swap, int reqlen);
++extern PURE _X_HIDDEN int __glXDrawBuffersReqSize(const GLbyte * pc, Bool swap,
++                                                  int reqlen);
+ extern PURE _X_HIDDEN int __glXProgramStringARBReqSize(const GLbyte * pc,
+-                                                       Bool swap);
++                                                       Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXDeleteFramebuffersReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXDeleteRenderbuffersReqSize(const GLbyte * pc,
+-                                                          Bool swap);
++                                                          Bool swap,
++                                                          int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs1dvNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs1fvNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs1svNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs2dvNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs2fvNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs2svNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs3dvNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs3fvNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs3svNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs4dvNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs4fvNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs4svNVReqSize(const GLbyte * pc,
+-                                                         Bool swap);
++                                                         Bool swap, int reqlen);
+ extern PURE _X_HIDDEN int __glXVertexAttribs4ubvNVReqSize(const GLbyte * pc,
+-                                                          Bool swap);
++                                                          Bool swap,
++                                                          int reqlen);
+ #undef PURE
+Index: xorg-server-1.15.1/glx/rensize.c
+===================================================================
+--- xorg-server-1.15.1.orig/glx/rensize.c      2014-12-04 11:57:06.345650678 -0500
++++ xorg-server-1.15.1/glx/rensize.c   2014-12-04 11:57:06.341650652 -0500
+@@ -44,7 +44,7 @@
+    ((a & 0xff00U)<<8) | ((a & 0xffU)<<24))
+ int
+-__glXMap1dReqSize(const GLbyte * pc, Bool swap)
++__glXMap1dReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum target;
+     GLint order;
+@@ -61,7 +61,7 @@
+ }
+ int
+-__glXMap1fReqSize(const GLbyte * pc, Bool swap)
++__glXMap1fReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum target;
+     GLint order;
+@@ -86,7 +86,7 @@
+ }
+ int
+-__glXMap2dReqSize(const GLbyte * pc, Bool swap)
++__glXMap2dReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum target;
+     GLint uorder, vorder;
+@@ -103,7 +103,7 @@
+ }
+ int
+-__glXMap2fReqSize(const GLbyte * pc, Bool swap)
++__glXMap2fReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     GLenum target;
+     GLint uorder, vorder;
+@@ -359,13 +359,14 @@
+ }
+ int
+-__glXDrawArraysReqSize(const GLbyte * pc, Bool swap)
++__glXDrawArraysReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     __GLXdispatchDrawArraysHeader *hdr = (__GLXdispatchDrawArraysHeader *) pc;
+     __GLXdispatchDrawArraysComponentHeader *compHeader;
+     GLint numVertexes = hdr->numVertexes;
+     GLint numComponents = hdr->numComponents;
+     GLint arrayElementSize = 0;
++    GLint x, size;
+     int i;
+     if (swap) {
+@@ -374,6 +375,13 @@
+     }
+     pc += sizeof(__GLXdispatchDrawArraysHeader);
++    reqlen -= sizeof(__GLXdispatchDrawArraysHeader);
++
++    size = safe_mul(sizeof(__GLXdispatchDrawArraysComponentHeader),
++                    numComponents);
++    if (size < 0 || reqlen < 0 || reqlen < size)
++        return -1;
++
+     compHeader = (__GLXdispatchDrawArraysComponentHeader *) pc;
+     for (i = 0; i < numComponents; i++) {
+@@ -417,17 +425,18 @@
+             return -1;
+         }
+-        arrayElementSize += __GLX_PAD(numVals * __glXTypeSize(datatype));
++        x = safe_pad(safe_mul(numVals, __glXTypeSize(datatype)));
++        if ((arrayElementSize = safe_add(arrayElementSize, x)) < 0)
++            return -1;
+         pc += sizeof(__GLXdispatchDrawArraysComponentHeader);
+     }
+-    return ((numComponents * sizeof(__GLXdispatchDrawArraysComponentHeader)) +
+-            (numVertexes * arrayElementSize));
++    return safe_add(size, safe_mul(numVertexes, arrayElementSize));
+ }
+ int
+-__glXSeparableFilter2DReqSize(const GLbyte * pc, Bool swap)
++__glXSeparableFilter2DReqSize(const GLbyte * pc, Bool swap, int reqlen)
+ {
+     __GLXdispatchConvolutionFilterHeader *hdr =
+         (__GLXdispatchConvolutionFilterHeader *) pc;
diff --git a/debian/patches/CVE-2014-8xxx/0033-glx-Fix-mask-truncation-in-__glXGetAnswerBuffer-CVE-.patch b/debian/patches/CVE-2014-8xxx/0033-glx-Fix-mask-truncation-in-__glXGetAnswerBuffer-CVE-.patch
new file mode 100644 (file)
index 0000000..b004cac
--- /dev/null
@@ -0,0 +1,34 @@
+From a7c63d6599067dc8ff0d114536d2db3fadb4e195 Mon Sep 17 00:00:00 2001
+From: Robert Morell <rmorell@nvidia.com>
+Date: Wed, 12 Nov 2014 18:51:43 -0800
+Subject: [PATCH 33/33] glx: Fix mask truncation in __glXGetAnswerBuffer
+ [CVE-2014-8093 6/6]
+
+On a system where sizeof(unsigned) != sizeof(intptr_t), the unary
+bitwise not operation will result in a mask that clears all high bits
+from temp_buf in the expression:
+        temp_buf = (temp_buf + mask) & ~mask;
+
+Signed-off-by: Robert Morell <rmorell@nvidia.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ glx/indirect_util.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/glx/indirect_util.c b/glx/indirect_util.c
+index de81491..9ba2815 100644
+--- a/glx/indirect_util.c
++++ b/glx/indirect_util.c
+@@ -73,7 +73,7 @@ __glXGetAnswerBuffer(__GLXclientState * cl, size_t required_size,
+                      void *local_buffer, size_t local_size, unsigned alignment)
+ {
+     void *buffer = local_buffer;
+-    const unsigned mask = alignment - 1;
++    const intptr_t mask = alignment - 1;
+     if (local_size < required_size) {
+         size_t worst_case_size;
+-- 
+1.7.9.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0034-CVE-2014-8097-additional.patch b/debian/patches/CVE-2014-8xxx/0034-CVE-2014-8097-additional.patch
new file mode 100644 (file)
index 0000000..11ea00e
--- /dev/null
@@ -0,0 +1,47 @@
+From b20912c3d45cbbde3c443e6c3d9e189092fe65e1 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+Date: Tue, 9 Dec 2014 09:30:57 -0800
+Subject: dbe: Call to DDX SwapBuffers requires address of int, not unsigned
+ int [CVE-2014-8097 pt. 2]
+
+When the local types used to walk the DBE request were changed, this
+changed the type of the parameter passed to the DDX SwapBuffers API,
+but there wasn't a matching change in the API definition.
+
+At this point, with the API frozen, I just stuck a new variable in
+with the correct type. Because we've already bounds-checked nStuff to
+be smaller than UINT32_MAX / sizeof(DbeSwapInfoRec), we know it will
+fit in a signed int without overflow.
+
+Signed-off-by: Keith Packard <keithp@keithp.com
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+diff --git a/dbe/dbe.c b/dbe/dbe.c
+index df2ad5c..e5d928d 100644
+--- a/dbe/dbe.c
++++ b/dbe/dbe.c
+@@ -452,6 +452,7 @@ ProcDbeSwapBuffers(ClientPtr client)
+     int error;
+     unsigned int i, j;
+     unsigned int nStuff;
++    int nStuff_i;       /* DDX API requires int for nStuff */
+     REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq);
+     nStuff = stuff->n;          /* use local variable for performance. */
+@@ -527,9 +528,10 @@ ProcDbeSwapBuffers(ClientPtr client)
+      * could deal with cross-screen synchronization.
+      */
+-    while (nStuff > 0) {
++    nStuff_i = nStuff;
++    while (nStuff_i > 0) {
+         pDbeScreenPriv = DBE_SCREEN_PRIV_FROM_WINDOW(swapInfo[0].pWindow);
+-        error = (*pDbeScreenPriv->SwapBuffers) (client, &nStuff, swapInfo);
++        error = (*pDbeScreenPriv->SwapBuffers) (client, &nStuff_i, swapInfo);
+         if (error != Success) {
+             free(swapInfo);
+             return error;
+-- 
+cgit v0.10.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0035-CVE-2014-8098-additional.patch b/debian/patches/CVE-2014-8xxx/0035-CVE-2014-8098-additional.patch
new file mode 100644 (file)
index 0000000..612561f
--- /dev/null
@@ -0,0 +1,36 @@
+From 61b17c0f10307e25e51e30e6fb1d3e3127f82d86 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+Date: Tue, 9 Dec 2014 09:30:58 -0800
+Subject: glx: Can't mix declarations and code in X.org sources [CVE-2014-8098
+ pt. 9]
+
+We're using compiler compatibility settings which generate warnings
+when a variable is declared after the first statement.
+
+Signed-off-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+diff --git a/glx/clientinfo.c b/glx/clientinfo.c
+index c5fef30..74ad919 100644
+--- a/glx/clientinfo.c
++++ b/glx/clientinfo.c
+@@ -36,13 +36,14 @@ set_client_info(__GLXclientState * cl, xGLXSetClientInfoARBReq * req,
+     ClientPtr client = cl->client;
+     char *gl_extensions;
+     char *glx_extensions;
++    int size;
+     REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq);
+     /* Verify that the size of the packet matches the size inferred from the
+      * sizes specified for the various fields.
+      */
+-    int size = sz_xGLXSetClientInfoARBReq;
++    size = sz_xGLXSetClientInfoARBReq;
+     size = safe_add(size, safe_mul(req->numVersions, bytes_per_version));
+     size = safe_add(size, safe_pad(req->numGLExtensionBytes));
+     size = safe_add(size, safe_pad(req->numGLXExtensionBytes));
+-- 
+cgit v0.10.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0036-CVE-2014-8092-additional.patch b/debian/patches/CVE-2014-8xxx/0036-CVE-2014-8092-additional.patch
new file mode 100644 (file)
index 0000000..69f1ea9
--- /dev/null
@@ -0,0 +1,28 @@
+From 9802a0162f738de03585ca3f3b8a8266494f7d45 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+Date: Tue, 9 Dec 2014 09:30:59 -0800
+Subject: Missing parens in REQUEST_FIXED_SIZE macro [CVE-2014-8092 pt. 5]
+
+The 'n' parameter must be surrounded by parens in both places to
+prevent precedence from mis-computing things.
+
+Signed-off-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+diff --git a/include/dix.h b/include/dix.h
+index 21176a8..921156b 100644
+--- a/include/dix.h
++++ b/include/dix.h
+@@ -80,7 +80,7 @@ SOFTWARE.
+ #define REQUEST_FIXED_SIZE(req, n)\
+     if (((sizeof(req) >> 2) > client->req_len) || \
+-        ((n >> 2) >= client->req_len) || \
++        (((n) >> 2) >= client->req_len) ||                              \
+         ((((uint64_t) sizeof(req) + (n) + 3) >> 2) != (uint64_t) client->req_len))  \
+          return(BadLength)
+-- 
+cgit v0.10.2
+
diff --git a/debian/patches/CVE-2014-8xxx/0037-CVE-2014-8092-additional-2.patch b/debian/patches/CVE-2014-8xxx/0037-CVE-2014-8092-additional-2.patch
new file mode 100644 (file)
index 0000000..ade1661
--- /dev/null
@@ -0,0 +1,29 @@
+From 1559a94395258fd73e369f1a2c98a44bfe21a486 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+Date: Tue, 9 Dec 2014 09:31:00 -0800
+Subject: dix: GetHosts bounds check using wrong pointer value [CVE-2014-8092
+ pt. 6]
+
+GetHosts saves the pointer to allocated memory in *data, and then
+wants to bounds-check writes to that region, but was mistakenly using
+a bare 'data' instead of '*data'. Also, data is declared as void **,
+so we need a cast to turn it into a byte pointer so we can actually do
+pointer comparisons.
+
+Signed-off-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+Index: xorg-server-1.15.1/os/access.c
+===================================================================
+--- xorg-server-1.15.1.orig/os/access.c        2014-12-09 17:12:07.880851371 -0500
++++ xorg-server-1.15.1/os/access.c     2014-12-09 17:12:07.880851371 -0500
+@@ -1335,7 +1335,7 @@
+         }
+         for (host = validhosts; host; host = host->next) {
+             len = host->len;
+-            if ((ptr + sizeof(xHostEntry) + len) > (data + n))
++            if ((ptr + sizeof(xHostEntry) + len) > ((unsigned char *) *data + n))
+                 break;
+             ((xHostEntry *) ptr)->family = host->family;
+             ((xHostEntry *) ptr)->length = len;
diff --git a/debian/patches/config-add-no-removal.patch b/debian/patches/config-add-no-removal.patch
new file mode 100644 (file)
index 0000000..88a5b6d
--- /dev/null
@@ -0,0 +1,30 @@
+diff --git a/config/udev.c b/config/udev.c
+index 454838f..74ac998 100644
+--- a/config/udev.c
++++ b/config/udev.c
+@@ -300,10 +300,9 @@ wakeup_handler(pointer data, int err, pointer read_mask)
+             return;
+         action = udev_device_get_action(udev_device);
+         if (action) {
+-            if (!strcmp(action, "add")) {
+-                device_removed(udev_device);
++            if (!strcmp(action, "add"))
+                 device_added(udev_device);
+-            } else if (!strcmp(action, "change")) {
++            else if (!strcmp(action, "change")) {
+                 /* ignore change for the drm devices */
+                 if (strcmp(udev_device_get_subsystem(udev_device), "drm")) {
+                     device_removed(udev_device);
+diff --git a/hw/xfree86/os-support/linux/lnx_platform.c b/hw/xfree86/os-support/linux/lnx_platform.c
+index 76f5583..c125e35 100644
+--- a/hw/xfree86/os-support/linux/lnx_platform.c
++++ b/hw/xfree86/os-support/linux/lnx_platform.c
+@@ -126,6 +126,8 @@ xf86PlatformDeviceProbe(struct OdevAttributes *attribs)
+     return;
+ out_free:
++    LogMessage(X_INFO, "config/udev: Ignoring already known drm device (%s)\n",
++               path);
+     config_odev_free_attribute_list(attribs);
+ }
diff --git a/debian/patches/disable-rotation-transform-gpuscreens.patch b/debian/patches/disable-rotation-transform-gpuscreens.patch
new file mode 100644 (file)
index 0000000..9f95572
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
+index a441fd1..9147a26 100644
+--- a/hw/xfree86/modes/xf86Crtc.c
++++ b/hw/xfree86/modes/xf86Crtc.c
+@@ -778,7 +778,7 @@ xf86CrtcScreenInit(ScreenPtr screen)
+         if (!crtc->funcs->shadow_allocate || !crtc->funcs->shadow_create)
+             break;
+     }
+-    if (c == config->num_crtc) {
++    if (c == config->num_crtc && !screen->isGPU) {
+         xf86RandR12SetRotations(screen, RR_Rotate_0 | RR_Rotate_90 |
+                                 RR_Rotate_180 | RR_Rotate_270 |
+                                 RR_Reflect_X | RR_Reflect_Y);
diff --git a/debian/patches/drm_device_keep_trying.patch b/debian/patches/drm_device_keep_trying.patch
new file mode 100644 (file)
index 0000000..8a8f920
--- /dev/null
@@ -0,0 +1,172 @@
+From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
+Subject: [PATCH] do not use drmGetBusid to grab the pci-id name
+
+The kernel returns EACCES or EAGAIN on drm open when the drm device is
+currently unavailable, such as if it is in use by another process
+(e.g. plymouth), or hasn't finished initializing (e.g. on a really fast
+SSD). Because the probing is done before a vt switch is completed,
+we have no way to ensure that we can own DRM master. This results
+in failing to boot.
+
+Also attrib->unowned is not initialized, always initialize it to fix
+a valgrind warning, and to prevent adding the same device a second time
+after a vt switch.
+
+Fixes: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/982889
+
+Signed-off-by: Bryce Harrington <bryce@canonical.com>
+---
+ hw/xfree86/os-support/linux/lnx_platform.c |   29 +++++++++++++++++++++++++---
+ 1 file changed, 26 insertions(+), 3 deletions(-)
+
+--- a/config/udev.c
++++ b/config/udev.c
+@@ -98,7 +98,7 @@
+         if (strncmp(sysname, "card", 4) != 0)
+             return;
+-        LogMessage(X_INFO, "config/udev: Adding drm device (%s)\n", path);
++        LogMessage(X_INFO, "config/udev: Adding drm device (%s) %s %s\n", path, sysname, syspath);
+         config_udev_odev_setup_attribs(path, syspath, NewGPUDeviceRequest);
+         return;
+@@ -430,11 +430,23 @@
+ #ifdef CONFIG_UDEV_KMS
+ static Bool
++get_pci_busid(const char *in, char *pci_str)
++{
++    int ret, domain, bus, dev, func;
++    ret = sscanf(in, "/%04x:%02x:%02x.%d/drm/card%*d", &domain, &bus, &dev, &func);
++    if (ret != 4)
++        return FALSE;
++    sprintf(pci_str, "pci:%04x:%02x:%02x.%d", domain, bus, dev, func);
++    return TRUE;
++}
++
++static Bool
+ config_udev_odev_setup_attribs(const char *path, const char *syspath,
+                                config_odev_probe_proc_ptr probe_callback)
+ {
+     struct OdevAttributes *attribs = config_odev_allocate_attribute_list();
+     int ret;
++    const char *platform;
+     if (!attribs)
+         return FALSE;
+@@ -447,6 +459,33 @@
+     if (ret == FALSE)
+         goto fail;
++    if (strstr(syspath, "/devices/pci")) {
++        char pci_str[17];
++        const char *end = strstr(syspath, "/drm/card");
++        if (strstr(syspath, "/usb"))
++            ret = config_odev_add_attribute(attribs, ODEV_ATTRIB_BUSID, "");
++        else if (get_pci_busid(end - 13, pci_str))
++            ret = config_odev_add_attribute(attribs, ODEV_ATTRIB_BUSID, pci_str);
++    } else if ((platform = strstr(syspath, "/devices/platform/"))) {
++        /* OMAP relies on this, modesetting doesn't use it */
++        const char *end;
++        platform += 18;
++        end = strchr(platform, '.');
++        if (end) {
++            char *busid;
++            ret = asprintf(&busid, "platform:%.*s:%02li",
++                           (int)(end - platform), platform, strtol(end + 1, NULL, 10));
++            if (ret >= 0) {
++                ret = config_odev_add_attribute(attribs, ODEV_ATTRIB_BUSID, busid);
++                free(busid);
++            }
++            else
++                ret = TRUE;
++        }
++    }
++    if (ret == FALSE)
++        goto fail;
++
+     /* ownership of attribs is passed to probe layer */
+     probe_callback(attribs);
+     return TRUE;
+--- a/hw/xfree86/os-support/linux/lnx_platform.c
++++ b/hw/xfree86/os-support/linux/lnx_platform.c
+@@ -19,44 +19,6 @@
+ #include "hotplug.h"
+-static Bool
+-get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
+-{
+-    drmSetVersion sv;
+-    char *buf;
+-    int fd;
+-    int err = 0;
+-
+-    fd = open(path, O_RDWR, O_CLOEXEC);
+-    if (fd == -1)
+-        return FALSE;
+-
+-    sv.drm_di_major = 1;
+-    sv.drm_di_minor = 4;
+-    sv.drm_dd_major = -1;       /* Don't care */
+-    sv.drm_dd_minor = -1;       /* Don't care */
+-
+-    err = drmSetInterfaceVersion(fd, &sv);
+-    if (err) {
+-        ErrorF("setversion 1.4 failed: %s\n", strerror(-err));
+-      goto out;
+-    }
+-
+-    /* for a delayed probe we've already added the device */
+-    if (delayed_index == -1) {
+-            xf86_add_platform_device(attribs);
+-            delayed_index = xf86_num_platform_devices - 1;
+-    }
+-
+-    buf = drmGetBusid(fd);
+-    xf86_add_platform_device_attrib(delayed_index,
+-                                    ODEV_ATTRIB_BUSID, buf);
+-    drmFreeBusid(buf);
+-out:
+-    close(fd);
+-    return (err == 0);
+-}
+-
+ Bool
+ xf86PlatformDeviceCheckBusID(struct xf86_platform_device *device, const char *busid)
+ {
+@@ -105,11 +67,6 @@
+     char *dpath;
+     dpath = xf86_get_platform_attrib(index, ODEV_ATTRIB_PATH);
+-    ret = get_drm_info(attribs, dpath, index);
+-    if (ret == FALSE) {
+-        xf86_remove_platform_device(index);
+-        return;
+-    }
+     ret = xf86platformAddDevice(index);
+     if (ret == -1)
+         xf86_remove_platform_device(index);
+@@ -145,18 +102,10 @@
+     LogMessage(X_INFO, "xfree86: Adding drm device (%s)\n", path);
+-    if (!xf86VTOwner()) {
+-            /* if we don't currently own the VT then don't probe the device,
+-               just mark it as unowned for later use */
+-            attribs->unowned = TRUE;
+-            xf86_add_platform_device(attribs);
+-            return;
+-    }
+-
+-    ret = get_drm_info(attribs, path, -1);
+-    if (ret == FALSE)
+-        goto out_free;
+-
++    /* if we don't currently own the VT then don't probe the device,
++       just mark it as unowned for later use */
++    attribs->unowned = !xf86VTOwner();
++    xf86_add_platform_device(attribs);
+     return;
+ out_free:
diff --git a/debian/patches/fb-24-depth.patch b/debian/patches/fb-24-depth.patch
new file mode 100644 (file)
index 0000000..bdbd4c7
--- /dev/null
@@ -0,0 +1,35 @@
+commit fe5018e0564118a7a8198fa286186fdb9ed818c7
+Author: Takashi Iwai <tiwai@suse.de>
+Date:   Tue Aug 19 15:57:22 2014 -0500
+
+    fb: Fix invalid bpp for 24bit depth window
+    
+    We have a hack in fb layer for a 24bpp screen to use 32bpp images, and
+    fbCreateWindow() replaces its drawable.bitsPerPixel field
+    appropriately.  But, the problem is that it always replaces when 32bpp
+    is passed.  If the depth is 32, this results in bpp < depth, which is
+    actually invalid.
+    
+    Meanwhile, fbCreatePixmap() has a more check and it creates with 24bpp
+    only when the passed depth <= 24 for avoiding such a problem.
+    
+    This oneliner patch just adds the similar check in fbCreateWindow().
+    This (hopefully) fixes the long-standing broken graphics mess of
+    cirrus KMS with 24bpp.
+    
+    Signed-off-by: Takashi Iwai <tiwai@suse.de>
+    Reviewed-by: Keith Packard <keithp@keithp.com>
+
+diff --git a/fb/fbwindow.c b/fb/fbwindow.c
+index 368c4b8..c90175f 100644
+--- a/fb/fbwindow.c
++++ b/fb/fbwindow.c
+@@ -33,7 +33,7 @@ fbCreateWindow(WindowPtr pWin)
+ {
+     dixSetPrivate(&pWin->devPrivates, fbGetWinPrivateKey(pWin),
+                   fbGetScreenPixmap(pWin->drawable.pScreen));
+-    if (pWin->drawable.bitsPerPixel == 32)
++    if (pWin->drawable.bitsPerPixel == 32 && pWin->drawable.depth <= 24)
+         pWin->drawable.bitsPerPixel =
+             fbGetScreenPrivate(pWin->drawable.pScreen)->win32bpp;
+     return TRUE;
diff --git a/debian/patches/fix-detach-gpu.patch b/debian/patches/fix-detach-gpu.patch
new file mode 100644 (file)
index 0000000..cba33cf
--- /dev/null
@@ -0,0 +1,89 @@
+--- a/hw/xfree86/modes/xf86RandR12.c
++++ b/hw/xfree86/modes/xf86RandR12.c
+@@ -1800,7 +1800,8 @@
+             ScreenPtr cmScreen = pScreen->current_master;
+             xf86DetachOutputGPU(pScreen);
+-            AttachUnboundGPU(cmScreen, pScreen);
++            if (!pScreen->current_master)
++                AttachUnboundGPU(cmScreen, pScreen);
+         }
+         provider->output_source = NULL;
+         return TRUE;
+@@ -1811,7 +1812,8 @@
+     SetRootClip(source_provider->pScreen, FALSE);
+-    DetachUnboundGPU(pScreen);
++    if (!pScreen->current_master)
++        DetachUnboundGPU(pScreen);
+     AttachOutputGPU(source_provider->pScreen, pScreen);
+     provider->output_source = source_provider;
+@@ -1828,7 +1830,8 @@
+         if (provider->offload_sink) {
+             ScreenPtr cmScreen = pScreen->current_master;
+             xf86DetachOutputGPU(pScreen);
+-            AttachUnboundGPU(cmScreen, pScreen);
++            if (!pScreen->current_master)
++                AttachUnboundGPU(cmScreen, pScreen);
+         }
+         provider->offload_sink = NULL;
+@@ -1838,7 +1841,8 @@
+     if (provider->offload_sink == sink_provider)
+         return TRUE;
+-    DetachUnboundGPU(pScreen);
++    if (!pScreen->current_master)
++        DetachUnboundGPU(pScreen);
+     AttachOffloadGPU(sink_provider->pScreen, pScreen);
+     provider->offload_sink = sink_provider;
+@@ -1917,12 +1921,14 @@
+             config->randr_provider->offload_sink = NULL;
+             RRSetChanged(screen);
+         }
+-        else if (config->randr_provider->output_source) {
++
++        if (config->randr_provider->output_source) {
+             xf86DetachOutputGPU(screen);
+             config->randr_provider->output_source = NULL;
+             RRSetChanged(screen);
+         }
+-        else if (screen->current_master)
++
++        if (screen->current_master)
+             DetachUnboundGPU(screen);
+     }
+     config->randr_provider = NULL;
+--- a/dix/dispatch.c
++++ b/dix/dispatch.c
+@@ -3911,6 +3911,8 @@ AttachUnboundGPU(ScreenPtr pScreen, ScreenPtr new)
+     assert(new->isGPU);
+     assert(!new->current_master);
+     xorg_list_add(&new->unattached_head, &pScreen->unattached_list);
++    xorg_list_init(&new->offload_head);
++    xorg_list_init(&new->output_head);
+     new->current_master = pScreen;
+ }
+@@ -3937,7 +3937,8 @@
+ {
+     assert(slave->isGPU);
+     xorg_list_del(&slave->output_head);
+-    slave->current_master = NULL;
++    if (xorg_list_is_empty(&slave->offload_head))
++        slave->current_master = NULL;
+ }
+ void
+@@ -3953,6 +3954,7 @@
+ {
+     assert(slave->isGPU);
+     xorg_list_del(&slave->offload_head);
+-    slave->current_master = NULL;
++    if (xorg_list_is_empty(&slave->output_head))
++        slave->current_master = NULL;
+ }
diff --git a/debian/patches/fix-ftbfs-ppc64el.patch b/debian/patches/fix-ftbfs-ppc64el.patch
new file mode 100644 (file)
index 0000000..f188ac8
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
+index a9a9fa5..f88cdc0 100644
+--- a/hw/kdrive/src/kinput.c
++++ b/hw/kdrive/src/kinput.c
+@@ -221,7 +221,7 @@ KdUnregisterFd(void *closure, int fd, Bool do_close)
+             if (do_close)
+                 close(kdInputFds[i].fd);
+             kdNumInputFds--;
+-            for (j = i; j < (kdNumInputFds - 1); j++)
++            for (j = i; j < (kdNumInputFds - 1) && j < (KD_MAX_INPUT_FDS - 1); j++)
+                 kdInputFds[j] = kdInputFds[j + 1];
+             break;
+         }
diff --git a/debian/patches/mi-dont-process-disabled.patch b/debian/patches/mi-dont-process-disabled.patch
new file mode 100644 (file)
index 0000000..81691ee
--- /dev/null
@@ -0,0 +1,62 @@
+Date: Tue, 20 May 2014 14:32:59 +1000
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Subject: [PATCH] mi: don't process events from disabled devices (#77884)
+
+Once a device is disabled, it doesn't have a sprite pointer anymore. If an
+event is still in the queue and processed after DisableDevice finished, a
+dereference causes a crash. Example backtrace (crash forced by injecting an
+event at the right time):
+
+(EE) 0: /opt/xorg/bin/Xorg (OsSigHandler+0x3c) [0x48d334]
+(EE) 1: /lib64/libpthread.so.0 (__restore_rt+0x0) [0x37fcc0f74f]
+(EE) 2: /opt/xorg/bin/Xorg (mieqMoveToNewScreen+0x38) [0x609240]
+(EE) 3: /opt/xorg/bin/Xorg (mieqProcessDeviceEvent+0xd4) [0x609389]
+(EE) 4: /opt/xorg/bin/Xorg (mieqProcessInputEvents+0x206) [0x609720]
+(EE) 5: /opt/xorg/bin/Xorg (ProcessInputEvents+0xd) [0x4aeb58]
+(EE) 6: /opt/xorg/bin/Xorg (xf86VTSwitch+0x1a6) [0x4af457]
+(EE) 7: /opt/xorg/bin/Xorg (xf86Wakeup+0x2bf) [0x4af0a7]
+(EE) 8: /opt/xorg/bin/Xorg (WakeupHandler+0x83) [0x4445cb]
+(EE) 9: /opt/xorg/bin/Xorg (WaitForSomething+0x3fe) [0x491bf6]
+(EE) 10: /opt/xorg/bin/Xorg (Dispatch+0x97) [0x435748]
+(EE) 11: /opt/xorg/bin/Xorg (dix_main+0x61d) [0x4438a9]
+(EE) 12: /opt/xorg/bin/Xorg (main+0x28) [0x49ba28]
+(EE) 13: /lib64/libc.so.6 (__libc_start_main+0xf5) [0x37fc821d65]
+(EE) 14: /opt/xorg/bin/Xorg (_start+0x29) [0x425e69]
+(EE) 15: ? (?+0x29) [0x29]
+
+xf86VTSwitch() calls ProcessInputEvents() before disabling a device, and
+DisableDevice() calls mieqProcessInputEvents() again when flushing touches and
+button events. Between that and disabling the device (which causes new events
+to be refused) there is a window where events may be triggered and enqueued.
+On the next call to PIE that event is processed on a now defunct device,
+causing the crash.
+
+The simplest fix to this is to discard events from disabled devices. We flush
+the queue often enough before disabling that when we get here, we really don't
+care about the events from this device.
+
+X.Org Bug 77884 <http://bugs.freedesktop.org/show_bug.cgi?id=77884>
+---
+Modified by Maarten Lankhorst to pass tests.
+
+ mi/mieq.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/mi/mieq.c b/mi/mieq.c
+index 4c07480..188a0b0 100644
+--- a/mi/mieq.c
++++ b/mi/mieq.c
+@@ -515,6 +515,10 @@ mieqProcessDeviceEvent(DeviceIntPtr dev, InternalEvent *event, ScreenPtr screen)
+     verify_internal_event(event);
++    /* refuse events from disabled devices */
++    if (dev && !dev->enabled)
++        return 0;
++
+     /* Custom event handler */
+     handler = miEventQueue.handlers[event->any.type];
+-- 
+1.9.0
+
diff --git a/debian/patches/no-nv.patch b/debian/patches/no-nv.patch
new file mode 100644 (file)
index 0000000..4fb23e7
--- /dev/null
@@ -0,0 +1,24 @@
+commit b770266fa9c3fab5374bdf109676e0b129ac4546
+Author: Bryce Harrington <bryce@canonical.com>
+Date:   Wed Apr 3 13:36:20 2013 -0700
+
+    Don't bother probing -nv on linux.
+    
+    For linux this driver is long obsolete now.  It may have some relevance
+    on non-linux systems.
+
+diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
+index b2545be..73a662d 100644
+--- a/hw/xfree86/common/xf86pciBus.c
++++ b/hw/xfree86/common/xf86pciBus.c
+@@ -1220,8 +1220,9 @@ xf86VideoPtrToDriverList(struct pci_device *dev,
+         driverList[idx++] = "nvidia";
+ #ifdef __linux__
+         driverList[idx++] = "nouveau";
+-#endif
++#else
+         driverList[idx++] = "nv";
++#endif
+         break;
+     }
+     case 0x1106:
diff --git a/debian/patches/pixman-validate.patch b/debian/patches/pixman-validate.patch
new file mode 100644 (file)
index 0000000..513de6c
--- /dev/null
@@ -0,0 +1,27 @@
+diff --git a/exa/exa_render.c b/exa/exa_render.c
+index 172e2b5..807eeba 100644
+--- a/exa/exa_render.c
++++ b/exa/exa_render.c
+@@ -1141,7 +1141,8 @@ exaTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
+         exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
+         for (; ntrap; ntrap--, traps++)
+-            (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1);
++            if (xTrapezoidValid(traps))
++                (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1);
+         exaFinishAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
+         xRel = bounds.x1 + xSrc - xDst;
+diff --git a/render/picture.h b/render/picture.h
+index c85353a..49eb263 100644
+--- a/render/picture.h
++++ b/render/picture.h
+@@ -211,7 +211,7 @@ typedef pixman_fixed_t xFixed;
+ /* whether 't' is a well defined not obviously empty trapezoid */
+ #define xTrapezoidValid(t)  ((t)->left.p1.y != (t)->left.p2.y && \
+                            (t)->right.p1.y != (t)->right.p2.y && \
+-                           (int) ((t)->bottom - (t)->top) > 0)
++                           (t)->bottom > 0 && (int) ((t)->bottom - (t)->top) > 0)
+ /*
+  * Standard NTSC luminance conversions:
diff --git a/debian/patches/ppc64el-endian-fix.patch b/debian/patches/ppc64el-endian-fix.patch
new file mode 100644 (file)
index 0000000..6950b27
--- /dev/null
@@ -0,0 +1,34 @@
+From adb7bc3386559dfee34b359dadcbb6796bc416e7 Mon Sep 17 00:00:00 2001
+From: Dinar Valeev <dvaleev@suse.com>
+Date: Mon, 24 Feb 2014 10:36:54 +0000
+Subject: arch: Fix image and bitmap byte order for ppc64le
+
+So far PPC was big endian for sure. For ppc64le this is no longer
+true.
+
+Signed-off-by: Egbert Eich <eich@freedesktop.org>
+Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
+Signed-off-by: Keith Packard <keithp@keithp.com>
+---
+diff --git a/include/servermd.h b/include/servermd.h
+index 081123b..e413314 100644
+--- a/include/servermd.h
++++ b/include/servermd.h
+@@ -114,8 +114,13 @@ SOFTWARE.
+ #if defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__)
+-#define IMAGE_BYTE_ORDER        MSBFirst
+-#define BITMAP_BIT_ORDER        MSBFirst
++#if defined(__LITTLE_ENDIAN__)
++#define IMAGE_BYTE_ORDER      LSBFirst
++#define BITMAP_BIT_ORDER      LSBFirst
++#else
++#define IMAGE_BYTE_ORDER      MSBFirst
++#define BITMAP_BIT_ORDER      MSBFirst
++#endif
+ #define GLYPHPADBYTES           4
+ #endif                          /* PowerPC */
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/debian/patches/rotation-slaved-crtc-bounds.patch b/debian/patches/rotation-slaved-crtc-bounds.patch
new file mode 100644 (file)
index 0000000..4c8345a
--- /dev/null
@@ -0,0 +1,122 @@
+From: Chris Wilson <chris@chris-wilson.co.uk>
+To: xorg-devel@lists.x.org
+Subject: [PATCH 2/3] randr: Consider rotation of slaved crtcs when computing bounds
+Date: Wed, 23 Jul 2014 12:35:14 +0100
+
+When creating a pixmap to cover a rotated slaved CRTC, we need to
+consider its rotated size as that is the area that it occupies in the
+framebuffer. The slave is then responsible for mapping the copy of the
+framebuffer onto the rotated scanout - which can be the usual RandR
+shadow composite method.
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+Cc: Dave Airlie <airlied@redhat.com>
+Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
+---
+ randr/rrcrtc.c | 56 ++++++++++++++++++++++++++++++++++++--------------------
+ 1 file changed, 36 insertions(+), 20 deletions(-)
+
+--- a/randr/rrcrtc.c
++++ b/randr/rrcrtc.c
+@@ -273,27 +273,43 @@
+     return FALSE;
+ }
+-static void
+-crtc_bounds(RRCrtcPtr crtc, int *left, int *right, int *top, int *bottom)
++static int mode_height(const RRModeRec *mode, Rotation rotation)
+ {
+-    *left = crtc->x;
+-    *top = crtc->y;
+-
+-    switch (crtc->rotation) {
++    switch (rotation & 0xf) {
+     case RR_Rotate_0:
+     case RR_Rotate_180:
++      return mode->mode.height;
++    case RR_Rotate_90:
++    case RR_Rotate_270:
++      return mode->mode.width;
+     default:
+-        *right = crtc->x + crtc->mode->mode.width;
+-        *bottom = crtc->y + crtc->mode->mode.height;
+-        return;
++      return 0;
++    }
++}
++
++static int mode_width(const RRModeRec *mode, Rotation rotation)
++{
++    switch (rotation & 0xf) {
++    case RR_Rotate_0:
++    case RR_Rotate_180:
++      return mode->mode.width;
+     case RR_Rotate_90:
+     case RR_Rotate_270:
+-        *right = crtc->x + crtc->mode->mode.height;
+-        *bottom = crtc->y + crtc->mode->mode.width;
+-        return;
++      return mode->mode.height;
++    default:
++      return 0;
+     }
+ }
++static void
++crtc_bounds(RRCrtcPtr crtc, int *left, int *right, int *top, int *bottom)
++{
++    *left = crtc->x;
++    *top = crtc->y;
++    *right = crtc->x + mode_width(crtc->mode, crtc->rotation);
++    *bottom = crtc->y + mode_height(crtc->mode, crtc->rotation);
++}
++
+ /* overlapping counts as adjacent */
+ static Bool
+ crtcs_adjacent(const RRCrtcPtr a, const RRCrtcPtr b)
+@@ -466,9 +482,9 @@
+             if (!pScrPriv->crtcs[c]->mode)
+                 continue;
+             newbox.x1 = pScrPriv->crtcs[c]->x;
+-            newbox.x2 = pScrPriv->crtcs[c]->x + pScrPriv->crtcs[c]->mode->mode.width;
++          newbox.x2 = pScrPriv->crtcs[c]->x + mode_width(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation);
+             newbox.y1 = pScrPriv->crtcs[c]->y;
+-            newbox.y2 = pScrPriv->crtcs[c]->y + pScrPriv->crtcs[c]->mode->mode.height;
++          newbox.y2 = pScrPriv->crtcs[c]->y + mode_height(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation);
+         }
+         RegionInit(&new_crtc_region, &newbox, 1);
+         RegionUnion(&total_region, &total_region, &new_crtc_region);
+@@ -487,9 +503,9 @@
+                 if (!pScrPriv->crtcs[c]->mode)
+                     continue;
+                 newbox.x1 = pScrPriv->crtcs[c]->x;
+-                newbox.x2 = pScrPriv->crtcs[c]->x + pScrPriv->crtcs[c]->mode->mode.width;
++                newbox.x2 = pScrPriv->crtcs[c]->x + mode_width(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation);
+                 newbox.y1 = pScrPriv->crtcs[c]->y;
+-                newbox.y2 = pScrPriv->crtcs[c]->y + pScrPriv->crtcs[c]->mode->mode.height;
++                newbox.y2 = pScrPriv->crtcs[c]->y + mode_height(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation);
+             }
+           RegionInit(&new_crtc_region, &newbox, 1);
+           RegionUnion(&total_region, &total_region, &new_crtc_region);
+@@ -544,8 +560,8 @@
+             int width = 0, height = 0;
+             if (mode) {
+-                width = mode->mode.width;
+-                height = mode->mode.height;
++              width = mode_width(mode, rotation);
++              height = mode_height(mode, rotation);
+             }
+             ErrorF("have a master to look out for\n");
+             ret = rrCheckPixmapBounding(master, crtc,
+@@ -1672,8 +1688,8 @@
+         changed = FALSE;
+         if (crtc->mode && crtc->x == pDrawable->x &&
+             crtc->y == pDrawable->y &&
+-            crtc->mode->mode.width == pDrawable->width &&
+-            crtc->mode->mode.height == pDrawable->height)
++          mode_width(crtc->mode, crtc->rotation) == pDrawable->width &&
++          mode_height(crtc->mode, crtc->rotation) == pDrawable->height)
+             size_fits = TRUE;
+         /* is the pixmap already set? */
diff --git a/debian/patches/rrcrtc-brackets-are-hard.patch b/debian/patches/rrcrtc-brackets-are-hard.patch
new file mode 100644 (file)
index 0000000..6605162
--- /dev/null
@@ -0,0 +1,42 @@
+From dd0c31d6b7559bb0dda6283a5d345d537f1d6b42 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied@gmail.com>
+Date: Tue, 30 Jul 2013 13:17:45 +1000
+Subject: [PATCH] rrcrtc: brackets are hard, lets go shopping.
+
+Slaving two outputs on a secondary GPU to a primary GPU testing
+picked this up, in that we'd try to resize to the totally the
+wrong thing, then as usual segfault in the rotation code.
+
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+---
+ randr/rrcrtc.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
+index 2f76b62..40b01f0 100644
+--- a/randr/rrcrtc.c
++++ b/randr/rrcrtc.c
+@@ -474,7 +474,7 @@ rrCheckPixmapBounding(ScreenPtr pScreen,
+     xorg_list_for_each_entry(slave, &pScreen->output_slave_list, output_head) {
+         rrScrPriv(slave);
+-        for (c = 0; c < pScrPriv->numCrtcs; c++)
++        for (c = 0; c < pScrPriv->numCrtcs; c++) {
+             if (pScrPriv->crtcs[c] == rr_crtc) {
+                 newbox.x1 = x;
+                 newbox.x2 = x + w;
+@@ -489,8 +489,9 @@ rrCheckPixmapBounding(ScreenPtr pScreen,
+                 newbox.y1 = pScrPriv->crtcs[c]->y;
+                 newbox.y2 = pScrPriv->crtcs[c]->y + pScrPriv->crtcs[c]->mode->mode.height;
+             }
+-        RegionInit(&new_crtc_region, &newbox, 1);
+-        RegionUnion(&total_region, &total_region, &new_crtc_region);
++          RegionInit(&new_crtc_region, &newbox, 1);
++          RegionUnion(&total_region, &total_region, &new_crtc_region);
++      }
+     }
+     newsize = RegionExtents(&total_region);
+-- 
+1.8.2.1
+
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..f1c7cc4
--- /dev/null
@@ -0,0 +1,105 @@
+## Patches with a number < 100 are applied in debian.
+## Ubuntu patches start with 100.
+001_fedora_extramodes.patch
+02_kbsd-input-devd.diff
+03_static-nettle.diff
+05_Revert-Unload-submodules.diff
+06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff
+08_xfree86_fix_ia64_inx_outx.diff
+
+## Ubuntu patches, not upstreamable
+105_nvidia_fglrx_autodetect.patch
+168_glibc_trace_to_stderr.patch
+188_default_primary_to_first_busid.patch
+190_cache-xkbcomp_output_for_fast_start_up.patch
+191-Xorg-add-an-extra-module-path.patch
+226_fall_back_to_autoconfiguration.patch
+
+## send upstream
+232-xf86compatoutput-valgrind.patch
+xfree86-no-xv-for-gpuscreens.patch
+no-nv.patch
+
+## waiting for review by upstream
+111_armel-drv-fallbacks.patch
+122_xext_fix_card32_overflow_in_xauth.patch
+#   https://bugs.freedesktop.org/show_bug.cgi?id=27134
+#   http://lists.x.org/archives/xorg-devel/2010-April/007777.html
+#   Resent to mailing list, Feb 2013
+208_switch_on_release.diff
+#   https://bugs.freedesktop.org/show_bug.cgi?id=865
+#   - Violates XKB spec: Section 6.3, SA_LockGroup
+#   http://lists.freedesktop.org/archives/xorg-devel/2013-January/035046.html
+#   - Different implementation proposed on fdo mailing list
+227_null_ptr_midispcur.patch
+#   https://bugs.freedesktop.org/show_bug.cgi?id=24181
+#   Probably is just papering over issue; needs further analysis
+
+## upstream patches
+
+# hybrid graphics fixes
+228_autobind_gpu.patch
+xf86-fixup-detection.patch
+xf86-inactive-gpuscreen.patch
+xrandr-rroutputchanged-main.patch
+rrcrtc-brackets-are-hard.patch
+config-add-no-removal.patch
+xf86-ignore-conflicting-rr-caps.patch
+fix-detach-gpu.patch
+disable-rotation-transform-gpuscreens.patch
+
+pixman-validate.patch
+fix-ftbfs-ppc64el.patch
+xmir.patch
+drm_device_keep_trying.patch
+xi2-resize-touch.patch
+xi-dont-copy-too-much.patch
+mi-dont-process-disabled.patch
+ppc64el-endian-fix.patch
+xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch
+xfree86_keep_non_seat0_from_touching_vts.patch
+xfree86_add_matchseat_key_to_xorg_conf.patch
+xfree86_add_matchseat_key_description_to_xorg_conf_man.patch
+rotation-slaved-crtc-bounds.patch
+fb-24-depth.patch
+
+# CVE-2014-8095 to CVE-2014-8103
+CVE-2014-8xxx/0000-glx-check-return.patch
+CVE-2014-8xxx/0000-regionsize-size_t.patch
+CVE-2014-8xxx/0001-unchecked-malloc-may-allow-unauthed-client-to-crash-.patch
+CVE-2014-8xxx/0002-dix-integer-overflow-in-ProcPutImage-CVE-2014-8092-1.patch
+CVE-2014-8xxx/0003-dix-integer-overflow-in-GetHosts-CVE-2014-8092-2-4.patch
+CVE-2014-8xxx/0004-dix-integer-overflow-in-RegionSizeof-CVE-2014-8092-3.patch
+CVE-2014-8xxx/0005-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-2014-.patch
+CVE-2014-8xxx/0006-dri2-integer-overflow-in-ProcDRI2GetBuffers-CVE-2014.patch
+CVE-2014-8xxx/0007-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls-CVE-.patch
+CVE-2014-8xxx/0008-Xi-unvalidated-lengths-in-Xinput-extension-CVE-2014-.patch
+CVE-2014-8xxx/0009-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDList-C.patch
+CVE-2014-8xxx/0010-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch
+CVE-2014-8xxx/0011-dri3-unvalidated-lengths-in-DRI3-extension-swapped-p.patch
+CVE-2014-8xxx/0012-present-unvalidated-lengths-in-Present-extension-pro.patch
+CVE-2014-8xxx/0013-randr-unvalidated-lengths-in-RandR-extension-swapped.patch
+CVE-2014-8xxx/0014-render-check-request-size-before-reading-it-CVE-2014.patch
+CVE-2014-8xxx/0015-render-unvalidated-lengths-in-Render-extn.-swapped-p.patch
+CVE-2014-8xxx/0016-xfixes-unvalidated-length-in-SProcXFixesSelectSelect.patch
+CVE-2014-8xxx/0017-Add-request-length-checking-test-cases-for-some-Xinp.patch
+CVE-2014-8xxx/0018-Add-request-length-checking-test-cases-for-some-Xinp.patch
+CVE-2014-8xxx/0019-Add-REQUEST_FIXED_SIZE-testcases-to-test-misc.c.patch
+CVE-2014-8xxx/0020-glx-Be-more-paranoid-about-variable-length-requests-.patch
+CVE-2014-8xxx/0021-glx-Be-more-strict-about-rejecting-invalid-image-siz.patch
+CVE-2014-8xxx/0022-glx-Additional-paranoia-in-__glXGetAnswerBuffer-__GL.patch
+CVE-2014-8xxx/0023-glx-Fix-image-size-computation-for-EXT_texture_integ.patch
+CVE-2014-8xxx/0024-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6.patch
+CVE-2014-8xxx/0025-glx-Length-checking-for-GLXRender-requests-v2-CVE-20.patch
+CVE-2014-8xxx/0026-glx-Integer-overflow-protection-for-non-generated-re.patch
+CVE-2014-8xxx/0027-glx-Length-checking-for-RenderLarge-requests-v2-CVE-.patch
+CVE-2014-8xxx/0028-glx-Top-level-length-checking-for-swapped-VendorPriv.patch
+CVE-2014-8xxx/0029-glx-Request-length-checks-for-SetClientInfoARB-CVE-2.patch
+CVE-2014-8xxx/0030-glx-Length-checking-for-non-generated-vendor-private.patch
+CVE-2014-8xxx/0031-glx-Length-checking-for-non-generated-single-request.patch
+CVE-2014-8xxx/0032-glx-Pass-remaining-request-length-into-varsize-v2-CV.patch
+CVE-2014-8xxx/0033-glx-Fix-mask-truncation-in-__glXGetAnswerBuffer-CVE-.patch
+CVE-2014-8xxx/0034-CVE-2014-8097-additional.patch
+CVE-2014-8xxx/0035-CVE-2014-8098-additional.patch
+CVE-2014-8xxx/0036-CVE-2014-8092-additional.patch
+CVE-2014-8xxx/0037-CVE-2014-8092-additional-2.patch
diff --git a/debian/patches/xf86-fixup-detection.patch b/debian/patches/xf86-fixup-detection.patch
new file mode 100644 (file)
index 0000000..e454c75
--- /dev/null
@@ -0,0 +1,79 @@
+--- a/hw/xfree86/common/xf86pciBus.c
++++ b/hw/xfree86/common/xf86pciBus.c
+@@ -546,6 +546,15 @@
+                     for (k = 0; k < xf86NumEntities; k++) {
+                         EntityPtr pEnt = xf86Entities[k];
++#ifdef XSERVER_PLATFORM_BUS
++                        if (pEnt->bus.type == BUS_PLATFORM &&
++                            pEnt->bus.id.plat->pdev &&
++                            MATCH_PCI_DEVICES(pEnt->bus.id.plat->pdev, pPci)) {
++                            foundScreen = TRUE;
++                            break;
++                        }
++#endif
++
+                         if (pEnt->bus.type != BUS_PCI)
+                             continue;
+                         if (pEnt->bus.id.pci == pPci) {
+--- a/hw/xfree86/common/xf86platformBus.c
++++ b/hw/xfree86/common/xf86platformBus.c
+@@ -167,11 +167,12 @@
+     for (i = 0; i < xf86NumEntities; i++) {
+         const EntityPtr u = xf86Entities[i];
+-        if (pd->pdev && u->bus.type == BUS_PCI)
+-            return !MATCH_PCI_DEVICES(pd->pdev, u->bus.id.pci);
+-        if ((u->bus.type == BUS_PLATFORM) && (pd == u->bus.id.plat)) {
++        if (pd->pdev && u->bus.type == BUS_PCI &&
++            MATCH_PCI_DEVICES(pd->pdev, u->bus.id.pci))
++            return FALSE;
++
++        if ((u->bus.type == BUS_PLATFORM) && (pd == u->bus.id.plat))
+             return FALSE;
+-        }
+     }
+     return TRUE;
+ }
+@@ -302,6 +303,11 @@
+         for (nent = 0; nent < xf86NumEntities; nent++) {
+             EntityPtr pEnt = xf86Entities[nent];
++            if (dev->pdev && pEnt->bus.type == BUS_PCI &&
++                MATCH_PCI_DEVICES(dev->pdev, pEnt->bus.id.pci)) {
++                return FALSE;
++            }
++
+             if (pEnt->bus.type != BUS_PLATFORM)
+                 continue;
+             if (pEnt->bus.id.plat == dev) {
+@@ -368,18 +374,15 @@
+                 /* for non-seat0 servers assume first device is the master */
+                 if (ServerIsNotSeat0())
+                     break;
+-                if (xf86_platform_devices[j].pdev) {
+-                    if (xf86IsPrimaryPlatform(&xf86_platform_devices[j]))
+-                        break;
+-                }
+-                else {
++                if (xf86IsPrimaryPlatform(&xf86_platform_devices[j]))
++                    break;
++                else
+                     /* there's no way to handle real platform devices at this point,
+                      * as there's no valid busID to be used, so try to move forward
+                      * in case there's only one platform device, and see if the
+                      * driver's probe succeeds or not at least once */
+                     if ((xf86_num_platform_devices == 1) && (!foundScreen))
+                         break;
+-                }
+             }
+         }
+@@ -398,6 +401,7 @@
+         }
+     }
++    free(devList);
+     return foundScreen;
+ }
diff --git a/debian/patches/xf86-ignore-conflicting-rr-caps.patch b/debian/patches/xf86-ignore-conflicting-rr-caps.patch
new file mode 100644 (file)
index 0000000..162a30f
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/hw/xfree86/modes/xf86RandR12.c
++++ b/hw/xfree86/modes/xf86RandR12.c
+@@ -1569,10 +1569,16 @@
+     }
+     if (config->name) {
++        uint32_t caps = pScrn->capabilities;
+         config->randr_provider = RRProviderCreate(pScreen, config->name,
+                                                   strlen(config->name));
+-        RRProviderSetCapabilities(config->randr_provider, pScrn->capabilities);
++        if (!pScreen->isGPU)
++            caps &= RR_Capability_SinkOffload | RR_Capability_SourceOutput;
++        else
++            caps &= RR_Capability_SourceOffload | RR_Capability_SinkOutput;
++
++        RRProviderSetCapabilities(config->randr_provider, caps);
+     }
+     return TRUE;
diff --git a/debian/patches/xf86-inactive-gpuscreen.patch b/debian/patches/xf86-inactive-gpuscreen.patch
new file mode 100644 (file)
index 0000000..11ffec4
--- /dev/null
@@ -0,0 +1,26 @@
+diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
+index c790d50..a47c2d0 100644
+--- a/hw/xfree86/common/xf86platformBus.c
++++ b/hw/xfree86/common/xf86platformBus.c
+@@ -387,7 +387,7 @@ xf86platformProbeDev(DriverPtr drvp)
+     Bool foundScreen = FALSE;
+     GDevPtr *devList;
+     const unsigned numDevs = xf86MatchDevice(drvp->driverName, &devList);
+-    int i, j;
++    int i, j, flags;
+     /* find the main device or any device specificed in xorg.conf */
+     for (i = 0; i < numDevs; i++) {
+@@ -415,7 +415,11 @@ xf86platformProbeDev(DriverPtr drvp)
+         if (j == xf86_num_platform_devices)
+              continue;
+-        foundScreen = probeSingleDevice(&xf86_platform_devices[j], drvp, devList[i], 0);
++        flags = 0;
++        if (!devList[i]->active)
++            flags |= PLATFORM_PROBE_GPU_SCREEN;
++
++        foundScreen = probeSingleDevice(&xf86_platform_devices[j], drvp, devList[i], flags);
+         if (!foundScreen)
+             continue;
+     }
diff --git a/debian/patches/xfree86-no-xv-for-gpuscreens.patch b/debian/patches/xfree86-no-xv-for-gpuscreens.patch
new file mode 100644 (file)
index 0000000..cfb0f08
--- /dev/null
@@ -0,0 +1,36 @@
+diff --git a/hw/xfree86/common/xf86xv.c b/hw/xfree86/common/xf86xv.c
+index 92d0f6d..a33366a 100644
+--- a/hw/xfree86/common/xf86xv.c
++++ b/hw/xfree86/common/xf86xv.c
+@@ -234,7 +234,7 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num)
+     XF86XVScreenPtr ScreenPriv;
+     XvScreenPtr pxvs;
+-    if (num <= 0 || noXvExtension)
++    if (num <= 0 || noXvExtension || pScreen->isGPU)
+         return FALSE;
+     if (Success != XvScreenInit(pScreen))
+diff --git a/hw/xfree86/common/xf86xvmc.c b/hw/xfree86/common/xf86xvmc.c
+index 78a32bf..a0f6fcd 100644
+--- a/hw/xfree86/common/xf86xvmc.c
++++ b/hw/xfree86/common/xf86xvmc.c
+@@ -148,11 +148,15 @@ xf86XvMCScreenInit(ScreenPtr pScreen,
+ {
+     XvMCAdaptorPtr pAdapt;
+     xf86XvMCScreenPtr pScreenPriv;
+-    XvScreenPtr pxvs = (XvScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
+-                                                      XF86XvScreenKey);
++    XvScreenPtr pxvs;
+     int i, j;
+-    if (noXvExtension)
++    if (noXvExtension || pScreen->isGPU || !XF86XvScreenKey)
++        return FALSE;
++
++    pxvs = (XvScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
++                                          XF86XvScreenKey);
++    if (!pxvs)
+         return FALSE;
+     if (!(pAdapt = malloc(sizeof(XvMCAdaptorRec) * num_adaptors)))
diff --git a/debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch b/debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch
new file mode 100644 (file)
index 0000000..c7f70cc
--- /dev/null
@@ -0,0 +1,68 @@
+From a6f5ffd5879e7fb052d343592951cc476b699bb4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= <lbsousajr@gmail.com>
+Date: Thu, 3 Apr 2014 11:19:15 -0300
+Subject: [PATCH] xfree86: add short description about MatchSeat key in
+ xorg.conf man page
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Laércio de Sousa <lbsousajr@gmail.com>
+Reviewed-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ hw/xfree86/man/xorg.conf.man | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man
+index 6d2652e..cadd87b 100644
+--- a/hw/xfree86/man/xorg.conf.man
++++ b/hw/xfree86/man/xorg.conf.man
+@@ -1378,6 +1378,14 @@ for the regular text mode.
+ The frequency is specified in MHz.
+ This is rarely used.
+ .TP 7
++.BI "MatchSeat  " "seat\-id"
++Only apply this
++.B Device
++section if X server was started with
++.B -seat
++.I seat\-id
++option.
++.TP 7
+ .BI "Option \*qModeDebug\*q \*q" boolean \*q
+ Enable printing of additional debugging information about modesetting to
+ the server log.
+@@ -1900,6 +1908,14 @@ The only case where there is even a choice in this value is for depth 24,
+ where some hardware supports both a packed 24 bit framebuffer layout and a
+ sparse 32 bit framebuffer layout.
+ .TP 7
++.BI "MatchSeat  " "seat\-id"
++Only apply this
++.B Screen
++section if X server was started with
++.B -seat
++.I seat\-id
++option.
++.TP 7
+ .B Options
+ Various
+ .B Option
+@@ -2295,6 +2311,14 @@ and the first two should normally be used to indicate the core pointer
+ and core keyboard devices respectively.
+ .RE
+ .TP 7
++.BI "MatchSeat  " "seat\-id"
++Only apply this
++.B ServerLayout
++section if X server was started with
++.B -seat
++.I seat\-id
++option.
++.TP 7
+ .B Options
+ In addition to the following, any option permitted in the
+ .B ServerFlags
+-- 
+2.0.4
+
diff --git a/debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch b/debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch
new file mode 100644 (file)
index 0000000..31ab950
--- /dev/null
@@ -0,0 +1,248 @@
+From 7070ebeebaca1b51f8a2801989120784a1c374ae Mon Sep 17 00:00:00 2001
+From: Oleg Samarin <osamarin68@gmail.com>
+Date: Thu, 3 Apr 2014 11:19:14 -0300
+Subject: [PATCH] xfree86: add new key MatchSeat to xorg.conf sections
+ "Device", "Screen", and "ServerLayout"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This patch introduces a new key MatchSeat in xorg.conf (also applies to
+any .conf file in xorg.conf.d). It will allow targeting a given
+"Device", "Screen", and/or "ServerLayout" section to a particular
+seat only (specified by option "-seat" in X server command line),
+so that other seats won't be affected.
+
+Without this patch, one needs to write a separate xorg.conf.custom
+file and pass it to X server via "-config" option, if one wants that
+these settings only apply for the right seat. However, in some cases,
+this solution is undesirable or even impossible (e.g. when using GDM,
+which doesn't allow X server command line customization).
+
+Example file (/etc/X11/xorg.conf.d/seat1.conf), which would be ignored
+by X server unless it was started with "-seat seat1" option:
+
+Section "Device"
+    Identifier "card0"
+    Driver "nvidia"
+    Option "NoLogo" "True"
+    MatchSeat "seat1"
+EndSection
+
+Signed-off-by: Oleg Samarin <osamarin68@gmail.com>
+Signed-off-by: Laércio de Sousa <lbsousajr@gmail.com>
+Reviewed-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ hw/xfree86/common/xf86Config.c | 34 +++++++++++++++++++++++++---------
+ hw/xfree86/parser/Device.c     |  6 ++++++
+ hw/xfree86/parser/Layout.c     |  6 ++++++
+ hw/xfree86/parser/Screen.c     |  6 ++++++
+ hw/xfree86/parser/xf86Parser.h |  3 +++
+ hw/xfree86/parser/xf86tokens.h |  1 +
+ 6 files changed, 47 insertions(+), 9 deletions(-)
+
+Index: xorg-server-trusty-matchseat/hw/xfree86/common/xf86Config.c
+===================================================================
+--- xorg-server-trusty-matchseat.orig/hw/xfree86/common/xf86Config.c   2014-09-11 10:50:39.823851011 -0300
++++ xorg-server-trusty-matchseat/hw/xfree86/common/xf86Config.c        2014-09-11 10:55:16.098992439 -0300
+@@ -232,6 +232,18 @@
+     return tmp_path;
+ }
++#define FIND_SUITABLE(pointertype, listhead, ptr)                                            \
++    do {                                                                                     \
++        pointertype _l, _p;                                                                  \
++                                                                                             \
++        for (_l = (listhead), _p = NULL; !_p && _l; _l = (pointertype)_l->list.next) {       \
++            if (!_l->match_seat || (SeatId && xf86nameCompare(_l->match_seat, SeatId) == 0)) \
++                _p = _l;                                                                     \
++        }                                                                                    \
++                                                                                             \
++        (ptr) = _p;                                                                          \
++    } while(0)
++
+ /*
+  * use the datastructure that the parser provides and pick out the parts
+  * that we need at this point
+@@ -1600,8 +1612,11 @@
+      * config file, or - if it is NULL - configScreen autogenerates one for
+      * us */
+     if (!count) {
++        XF86ConfScreenPtr screen;
++
++        FIND_SUITABLE (XF86ConfScreenPtr, xf86configptr->conf_screen_lst, screen);
+         slp[0].screen = xnfcalloc(1, sizeof(confScreenRec));
+-        if (!configScreen(slp[0].screen, xf86configptr->conf_screen_lst,
++        if (!configScreen(slp[0].screen, screen,
+                           0, X_CONFIG)) {
+             free(slp[0].screen);
+             free(slp);
+@@ -1841,7 +1856,7 @@
+      * set it to NULL so that the section can be autoconfigured later */
+     screenp->device = xnfcalloc(1, sizeof(GDevRec));
+     if ((!conf_screen->scrn_device) && (xf86configptr->conf_device_lst)) {
+-        conf_screen->scrn_device = xf86configptr->conf_device_lst;
++        FIND_SUITABLE (XF86ConfDevicePtr, xf86configptr->conf_device_lst, conf_screen->scrn_device);
+         xf86Msg(X_DEFAULT, "No device specified for screen \"%s\".\n"
+                 "\tUsing the first device section listed.\n", screenp->id);
+     }
+@@ -2374,6 +2389,7 @@
+     char *scanptr;
+     Bool singlecard = 0;
+     Bool implicit_layout = FALSE;
++    XF86ConfLayoutPtr layout;
+     if (!autoconfig) {
+         char *filename, *dirname, *sysdirname;
+@@ -2449,14 +2465,17 @@
+      */
+     /* First check if a layout section is present, and if it is valid. */
++    FIND_SUITABLE(XF86ConfLayoutPtr, xf86configptr->conf_layout_lst, layout);
++    if (layout == NULL || xf86ScreenName != NULL) {
++        XF86ConfScreenPtr screen;
+-    if (xf86configptr->conf_layout_lst == NULL || xf86ScreenName != NULL) {
+         if (xf86ScreenName == NULL) {
+             xf86Msg(X_DEFAULT,
+                     "No Layout section.  Using the first Screen section.\n");
+         }
++        FIND_SUITABLE (XF86ConfScreenPtr, xf86configptr->conf_screen_lst, screen);
+         if (!configImpliedLayout(&xf86ConfigLayout,
+-                                 xf86configptr->conf_screen_lst,
++                                 screen,
+                                  xf86configptr)) {
+             xf86Msg(X_ERROR, "Unable to determine the screen layout\n");
+             return CONFIG_PARSE_ERROR;
+@@ -2471,16 +2490,13 @@
+             if (optlist && xf86FindOption(optlist, "defaultserverlayout"))
+                 dfltlayout =
+                     xf86SetStrOption(optlist, "defaultserverlayout", NULL);
+-            if (!configLayout
+-                (&xf86ConfigLayout, xf86configptr->conf_layout_lst,
+-                 dfltlayout)) {
++            if (!configLayout(&xf86ConfigLayout, layout, dfltlayout)) {
+                 xf86Msg(X_ERROR, "Unable to determine the screen layout\n");
+                 return CONFIG_PARSE_ERROR;
+             }
+         }
+         else {
+-            if (!configLayout(&xf86ConfigLayout, xf86configptr->conf_layout_lst,
+-                              NULL)) {
++            if (!configLayout(&xf86ConfigLayout, layout, NULL)) {
+                 xf86Msg(X_ERROR, "Unable to determine the screen layout\n");
+                 return CONFIG_PARSE_ERROR;
+             }
+Index: xorg-server-trusty-matchseat/hw/xfree86/parser/Device.c
+===================================================================
+--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/Device.c       2014-09-11 10:48:54.272129993 -0300
++++ xorg-server-trusty-matchseat/hw/xfree86/parser/Device.c    2014-09-11 10:55:16.094992284 -0300
+@@ -72,6 +72,7 @@
+     {RAMDAC, "ramdac"},
+     {DACSPEED, "dacspeed"},
+     {CLOCKS, "clocks"},
++    {MATCHSEAT, "matchseat"},
+     {OPTION, "option"},
+     {VIDEORAM, "videoram"},
+     {BIOSBASE, "biosbase"},
+@@ -217,6 +218,11 @@
+                 Error(NUMBER_MSG, "TextClockFreq");
+             ptr->dev_textclockfreq = (int) (val.realnum * 1000.0 + 0.5);
+             break;
++        case MATCHSEAT:
++            if (xf86getSubToken(&(ptr->dev_comment)) != STRING)
++                Error(QUOTE_MSG, "MatchSeat");
++            ptr->match_seat = val.str;
++            break;
+         case OPTION:
+             ptr->dev_option_lst = xf86parseOption(ptr->dev_option_lst);
+             break;
+Index: xorg-server-trusty-matchseat/hw/xfree86/parser/Layout.c
+===================================================================
+--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/Layout.c       2014-09-11 10:48:54.272129993 -0300
++++ xorg-server-trusty-matchseat/hw/xfree86/parser/Layout.c    2014-09-11 10:55:16.094992284 -0300
+@@ -71,6 +71,7 @@
+     {ENDSECTION, "endsection"},
+     {SCREEN, "screen"},
+     {IDENTIFIER, "identifier"},
++    {MATCHSEAT, "matchseat"},
+     {INACTIVE, "inactive"},
+     {INPUTDEVICE, "inputdevice"},
+     {OPTION, "option"},
+@@ -110,6 +111,11 @@
+             ptr->lay_identifier = val.str;
+             has_ident = TRUE;
+             break;
++        case MATCHSEAT:
++            if (xf86getSubToken(&(ptr->lay_comment)) != STRING)
++                Error(QUOTE_MSG, "MatchSeat");
++            ptr->match_seat = val.str;
++            break;
+         case INACTIVE:
+         {
+             XF86ConfInactivePtr iptr;
+Index: xorg-server-trusty-matchseat/hw/xfree86/parser/Screen.c
+===================================================================
+--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/Screen.c       2014-09-11 10:48:54.272129993 -0300
++++ xorg-server-trusty-matchseat/hw/xfree86/parser/Screen.c    2014-09-11 10:55:16.094992284 -0300
+@@ -199,6 +199,7 @@
+ static xf86ConfigSymTabRec ScreenTab[] = {
+     {ENDSECTION, "endsection"},
+     {IDENTIFIER, "identifier"},
++    {MATCHSEAT, "matchseat"},
+     {OBSDRIVER, "driver"},
+     {MDEVICE, "device"},
+     {MONITOR, "monitor"},
+@@ -237,6 +238,11 @@
+                 Error(ONLY_ONE_MSG, "Identifier or Driver");
+             has_ident = TRUE;
+             break;
++        case MATCHSEAT:
++            if (xf86getSubToken(&(ptr->scrn_comment)) != STRING)
++                Error(QUOTE_MSG, "MatchSeat");
++            ptr->match_seat = val.str;
++            break;
+         case OBSDRIVER:
+             if (xf86getSubToken(&(ptr->scrn_comment)) != STRING)
+                 Error(QUOTE_MSG, "Driver");
+Index: xorg-server-trusty-matchseat/hw/xfree86/parser/xf86Parser.h
+===================================================================
+--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/xf86Parser.h   2014-09-11 10:48:54.272129993 -0300
++++ xorg-server-trusty-matchseat/hw/xfree86/parser/xf86Parser.h        2014-09-11 10:55:16.094992284 -0300
+@@ -224,6 +224,7 @@
+     int dev_screen;
+     XF86OptionPtr dev_option_lst;
+     char *dev_comment;
++    char *match_seat;
+ } XF86ConfDeviceRec, *XF86ConfDevicePtr;
+ typedef struct {
+@@ -275,6 +276,7 @@
+     XF86OptionPtr scrn_option_lst;
+     char *scrn_comment;
+     int scrn_virtualX, scrn_virtualY;
++    char *match_seat;
+ } XF86ConfScreenRec, *XF86ConfScreenPtr;
+ typedef struct {
+@@ -366,6 +368,7 @@
+     XF86ConfInactivePtr lay_inactive_lst;
+     XF86ConfInputrefPtr lay_input_lst;
+     XF86OptionPtr lay_option_lst;
++    char *match_seat;
+     char *lay_comment;
+ } XF86ConfLayoutRec, *XF86ConfLayoutPtr;
+Index: xorg-server-trusty-matchseat/hw/xfree86/parser/xf86tokens.h
+===================================================================
+--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/xf86tokens.h   2014-09-11 10:48:54.272129993 -0300
++++ xorg-server-trusty-matchseat/hw/xfree86/parser/xf86tokens.h        2014-09-11 10:55:16.094992284 -0300
+@@ -87,6 +87,7 @@
+     VENDOR,
+     DASH,
+     COMMA,
++    MATCHSEAT,
+     OPTION,
+     COMMENT,
diff --git a/debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch b/debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch
new file mode 100644 (file)
index 0000000..982d629
--- /dev/null
@@ -0,0 +1,52 @@
+From 29b1484bb9555e45067669cbfe68a3c40596f4ff Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= <lbsousajr@gmail.com>
+Date: Thu, 3 Apr 2014 11:19:13 -0300
+Subject: [PATCH] xfree86: allow fallback to PCI bus probe for graphics devices
+ on non-seat0 X servers (#66851)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Currently non-seat0 X servers only probe platform bus for graphics devices,
+which is OK for most KMS-compliant drivers. However, for non-KMS drivers
+(like NVIDIA proprietary ones), graphics devices can't be reached
+by platform bus probe, resulting in a "No devices detected" error.
+
+This patch allows a fallback to PCI bus probe for non-seat0 X servers
+in case no platform bus graphics device is found.
+
+Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=66851
+
+Signed-off-by: Laércio de Sousa <lbsousajr@gmail.com>
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Reviewed-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ hw/xfree86/common/xf86Bus.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
+index 507c57d..b3b3f8c 100644
+--- a/hw/xfree86/common/xf86Bus.c
++++ b/hw/xfree86/common/xf86Bus.c
+@@ -81,7 +81,7 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only)
+     if (drv->platformProbe != NULL) {
+         foundScreen = xf86platformProbeDev(drv);
+     }
+-    if (ServerIsNotSeat0())
++    if (ServerIsNotSeat0() && foundScreen)
+         return foundScreen;
+ #endif
+@@ -201,7 +201,7 @@ xf86BusProbe(void)
+ {
+ #ifdef XSERVER_PLATFORM_BUS
+     xf86platformProbe();
+-    if (ServerIsNotSeat0())
++    if (ServerIsNotSeat0() && xf86_num_platform_devices > 0)
+         return;
+ #endif
+ #ifdef XSERVER_LIBPCIACCESS
+-- 
+2.0.4
+
diff --git a/debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch b/debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch
new file mode 100644 (file)
index 0000000..4106a27
--- /dev/null
@@ -0,0 +1,50 @@
+From 46cf2a60934076bf568062eb83121ce90b6ff596 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= <lbsousajr@gmail.com>
+Date: Thu, 12 Dec 2013 14:22:48 -0200
+Subject: [PATCH] xfree86: Keep a non-seat0 X server from touching VTs (#71258)
+
+Updated patch following Hans de Goede's advice.
+
+If -seat option is passed with a value different from seat0,
+X server won't call xf86OpenConsole().
+
+This is needed to avoid any race condition between seat0 and
+non-seat0 X servers. If a non-seat0 X server opens a given VT
+before a seat0 one which expects to open the same VT, one can
+get an inactive systemd-logind graphical session for seat0.
+
+This patch was first tested in a multiseat setup with multiple
+video cards and works quite well.
+
+I suppose it can also make things like DontVTSwitch and -sharevts
+meaningless for non-seat0 seats, so it may fix bug #69477, too.
+
+Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71258
+       https://bugs.freedesktop.org/show_bug.cgi?id=69477 (maybe)
+
+See also: http://lists.x.org/archives/xorg-devel/2013-October/038391.html
+          https://bugzilla.redhat.com/show_bug.cgi?id=1018196
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+---
+ hw/xfree86/common/xf86Init.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
+index 9c8a86a..952bf37 100644
+--- a/hw/xfree86/common/xf86Init.c
++++ b/hw/xfree86/common/xf86Init.c
+@@ -544,7 +544,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
+             if (NEED_IO_ENABLED(flags))
+                 want_hw_access = TRUE;
+-            if (!(flags & HW_SKIP_CONSOLE))
++            /* Non-seat0 X servers should not open console */
++            if (!(flags & HW_SKIP_CONSOLE) && !ServerIsNotSeat0())
+                 xorgHWOpenConsole = TRUE;
+         }
+-- 
+2.0.4
+
diff --git a/debian/patches/xi-dont-copy-too-much.patch b/debian/patches/xi-dont-copy-too-much.patch
new file mode 100644 (file)
index 0000000..117f7f4
--- /dev/null
@@ -0,0 +1,67 @@
+commit 56929f41e6c4cc1b2d72a33d14b4d993e7b613a3
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Tue Apr 29 16:52:01 2014 +1000
+
+    Xi: don't copy a DeviceEvent into an InternalEvent
+    
+    ==26141== Invalid read of size 8
+    ==26141==    at 0x58FAEA: DeliverEmulatedMotionEvent (exevents.c:1484)
+    
+    An InternalEvent is bigger than a DeviceEvent, thus copying one to the other
+    reads past the allocated boundary. Shouldn't have any real effect since we
+    shouldn't access anything past the DeviceEvent boundary if the event type is
+    correct.
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+diff --git a/Xi/exevents.c b/Xi/exevents.c
+index 9c207eb..02530bd 100644
+--- a/Xi/exevents.c
++++ b/Xi/exevents.c
+@@ -1469,7 +1469,7 @@ static void
+ DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
+                            InternalEvent *ev)
+ {
+-    InternalEvent motion;
++    DeviceEvent motion;
+     if (ti->num_listeners) {
+         ClientPtr client;
+@@ -1481,11 +1481,11 @@ DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
+             ti->listeners[0].type != LISTENER_POINTER_GRAB)
+             return;
+-        motion = *ev;
+-        motion.any.type = ET_TouchUpdate;
+-        motion.device_event.detail.button = 0;
++        motion = ev->device_event;
++        motion.type = ET_TouchUpdate;
++        motion.detail.button = 0;
+-        if (!RetrieveTouchDeliveryData(dev, ti, &motion,
++        if (!RetrieveTouchDeliveryData(dev, ti, (InternalEvent*)&motion,
+                                        &ti->listeners[0], &client, &win, &grab,
+                                        &mask))
+             return;
+@@ -1500,18 +1500,18 @@ DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
+             }
+         }
+-        DeliverTouchEmulatedEvent(dev, ti, &motion, &ti->listeners[0], client,
++        DeliverTouchEmulatedEvent(dev, ti, (InternalEvent*)&motion, &ti->listeners[0], client,
+                                   win, grab, mask);
+     }
+     else {
+         InternalEvent button;
+         int converted;
+-        converted = TouchConvertToPointerEvent(ev, &motion, &button);
++        converted = TouchConvertToPointerEvent(ev, (InternalEvent*)&motion, &button);
+         BUG_WARN(converted == 0);
+         if (converted)
+-            ProcessOtherEvent(&motion, dev);
++            ProcessOtherEvent((InternalEvent*)&motion, dev);
+     }
+ }
diff --git a/debian/patches/xi2-resize-touch.patch b/debian/patches/xi2-resize-touch.patch
new file mode 100644 (file)
index 0000000..021dd59
--- /dev/null
@@ -0,0 +1,34 @@
+diff --git a/dix/touch.c b/dix/touch.c
+index a7ea213..1478e38 100644
+--- a/dix/touch.c
++++ b/dix/touch.c
+@@ -460,12 +460,26 @@ TouchEventHistoryPush(TouchPointInfoPtr ti, const DeviceEvent *ev)
+     if (ev->flags & (TOUCH_CLIENT_ID | TOUCH_REPLAYING))
+         return;
++    if (ti->history_elements == ti->history_size - 1) {
++        DeviceEvent *hist = NULL;
++        size_t sz = ti->history_size * 2;
++
++        if (sz < 10000) {
++            hist = realloc(ti->history, sz * sizeof(*hist));
++
++            if (hist) {
++                ti->history = hist;
++                ti->history_size = sz;
++                memset(&hist[sz/2], 0, sizeof(*hist)*sz/2);
++            }
++        }
++    }
++
+     ti->history[ti->history_elements++] = *ev;
+-    /* FIXME: proper overflow fixes */
+     if (ti->history_elements > ti->history_size - 1) {
+         ti->history_elements = ti->history_size - 1;
+-        DebugF("source device %d: history size %d overflowing for touch %u\n",
+-               ti->sourceid, ti->history_size, ti->client_id);
++        ErrorF("source device %d: history size %d overflowing for touch %u\n",
++              ti->sourceid, ti->history_size, ti->client_id);
+     }
+ }
diff --git a/debian/patches/xmir.patch b/debian/patches/xmir.patch
new file mode 100644 (file)
index 0000000..c649889
--- /dev/null
@@ -0,0 +1,2145 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -631,6 +631,7 @@
+ AC_ARG_ENABLE(libdrm,         AS_HELP_STRING([--enable-libdrm], [Build Xorg with libdrm support (default: enabled)]), [DRM=$enableval],[DRM=yes])
+ AC_ARG_ENABLE(clientids,      AS_HELP_STRING([--disable-clientids], [Build Xorg with client ID tracking (default: enabled)]), [CLIENTIDS=$enableval], [CLIENTIDS=yes])
+ AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with pciaccess library (default: enabled)]), [PCI=$enableval], [PCI=yes])
++AC_ARG_ENABLE(xmir,           AS_HELP_STRING([--enable-xmir], [Build support for nesting in Mir (default: auto)]), [XMIR=$enableval], [XMIR=auto])
+ AC_ARG_ENABLE(linux_acpi, AC_HELP_STRING([--disable-linux-acpi], [Disable building ACPI support on Linux (if available).]), [enable_linux_acpi=$enableval], [enable_linux_acpi=yes])
+ AC_ARG_ENABLE(linux_apm, AC_HELP_STRING([--disable-linux-apm], [Disable building APM support on Linux (if available).]), [enable_linux_apm=$enableval], [enable_linux_apm=yes])
+@@ -1275,6 +1276,15 @@
+       SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $XINERAMAPROTO"
+ fi
++if test "x$XMIR" != xno; then
++      PKG_CHECK_MODULES([XMIR], [mirclient], [XMIR=yes], [XMIR=no])
++      AC_SUBST([XMIR_LIBS])
++        AC_SUBST([XMIR_CFLAGS])
++        AC_DEFINE(XMIR, 1, [Support Mir nested mode])
++      SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES mirclient"
++fi
++AM_CONDITIONAL(XMIR, [test "x$XMIR" = xyes])
++
+ AM_CONDITIONAL(XACE, [test "x$XACE" = xyes])
+ if test "x$XACE" = xyes; then
+       AC_DEFINE(XACE, 1, [Build X-ACE extension])
+@@ -2439,6 +2449,7 @@
+ hw/xfree86/utils/man/Makefile
+ hw/xfree86/utils/cvt/Makefile
+ hw/xfree86/utils/gtf/Makefile
++hw/xfree86/xmir/Makefile
+ hw/dmx/config/Makefile
+ hw/dmx/config/man/Makefile
+ hw/dmx/doc/Makefile
+--- a/hw/xfree86/Makefile.am
++++ b/hw/xfree86/Makefile.am
+@@ -30,15 +30,20 @@
+ INT10_SUBDIR = int10
+ endif
++if XMIR
++XMIR_SUBDIR = xmir
++endif
++
+ SUBDIRS = common ddc x86emu $(INT10_SUBDIR) os-support parser \
+         ramdac $(VGAHW_SUBDIR) loader modes $(DRI_SUBDIR) \
+         $(DRI2_SUBDIR) . $(VBE_SUBDIR) i2c dixmods \
+-        fbdevhw shadowfb exa $(XF86UTILS_SUBDIR) doc man
++        fbdevhw shadowfb exa $(XF86UTILS_SUBDIR) doc man \
++        $(XMIR_SUBDIR)
+ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
+                parser ramdac shadowfb vbe vgahw \
+                loader dixmods dri dri2 exa modes \
+-             utils doc man
++             utils doc man xmir
+ bin_PROGRAMS = Xorg
+ nodist_Xorg_SOURCES = sdksyms.c
+--- a/hw/xfree86/common/xf86Config.c
++++ b/hw/xfree86/common/xf86Config.c
+@@ -118,6 +118,7 @@
+     {.name = "fb",.toLoad = TRUE,.load_opt = NULL},
+     {.name = "shadow",.toLoad = TRUE,.load_opt = NULL},
+ #endif
++    {.name = "xmir", .toLoad = FALSE, .load_opt = NULL},
+     {.name = NULL,.toLoad = FALSE,.load_opt = NULL}
+ };
+@@ -260,6 +261,17 @@
+         return NULL;
+     }
++    /*
++     * Set the xmir module to autoload if requested.
++     */
++    if (xorgMir) {
++        for (i=0 ; ModuleDefaults[i].name != NULL ; i++) {
++            if (strcmp(ModuleDefaults[i].name, "xmir") == 0) {
++                ModuleDefaults[i].toLoad = TRUE;
++            }
++        }
++    }
++
+     if (xf86configptr->conf_modules) {
+         /* Walk the disable list and let people know what we've parsed to
+          * not be loaded 
+--- a/hw/xfree86/common/xf86Events.c
++++ b/hw/xfree86/common/xf86Events.c
+@@ -105,8 +105,6 @@
+ extern void (*xf86OSPMClose) (void);
+ #endif
+-static void xf86VTSwitch(void);
+-
+ /*
+  * Allow arbitrary drivers or other XFree86 code to register with our main
+  * Wakeup handler.
+@@ -411,7 +409,7 @@
+  * xf86VTSwitch --
+  *      Handle requests for switching the vt.
+  */
+-static void
++_X_EXPORT void
+ xf86VTSwitch(void)
+ {
+     int i;
+@@ -471,7 +469,7 @@
+         xf86AccessLeave();      /* We need this here, otherwise */
+-        if (!xf86VTSwitchAway()) {
++        if (!xorgMir && !xf86VTSwitchAway()) {
+             /*
+              * switch failed
+              */
+@@ -530,7 +528,7 @@
+     }
+     else {
+         DebugF("xf86VTSwitch: Entering\n");
+-        if (!xf86VTSwitchTo())
++        if (!xorgMir && !xf86VTSwitchTo())
+             return;
+ #ifdef XF86PM
+--- a/hw/xfree86/common/xf86Globals.c
++++ b/hw/xfree86/common/xf86Globals.c
+@@ -206,3 +206,6 @@
+ #endif
+ RootWinPropPtr *xf86RegisteredPropertiesTable = NULL;
+ Bool xorgHWAccess = FALSE;
++Bool xorgMir = FALSE;
++const char *mirID = NULL;
++const char *mirSocket = NULL;
+--- a/hw/xfree86/common/xf86Helper.c
++++ b/hw/xfree86/common/xf86Helper.c
+@@ -100,7 +100,14 @@
+         if (xf86DriverList[drvIndex]->module)
+             UnloadModule(xf86DriverList[drvIndex]->module);
+         free(xf86DriverList[drvIndex]);
+-        xf86DriverList[drvIndex] = NULL;
++
++        /* Compact xf86DriverList array, update xf86NumDrivers */
++        xf86NumDrivers--;
++        if(drvIndex != xf86NumDrivers)
++            memmove(xf86DriverList + drvIndex,
++                    xf86DriverList + drvIndex + 1,
++                    sizeof(DriverPtr) * (xf86NumDrivers - drvIndex));
++        xf86DriverList = realloc(xf86DriverList, xf86NumDrivers * sizeof(DriverPtr));
+     }
+ }
+--- a/hw/xfree86/common/xf86Init.c
++++ b/hw/xfree86/common/xf86Init.c
+@@ -554,7 +554,7 @@
+          * needed at this early stage.
+          */
+-        for (i = 0; i < xf86NumDrivers; i++) {
++        for (i = 0; i < xf86NumDrivers; ) {
+             xorgHWFlags flags = HW_IO;
+             if (xf86DriverList[i]->Identify != NULL)
+@@ -565,11 +565,20 @@
+                                               GET_REQUIRED_HW_INTERFACES,
+                                               &flags);
++            if (xorgMir &&
++                (NEED_IO_ENABLED(flags) || !(flags & HW_SKIP_CONSOLE))) {
++                ErrorF("Driver needs flags %lu, incompatible with nested, deleting.\n", flags);
++                xf86DeleteDriver(i);
++                continue;
++            }
++
+             if (NEED_IO_ENABLED(flags))
+                 want_hw_access = TRUE;
+             if (!(flags & HW_SKIP_CONSOLE))
+                 xorgHWOpenConsole = TRUE;
++
++            i++;
+         }
+         if (xorgHWOpenConsole)
+@@ -662,9 +671,13 @@
+         }
+         /* Remove (unload) drivers that are not required */
+-        for (i = 0; i < xf86NumDrivers; i++)
+-            if (xf86DriverList[i] && xf86DriverList[i]->refCount <= 0)
++        for (i = 0; i < xf86NumDrivers; )
++            if (xf86DriverList[i] &&
++              !xf86DriverHasEntities(xf86DriverList[i]) &&
++              xf86DriverList[i]->refCount <= 0)
+                 xf86DeleteDriver(i);
++            else
++                i++;
+         /*
+          * At this stage we know how many screens there are.
+@@ -1490,6 +1503,17 @@
+         xf86Info.ShareVTs = TRUE;
+         return 1;
+     }
++    if (!strcmp(argv[i], "-mir")) {
++        CHECK_FOR_REQUIRED_ARGUMENT();
++        mirID = argv[++i];
++        xorgMir = TRUE;
++        return 2;
++    }
++    if (!strcmp(argv[i], "-mirSocket")) {
++        CHECK_FOR_REQUIRED_ARGUMENT();
++        mirSocket = argv[++i];
++        return 2;
++    }
+     /* OS-specific processing */
+     return xf86ProcessArgument(argc, argv, i);
+@@ -1563,6 +1587,8 @@
+     ErrorF
+         ("-novtswitch            don't automatically switch VT at reset & exit\n");
+     ErrorF("-sharevts              share VTs with another X server\n");
++    ErrorF
++        ("-mir MirID             run nested in a Mir compositor with app id MirID\n");
+     /* OS-specific usage */
+     xf86UseMsg();
+     ErrorF("\n");
+--- a/hw/xfree86/common/xf86Priv.h
++++ b/hw/xfree86/common/xf86Priv.h
+@@ -93,6 +93,9 @@
+ extern _X_EXPORT const char *xf86VisualNames[];
+ extern _X_EXPORT int xf86Verbose;       /* verbosity level */
+ extern _X_EXPORT int xf86LogVerbose;    /* log file verbosity level */
++extern _X_EXPORT Bool xorgMir;
++extern _X_EXPORT const char *mirID;
++extern _X_EXPORT const char *mirSocket;
+ extern _X_EXPORT RootWinPropPtr *xf86RegisteredPropertiesTable;
+@@ -149,6 +152,9 @@
+ extern _X_EXPORT int (*xf86PMGetEventFromOs) (int fd, pmEvent * events,
+                                               int num);
+ extern _X_EXPORT pmWait (*xf86PMConfirmEventToOs) (int fd, pmEvent event);
++extern _X_EXPORT void
++xf86VTSwitch(void);
++
+ /* xf86Helper.c */
+ extern _X_EXPORT void
+--- a/hw/xfree86/ramdac/xf86Cursor.c
++++ b/hw/xfree86/ramdac/xf86Cursor.c
+@@ -58,7 +58,12 @@
+     xf86CursorScreenPtr ScreenPriv;
+     miPointerScreenPtr PointPriv;
+-    if (!xf86InitHardwareCursor(pScreen, infoPtr))
++    infoPtr->pScrn = xf86ScreenToScrn(pScreen);
++
++    /* If we can't create a hardware cursor don't bother initialising HW cursor support */
++    if (infoPtr->MaxWidth != 0 &&
++        infoPtr->MaxHeight != 0 &&
++        !xf86InitHardwareCursor(pScreen, infoPtr))
+         return FALSE;
+     if (!dixRegisterPrivateKey(&xf86CursorScreenKeyRec, PRIVATE_SCREEN, 0))
+--- a/hw/xfree86/ramdac/xf86HWCurs.c
++++ b/hw/xfree86/ramdac/xf86HWCurs.c
+@@ -114,8 +114,6 @@
+         infoPtr->RealizeCursor = RealizeCursorInterleave0;
+     }
+-    infoPtr->pScrn = xf86ScreenToScrn(pScreen);
+-
+     return TRUE;
+ }
+--- /dev/null
++++ b/hw/xfree86/xmir/Makefile.am
+@@ -0,0 +1,26 @@
++INCLUDES =                                    \
++      $(XORG_INCS)                            \
++        -I$(srcdir)/../ddc                      \
++        -I$(srcdir)/../ramdac                   \
++        -I$(srcdir)/../i2c                      \
++        -I$(srcdir)/../parser                   \
++        -I$(srcdir)/../modes
++
++libxmir_la_LTLIBRARIES = libxmir.la
++libxmir_la_CFLAGS = \
++      -DHAVE_XORG_CONFIG_H \
++      $(DRI_CFLAGS) \
++      $(DIX_CFLAGS) $(XORG_CFLAGS) $(LIBDRM_CFLAGS) \
++      $(XMIR_CFLAGS)
++
++libxmir_la_LDFLAGS = -module -avoid-version $(LIBDRM_LIBS) $(XMIR_LIBS)
++libxmir_ladir = $(moduledir)/extensions
++libxmir_la_SOURCES = \
++      xmir.c \
++      xmir-window.c \
++      xmir-output.c \
++      xmir-thread-proxy.c \
++      xmir.h \
++      xmir-private.h
++
++sdk_HEADERS = xmir.h
+--- /dev/null
++++ b/hw/xfree86/xmir/xmir-output.c
+@@ -0,0 +1,678 @@
++/*
++ * Copyright © 2012 Canonical, Inc
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Soft-
++ * ware"), to deal in the Software without restriction, including without
++ * limitation the rights to use, copy, modify, merge, publish, distribute,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, provided that the above copyright
++ * notice(s) and this permission notice appear in all copies of the Soft-
++ * ware and that both the above copyright notice(s) and this permission
++ * notice appear in supporting documentation.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
++ * QUENTIAL 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 PERFOR-
++ * MANCE OF THIS SOFTWARE.
++ *
++ * Except as contained in this notice, the name of a copyright holder shall
++ * not be used in advertising or otherwise to promote the sale, use or
++ * other dealings in this Software without prior written authorization of
++ * the copyright holder.
++ *
++ * Authors:
++ *   Christopher James Halse Rogers (christopher.halse.rogers@canonical.com)
++ */
++
++#include <stdlib.h>
++#include <stdio.h>
++#include <math.h>
++
++#include <xorg-config.h>
++#include "xmir.h"
++#include "xmir-private.h"
++#include "xf86Crtc.h"
++#include "xf86Priv.h"
++
++struct xmir_crtc {
++    xmir_screen             *xmir;
++    xmir_window             *root_fragment;
++    MirDisplayConfiguration *config;
++};
++
++static const char *
++xmir_mir_dpms_mode_description(MirPowerMode mode)
++{
++    switch (mode)
++    {
++    case mir_power_mode_on:
++        return "mir_power_mode_on";
++    case mir_power_mode_standby:
++        return "mir_power_mode_standby";
++    case mir_power_mode_suspend:
++        return "mir_power_mode_suspend";
++    case mir_power_mode_off:
++        return "mir_power_mode_off";
++    default:
++        return "OMGUNKNOWN!";
++    }
++}
++
++static void
++xmir_crtc_dpms(xf86CrtcPtr crtc, int mode)
++{
++    xf86CrtcConfigPtr crtc_cfg = XF86_CRTC_CONFIG_PTR(crtc->scrn);
++    struct xmir_crtc *xmir_crtc = crtc->driver_private;
++
++    for (int i = 0; i < crtc_cfg->num_output; i++) {
++        /* If this output should be driven by our "CRTC", set DPMS mode */
++        MirDisplayOutput *output = crtc_cfg->output[i]->driver_private;
++        if (crtc_cfg->output[i]->crtc == crtc) {
++            xf86Msg(X_INFO, "Setting DPMS mode for output %d to %d\n", i, mode);
++            switch (mode) {
++            case DPMSModeOn:
++                output->power_mode = mir_power_mode_on;
++                xmir_crtc->xmir->dpms_on = TRUE;
++                break;
++            case DPMSModeStandby:
++                output->power_mode = mir_power_mode_standby;
++                xmir_crtc->xmir->dpms_on = FALSE;
++                break;
++            case DPMSModeSuspend:
++                output->power_mode = mir_power_mode_suspend;
++                xmir_crtc->xmir->dpms_on = FALSE;
++                break;
++            case DPMSModeOff:
++                output->power_mode = mir_power_mode_off;
++                xmir_crtc->xmir->dpms_on = FALSE;
++                break;
++            }
++        }
++    }
++    mir_wait_for(mir_connection_apply_display_config(xmir_connection_get(),
++                                                     xmir_crtc->config));
++}
++
++static const char*
++xmir_get_output_type_str(MirDisplayOutput *mir_output)
++{
++    const char *str = "Invalid";
++
++    switch(mir_output->type)
++    {
++    case mir_display_output_type_vga: str = "VGA"; break;
++    case mir_display_output_type_dvii: str = "DVI"; break;
++    case mir_display_output_type_dvid: str = "DVI"; break;
++    case mir_display_output_type_dvia: str = "DVI"; break;
++    case mir_display_output_type_composite: str = "Composite"; break;
++    case mir_display_output_type_svideo: str = "TV"; break;
++    case mir_display_output_type_lvds: str = "LVDS"; break;
++    case mir_display_output_type_component: str = "CTV"; break;
++    case mir_display_output_type_ninepindin: str = "DIN"; break;
++    case mir_display_output_type_displayport: str = "DP"; break;
++    case mir_display_output_type_hdmia: str = "HDMI"; break;
++    case mir_display_output_type_hdmib: str = "HDMI"; break;
++    case mir_display_output_type_tv: str = "TV"; break;
++    case mir_display_output_type_edp: str = "eDP"; break;
++
++    case mir_display_output_type_unknown: str = "None"; break;
++    default: break;
++    }
++
++    return str;
++}
++
++static void
++xmir_output_populate(xf86OutputPtr xf86output, MirDisplayOutput *output)
++{
++    /* We can always arbitrarily clone and output */
++    xf86output->possible_crtcs = 0xffffffff;
++    xf86output->possible_clones = 0xffffffff;
++
++    xf86output->driver_private = output;
++
++    xf86output->interlaceAllowed = FALSE;
++    xf86output->doubleScanAllowed = FALSE;
++    xf86output->mm_width = output->physical_width_mm;
++    xf86output->mm_height = output->physical_height_mm;
++    /* TODO: Subpixel order from Mir */
++    xf86output->subpixel_order = SubPixelUnknown;
++}
++
++static DisplayModePtr
++xmir_create_xf86mode(const struct MirDisplayMode *mir_mode)
++{
++    DisplayModePtr mode;
++
++    mode = xf86CVTMode(mir_mode->horizontal_resolution,
++                       mir_mode->vertical_resolution,
++                       mir_mode->refresh_rate,
++                       FALSE, FALSE);
++
++    /*
++     * And now, because the CVT standard doesn't support such common
++     * resolutions as 1366x768...
++     */
++    mode->VDisplay = mir_mode->vertical_resolution;
++    mode->HDisplay = mir_mode->horizontal_resolution;
++
++    xf86SetModeDefaultName(mode);
++
++    return mode;
++}
++
++static void
++xmir_free_xf86mode(DisplayModePtr mode)
++{
++    free(mode->name);
++    free(mode);
++}
++
++static Bool
++xmir_set_mode_for_output(MirDisplayOutput *output,
++                         DisplayModePtr mode)
++{
++    for (int i = 0; i < output->num_modes; i++) {
++        Bool modes_equal = FALSE;
++        DisplayModePtr mir_mode = NULL;
++        xf86Msg(X_INFO, "Checking against mode (%dx%d)@%.2f\n",
++                output->modes[i].horizontal_resolution,
++                output->modes[i].vertical_resolution,
++                output->modes[i].refresh_rate);
++
++        mir_mode = xmir_create_xf86mode(&output->modes[i]);
++        modes_equal = xf86ModesEqual(mode, mir_mode);
++        xmir_free_xf86mode(mir_mode);
++
++        if (modes_equal) {
++            output->current_mode = i;
++            output->used = 1;
++            xf86Msg(X_INFO, "Matched mode %d\n", i);
++            return TRUE;
++        }
++    }
++    return FALSE;
++}
++
++static uint32_t
++xmir_update_outputs_for_crtc(xf86CrtcPtr crtc, DisplayModePtr mode, int x, int y)
++{
++    xf86CrtcConfigPtr crtc_cfg = XF86_CRTC_CONFIG_PTR(crtc->scrn);
++    uint32_t representative_output_id = mir_display_output_id_invalid;
++
++    for (int i = 0; i < crtc_cfg->num_output; i++) {
++        /* If this output should be driven by our "CRTC", set its mode */
++        if (crtc_cfg->output[i]->crtc == crtc) {
++            MirDisplayOutput *output = crtc_cfg->output[i]->driver_private;
++            xmir_set_mode_for_output(output, mode);
++            output->position_x = x;
++            output->position_y = y;
++            representative_output_id = output->output_id;
++        }
++    }
++    return representative_output_id;
++}
++
++static void
++xmir_disable_unused_outputs(xf86CrtcPtr crtc)
++{
++    xf86CrtcConfigPtr crtc_cfg = XF86_CRTC_CONFIG_PTR(crtc->scrn);
++
++    for (int i = 0; i < crtc_cfg->num_output; i++)
++        /* If any outputs are no longer associated with a CRTC, disable them */
++        if (crtc_cfg->output[i]->crtc == NULL)
++            ((MirDisplayOutput*)crtc_cfg->output[i]->driver_private)->used = 0;
++}
++
++static void
++xmir_stupid_callback(MirSurface *surf, void *ctx)
++{
++}
++
++static void
++xmir_dump_config(MirDisplayConfiguration *config)
++{
++  for (int i = 0; i < config->num_outputs; i++)
++    {
++      xf86Msg(X_INFO, "Output %d (%s, %s) has mode %d (%d x %d @ %.2f), position (%d,%d), dpms: %s\n",
++            config->outputs[i].output_id,
++            config->outputs[i].connected ? "connected" : "disconnected",
++            config->outputs[i].used ? "enabled" : "disabled",
++            config->outputs[i].current_mode,
++          config->outputs[i].used ? config->outputs[i].modes[config->outputs[i].current_mode].horizontal_resolution : 0,
++          config->outputs[i].used ? config->outputs[i].modes[config->outputs[i].current_mode].vertical_resolution : 0,
++          config->outputs[i].used ? config->outputs[i].modes[config->outputs[i].current_mode].refresh_rate : 0,
++            config->outputs[i].position_x,
++            config->outputs[i].position_y,
++          xmir_mir_dpms_mode_description(config->outputs[i].power_mode));
++      for (int m = 0; m < config->outputs[i].num_modes; m++)
++      {
++        xf86Msg(X_INFO, "  mode %d: (%d x %d @ %.2f)\n",
++                m,
++                config->outputs[i].modes[m].horizontal_resolution,
++
++                config->outputs[i].modes[m].vertical_resolution,
++                config->outputs[i].modes[m].refresh_rate);
++      }
++    }
++}
++
++static void
++xmir_update_config(xf86CrtcConfigPtr crtc_cfg)
++{
++    MirDisplayConfiguration *new_config;
++    struct xmir_crtc *xmir_crtc = crtc_cfg->crtc[0]->driver_private;
++
++    mir_display_config_destroy(xmir_crtc->config);
++
++    new_config = mir_connection_create_display_config(xmir_connection_get());
++    for (int i = 0; i < crtc_cfg->num_crtc; i++) {
++        xmir_crtc = crtc_cfg->crtc[i]->driver_private;
++        xmir_crtc-> config = new_config;
++    }
++
++    if (crtc_cfg->num_output != new_config->num_outputs)
++        FatalError("[xmir] New Mir config has different number of outputs?");
++
++    for (int i = 0; i < crtc_cfg->num_output ; i++) {
++        /* TODO: Ensure that the order actually matches up */
++        xmir_output_populate(crtc_cfg->output[i], new_config->outputs + i);
++    }
++    xf86Msg(X_INFO, "Recieved updated config from Mir:\n");
++    xmir_dump_config(new_config);
++}
++
++static void
++xmir_crtc_surface_created(MirSurface *surface, void *ctx)
++{
++    xf86CrtcPtr crtc = ctx;
++    struct xmir_crtc *xmir_crtc = crtc->driver_private;
++
++    if (xmir_crtc->root_fragment->surface != NULL)
++        mir_surface_release(xmir_crtc->root_fragment->surface, xmir_stupid_callback, NULL);
++
++    xmir_crtc->root_fragment->surface = surface;
++}
++
++static Bool
++xmir_crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
++                         Rotation rotation, int x, int y)
++{
++    MirSurfaceParameters params = {
++        .name = "Xorg",
++        .width = mode->HDisplay,
++        .height = mode->VDisplay,
++        .pixel_format = mir_pixel_format_xrgb_8888,
++        .buffer_usage = mir_buffer_usage_hardware,
++        .output_id = mir_display_output_id_invalid
++    };
++    BoxRec output_bounds = {
++        .x1 = x,
++        .y1 = y,
++        .x2 = x + mode->HDisplay,
++        .y2 = y + mode->VDisplay
++    };
++    struct xmir_crtc *xmir_crtc = crtc->driver_private;
++    uint32_t output_id = mir_display_output_id_invalid;
++    const char *error_msg;
++
++    if (mode->HDisplay == 0 || mode->VDisplay == 0)
++        return FALSE;
++
++    xf86Msg(X_INFO, "Initial configuration for crtc %p:\n", crtc);
++    xmir_dump_config(xmir_crtc->config);
++
++    xf86Msg(X_INFO, "Setting mode to %dx%d (%.2f)\n", mode->HDisplay, mode->VDisplay, mode->VRefresh);
++    output_id = xmir_update_outputs_for_crtc(crtc, mode, x, y);
++    xmir_disable_unused_outputs(crtc);
++
++    xf86Msg(X_INFO, "Updated configuration:\n");
++
++    xmir_dump_config(xmir_crtc->config);
++    mir_wait_for(mir_connection_apply_display_config(xmir_connection_get(),
++                                                     xmir_crtc->config));
++    error_msg = mir_connection_get_error_message(xmir_connection_get());
++    if (*error_msg != '\0') {
++        xf86Msg(X_ERROR, "[xmir] Failed to set new display config: %s\n",
++                error_msg);
++        return FALSE;
++        /* TODO: Restore correct config cache */
++    }
++
++    xf86Msg(X_INFO, "Post-modeset config:\n");
++    xmir_update_config(XF86_CRTC_CONFIG_PTR(crtc->scrn));
++
++    if (output_id == mir_display_output_id_invalid) {
++      if (xmir_crtc->root_fragment->surface != NULL)
++        mir_wait_for(mir_surface_release(xmir_crtc->root_fragment->surface, xmir_stupid_callback, NULL));
++        xmir_crtc->root_fragment->surface = NULL;
++        return TRUE;
++    }
++
++    params.output_id = output_id;
++    xf86Msg(X_INFO, "Putting surface on output %d\n", output_id);
++    mir_wait_for(mir_connection_create_surface(xmir_connection_get(),
++                                             &params,
++                                             xmir_crtc_surface_created,
++                                             crtc));
++    if (!mir_surface_is_valid(xmir_crtc->root_fragment->surface)) {
++        xf86Msg(X_ERROR,
++                "[xmir] Failed to create surface for %dx%d mode: %s\n",
++                mode->HDisplay, mode->VDisplay,
++                mir_surface_get_error_message(xmir_crtc->root_fragment->surface));
++        return FALSE;
++    }
++
++
++    /* During X server init this will be NULL.
++       This is fixed up in xmir_window_create */
++    xmir_crtc->root_fragment->win = xf86ScrnToScreen(crtc->scrn)->root;
++
++    RegionInit(&xmir_crtc->root_fragment->region, &output_bounds, 0);
++    xmir_crtc->root_fragment->has_free_buffer = TRUE;
++
++    return TRUE;
++}
++
++static void
++crtc_set_cursor_colors (xf86CrtcPtr crtc, int bg, int fg)
++{
++}
++
++static void
++crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
++{
++}
++
++static void
++crtc_show_cursor (xf86CrtcPtr crtc)
++{
++}
++
++static void
++crtc_hide_cursor (xf86CrtcPtr crtc)
++{
++}
++
++static void
++crtc_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image)
++{
++}
++
++static PixmapPtr
++crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height)
++{
++    return NULL;
++}
++
++static void *
++crtc_shadow_allocate(xf86CrtcPtr crtc, int width, int height)
++{
++    return NULL;
++}
++
++static void
++crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data)
++{
++}
++
++static void
++xmir_crtc_destroy(xf86CrtcPtr crtc)
++{
++    struct xmir_crtc *xmir_crtc = crtc->driver_private;
++
++    if (xmir_crtc->root_fragment->surface != NULL)
++        mir_surface_release(xmir_crtc->root_fragment->surface, NULL, NULL);
++
++    free(xmir_crtc);
++}
++
++static const xf86CrtcFuncsRec crtc_funcs = {
++    .dpms                = xmir_crtc_dpms,
++    .set_mode_major      = xmir_crtc_set_mode_major,
++    .set_cursor_colors   = crtc_set_cursor_colors,
++    .set_cursor_position = crtc_set_cursor_position,
++    .show_cursor         = crtc_show_cursor,
++    .hide_cursor         = crtc_hide_cursor,
++    .load_cursor_argb    = crtc_load_cursor_argb,
++    .shadow_create       = crtc_shadow_create,
++    .shadow_allocate     = crtc_shadow_allocate,
++    .shadow_destroy      = crtc_shadow_destroy,
++    .destroy             = xmir_crtc_destroy,
++};
++
++static void
++xmir_output_dpms(xf86OutputPtr output, int mode)
++{
++    return;
++}
++
++static xf86OutputStatus
++xmir_output_detect(xf86OutputPtr output)
++{
++    MirDisplayOutput *mir_output = output->driver_private;
++    return mir_output->connected ? XF86OutputStatusConnected : XF86OutputStatusDisconnected;
++}
++
++static Bool
++xmir_output_mode_valid(xf86OutputPtr output, DisplayModePtr pModes)
++{
++    return MODE_OK;
++}
++
++static DisplayModePtr
++xmir_output_get_modes(xf86OutputPtr xf86output)
++{
++    MirDisplayOutput *mir_output = xf86output->driver_private;
++    DisplayModePtr modes = NULL;
++
++    for (int i = 0; i < mir_output->num_modes; i++) {
++        DisplayModePtr mode = xmir_create_xf86mode(&mir_output->modes[i]);
++
++        mode->type = M_T_DRIVER;
++        if (i == mir_output->preferred_mode)
++            mode->type |= M_T_PREFERRED;
++
++        modes = xf86ModesAdd(modes, mode);
++    }
++    /* TODO: Get Mir to send us the EDID blob and add that */
++
++    return modes;
++}
++
++static void
++xmir_output_destroy(xf86OutputPtr xf86output)
++{
++    /* The MirDisplayOutput* in driver_private gets cleaned up by
++       mir_display_config_destroy() */
++}
++
++static const xf86OutputFuncsRec xmir_output_funcs = {
++    .dpms       = xmir_output_dpms,
++    .detect     = xmir_output_detect,
++    .mode_valid = xmir_output_mode_valid,
++    .get_modes  = xmir_output_get_modes,
++    .destroy    = xmir_output_destroy
++};
++
++
++struct xmir_visit_set_pixmap_window {
++    PixmapPtr old, new;
++};
++
++static int
++xmir_visit_set_window_pixmap(WindowPtr window, pointer data)
++{
++    struct xmir_visit_set_pixmap_window *visit = data;
++
++    if (window->drawable.pScreen->GetWindowPixmap(window) == visit->old) {
++        window->drawable.pScreen->SetWindowPixmap(window, visit->new);
++        return WT_WALKCHILDREN;
++    }
++
++    return WT_DONTWALKCHILDREN;
++}
++
++static void
++xmir_set_screen_pixmap(PixmapPtr old_front, PixmapPtr new_front)
++{
++    struct xmir_visit_set_pixmap_window visit = {
++        .old = old_front,
++        .new = new_front
++    };
++    (old_front->drawable.pScreen->SetScreenPixmap)(new_front);
++
++    TraverseTree(old_front->drawable.pScreen->root, &xmir_visit_set_window_pixmap, &visit);
++}
++
++static Bool
++xmir_resize(ScrnInfoPtr scrn, int width, int height)
++{
++    xf86CrtcConfigPtr crtc_cfg = XF86_CRTC_CONFIG_PTR(scrn);
++    ScreenPtr screen = xf86ScrnToScreen(scrn);
++    PixmapPtr old_screen_pixmap, new_screen_pixmap;
++
++    if (scrn->virtualX == width && scrn->virtualY == height)
++        return TRUE;
++
++    old_screen_pixmap = screen->GetScreenPixmap(screen);
++    new_screen_pixmap = screen->CreatePixmap(screen, width, height, scrn->depth,
++                                             CREATE_PIXMAP_USAGE_BACKING_PIXMAP);
++
++    if (!new_screen_pixmap)
++        return FALSE;
++
++    scrn->virtualX = width;
++    scrn->virtualY = height;
++    scrn->displayWidth = width;
++
++    for (int i = 0; i < crtc_cfg->num_crtc; i++) {
++        xf86CrtcPtr crtc = crtc_cfg->crtc[i];
++
++        if (!crtc->enabled)
++            continue;
++
++        xmir_crtc_set_mode_major(crtc, &crtc->mode,
++                                 crtc->rotation, crtc->x, crtc->y);
++    }
++
++    xmir_set_screen_pixmap(old_screen_pixmap, new_screen_pixmap);
++    screen->DestroyPixmap(old_screen_pixmap);
++
++    xf86_reload_cursors(screen);
++
++    return TRUE;
++}
++
++static const xf86CrtcConfigFuncsRec config_funcs = {
++    xmir_resize
++};
++
++static void
++xmir_handle_hotplug(void *ctx)
++{
++    ScrnInfoPtr scrn = *(ScrnInfoPtr *)ctx;
++    xf86CrtcConfigPtr crtc_config = XF86_CRTC_CONFIG_PTR(scrn);
++
++    if (crtc_config->num_crtc == 0)
++        FatalError("[xmir] Received hotplug event, but have no CRTCs?\n");
++
++    xmir_update_config(crtc_config);
++
++    /* Trigger RANDR refresh */
++    RRGetInfo(xf86ScrnToScreen(scrn), TRUE);
++}
++
++static void
++xmir_display_config_callback(MirConnection *unused, void *ctx)
++{
++    xmir_screen *xmir = ctx;
++
++    xmir_post_to_eventloop(xmir->hotplug_event_handler, &xmir->scrn);
++}
++
++Bool
++xmir_mode_pre_init(ScrnInfoPtr scrn, xmir_screen *xmir)
++{
++    int i;
++    MirDisplayConfiguration *display_config;
++    xf86CrtcPtr xf86crtc;
++    int output_type_count[mir_display_output_type_edp + 1];
++
++    memset(output_type_count, 0, sizeof output_type_count);
++
++    /* Set up CRTC config functions */
++    xf86CrtcConfigInit(scrn, &config_funcs);
++
++    /* We don't scanout of a single surface, so we don't have a scanout limit */
++    xf86CrtcSetSizeRange(scrn,
++                         320, 320,
++                         INT16_MAX, INT16_MAX);
++
++    /* Hook up hotplug notification */
++    xmir->hotplug_event_handler =
++        xmir_register_handler(&xmir_handle_hotplug,
++                              sizeof (ScreenPtr));
++
++    mir_connection_set_display_config_change_callback(
++        xmir_connection_get(),
++        &xmir_display_config_callback, xmir);
++
++    display_config =
++        mir_connection_create_display_config(xmir_connection_get());
++
++    xmir->root_window_fragments = malloc((display_config->cards[0].max_simultaneous_outputs + 1) *
++                                         sizeof(xmir_window *));
++    xmir->root_window_fragments[display_config->cards[0].max_simultaneous_outputs] = NULL;
++
++    if (xmir->root_window_fragments == NULL)
++        return FALSE;
++
++    for (i = 0; i < display_config->num_outputs; i++) {
++        xf86OutputPtr xf86output;
++        char name[32];
++        MirDisplayOutput *mir_output = &display_config->outputs[i];
++        const char* output_type_str = xmir_get_output_type_str(mir_output);
++        int type_count = i;
++
++        if (mir_output->type >= 0 && mir_output->type <= mir_display_output_type_edp)
++            type_count = output_type_count[mir_output->type]++;
++
++        snprintf(name, sizeof name, "%s-%d", output_type_str, type_count);
++        xf86output = xf86OutputCreate(scrn, &xmir_output_funcs, name);
++
++        xmir_output_populate(xf86output, mir_output);
++    }
++
++    for (i = 0; i < display_config->cards[0].max_simultaneous_outputs; i++) {
++        struct xmir_crtc *xmir_crtc = malloc(sizeof *xmir_crtc);
++        if (xmir_crtc == NULL)
++            return FALSE;
++
++        xmir_crtc->xmir = xmir;
++        xmir_crtc->root_fragment = calloc(1, sizeof *xmir_crtc->root_fragment);
++        xmir_crtc->config = display_config;
++
++        if (xmir_crtc->root_fragment == NULL)
++            return FALSE;
++
++        xmir->root_window_fragments[i] = xmir_crtc->root_fragment;
++        RegionNull(&xmir_crtc->root_fragment->region);
++
++        xf86crtc = xf86CrtcCreate(scrn, &crtc_funcs);
++        xf86crtc->driver_private = xmir_crtc;
++    }
++
++    xf86SetScrnInfoModes(scrn);
++
++    /* TODO: Use initial Mir state rather than setting up our own */
++    xf86InitialConfiguration(scrn, TRUE);
++
++    return TRUE;
++}
+--- /dev/null
++++ b/hw/xfree86/xmir/xmir-private.h
+@@ -0,0 +1,106 @@
++/*
++ * Copyright © 2012 Canonical, Inc
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Soft-
++ * ware"), to deal in the Software without restriction, including without
++ * limitation the rights to use, copy, modify, merge, publish, distribute,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, provided that the above copyright
++ * notice(s) and this permission notice appear in all copies of the Soft-
++ * ware and that both the above copyright notice(s) and this permission
++ * notice appear in supporting documentation.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
++ * QUENTIAL 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 PERFOR-
++ * MANCE OF THIS SOFTWARE.
++ *
++ * Except as contained in this notice, the name of a copyright holder shall
++ * not be used in advertising or otherwise to promote the sale, use or
++ * other dealings in this Software without prior written authorization of
++ * the copyright holder.
++ *
++ * Authors:
++ *   Christopher James Halse Rogers (christopher.halse.rogers@canonical.com)
++ */
++
++#ifndef _XMIR_PRIVATE_H
++#define _XMIR_PRIVATE_H
++
++#include <mir_toolkit/mir_client_library.h>
++#include "xmir.h"
++#include "xf86str.h"
++#include "list.h"
++#include "scrnintstr.h"
++#include "regionstr.h"
++
++#define MIR_MAX_BUFFER_AGE 3
++
++typedef struct xmir_marshall_handler xmir_marshall_handler;
++
++struct xmir_screen {
++    ScrnInfoPtr            scrn;
++    CreateWindowProcPtr    CreateWindow;
++    DestroyWindowProcPtr   DestroyWindow;
++    xmir_driver *          driver;
++    xmir_marshall_handler *submit_rendering_handler;
++    xmir_marshall_handler *hotplug_event_handler;
++    xmir_marshall_handler *focus_event_handler;
++    struct xorg_list       damage_list;
++    struct xmir_window   **root_window_fragments; /* NULL terminated array of xmir_window * */
++    unsigned int           dpms_on:1;             /* Until Mir is less stupid about DPMS */
++};
++
++struct xmir_window {
++    WindowPtr           win;
++    MirSurface         *surface;
++    RegionRec           region;
++    RegionRec           past_damage[MIR_MAX_BUFFER_AGE];
++    DamagePtr           damage;
++    int                 damage_index;
++    struct xorg_list    link_damage;
++    unsigned int        has_free_buffer:1;
++    unsigned int        damaged:1;
++};
++
++MirConnection *
++xmir_connection_get(void);
++
++xmir_screen *
++xmir_screen_get(ScreenPtr screen);
++
++xmir_window *
++xmir_window_get(WindowPtr win);
++
++void
++xmir_window_enable_damage_tracking(xmir_window *xmir_win);
++
++void
++xmir_window_disable_damage_tracking(xmir_window *xmir_win);
++
++
++Bool
++xmir_screen_init_window(ScreenPtr screen, xmir_screen *xmir);
++
++Bool
++xmir_mode_pre_init(ScrnInfoPtr scrn, xmir_screen *xmir);
++
++void
++xmir_init_thread_to_eventloop(void);
++
++xmir_marshall_handler *
++xmir_register_handler(void (*msg_handler)(void *msg), size_t msg_size);
++
++void
++xmir_post_to_eventloop(xmir_marshall_handler *handler, void *msg);
++
++void
++xmir_process_from_eventloop(void);
++
++ #endif /* _MIR_PRIVATE_H */
+--- /dev/null
++++ b/hw/xfree86/xmir/xmir-thread-proxy.c
+@@ -0,0 +1,124 @@
++/*
++ * Copyright © 2012 Canonical, Inc
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Soft-
++ * ware"), to deal in the Software without restriction, including without
++ * limitation the rights to use, copy, modify, merge, publish, distribute,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, provided that the above copyright
++ * notice(s) and this permission notice appear in all copies of the Soft-
++ * ware and that both the above copyright notice(s) and this permission
++ * notice appear in supporting documentation.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
++ * QUENTIAL 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 PERFOR-
++ * MANCE OF THIS SOFTWARE.
++ *
++ * Except as contained in this notice, the name of a copyright holder shall
++ * not be used in advertising or otherwise to promote the sale, use or
++ * other dealings in this Software without prior written authorization of
++ * the copyright holder.
++ *
++ * Authors:
++ *   Christopher James Halse Rogers (christopher.halse.rogers@canonical.com)
++ */
++
++#include <stdint.h>
++#include <string.h>
++#include <unistd.h>
++#include <fcntl.h>
++#include <errno.h>
++
++#include "xf86.h"
++#include "xmir-private.h"
++
++struct xmir_marshall_handler {
++      void (*msg_handler)(void *msg);
++      size_t msg_size;
++      char msg[];
++};
++
++static int pipefds[2];
++
++static void
++xmir_wakeup_handler(pointer data, int err, pointer read_mask)
++{
++    if (err >= 0 && FD_ISSET(pipefds[0], (fd_set *)read_mask))
++        xmir_process_from_eventloop();
++}
++
++void
++xmir_init_thread_to_eventloop(void)
++{
++      int err = pipe(pipefds);
++      if (err == -1)
++              FatalError("[XMIR] Failed to create thread-proxy pipes: %s\n", strerror(errno));
++
++      /* Set the read end to not block; we'll pull from this in the event loop
++       * We don't need to care about the write end, as that'll be written to
++       * from its own thread
++       */
++      fcntl(pipefds[0], F_SETFL, O_NONBLOCK);
++
++      AddGeneralSocket(pipefds[0]);
++      RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA,
++                                     xmir_wakeup_handler,
++                                     NULL);
++}
++
++xmir_marshall_handler *
++xmir_register_handler(void (*msg_handler)(void *msg), size_t msg_size)
++{
++      xmir_marshall_handler *handler;
++
++      if (msg_size + sizeof *handler > PIPE_BUF)
++              return NULL;
++
++      handler = malloc(sizeof *handler + msg_size);
++      if (!handler)
++              return NULL;
++
++      handler->msg_handler = msg_handler;
++      handler->msg_size = msg_size;
++      return handler;
++}
++
++void
++xmir_post_to_eventloop(xmir_marshall_handler *handler, void *msg)
++{
++      ssize_t written;
++      const int total_size = sizeof *handler + handler->msg_size;
++      /* We require the total size to be less than PIPE_BUF to ensure an atomic write */
++      assert(total_size < PIPE_BUF);
++
++      memcpy(handler->msg, msg, handler->msg_size);
++      written = write(pipefds[1], handler, total_size);
++      if (written != total_size)
++              xf86Msg(X_ERROR, "[XMIR] Failed to proxy message to mainloop\n");
++}
++
++void
++xmir_process_from_eventloop(void)
++{
++      xmir_marshall_handler handler;
++      void *msg;
++
++      for (;;) {
++              if (read(pipefds[0], &handler, sizeof handler) < 0) {
++                      return;
++              }
++
++              msg = malloc(handler.msg_size);
++              if(read(pipefds[0], msg, handler.msg_size) == handler.msg_size)
++                      (*handler.msg_handler)(msg);
++              free(msg);
++      }
++}
++
+--- /dev/null
++++ b/hw/xfree86/xmir/xmir-window.c
+@@ -0,0 +1,343 @@
++/*
++ * Copyright © 2012 Canonical, Inc
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Soft-
++ * ware"), to deal in the Software without restriction, including without
++ * limitation the rights to use, copy, modify, merge, publish, distribute,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, provided that the above copyright
++ * notice(s) and this permission notice appear in all copies of the Soft-
++ * ware and that both the above copyright notice(s) and this permission
++ * notice appear in supporting documentation.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
++ * QUENTIAL 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 PERFOR-
++ * MANCE OF THIS SOFTWARE.
++ *
++ * Except as contained in this notice, the name of a copyright holder shall
++ * not be used in advertising or otherwise to promote the sale, use or
++ * other dealings in this Software without prior written authorization of
++ * the copyright holder.
++ *
++ * Authors:
++ *   Christopher James Halse Rogers (christopher.halse.rogers@canonical.com)
++ */
++
++#ifdef HAVE_XORG_CONFIG_H
++#include "xorg-config.h"
++#endif
++#include <xorg-server.h>
++#include "windowstr.h"
++#include "regionstr.h"
++#include "damagestr.h"
++
++#include "xmir.h"
++#include "xmir-private.h"
++
++#include "xf86.h"
++
++#include <stdlib.h>
++#include <unistd.h>
++
++static DevPrivateKeyRec xmir_window_private_key;
++static const RegionRec xmir_empty_region = { {0, 0, 0, 0}, &RegionBrokenData };
++
++xmir_window *
++xmir_window_get(WindowPtr win)
++{
++    /* The root window is handled specially */
++    assert(win->parent != NULL);
++
++    return dixGetPrivate(&win->devPrivates, &xmir_window_private_key);
++}
++
++_X_EXPORT int
++xmir_window_get_fd(xmir_window *xmir_win)
++{
++    MirBufferPackage *package;
++
++    if (mir_platform_type_gbm != mir_surface_get_platform_type(xmir_win->surface))
++        FatalError("[xmir] Only supported on DRM Mir platform\n");
++
++    mir_surface_get_current_buffer(xmir_win->surface, &package);
++    if (package->fd_items != 1)
++        FatalError("[xmir] Unexpected buffer contents from Mir; this is a programming error\n");
++
++    return package->fd[0];
++}
++
++static void
++xmir_handle_buffer_available(void *ctx)
++{
++    xmir_screen *xmir;
++    xmir_window *mir_win = *(xmir_window **)ctx;
++
++    if (mir_win->surface == NULL)
++        return;
++
++    xmir = xmir_screen_get(xmir_window_to_windowptr(mir_win)->drawable.pScreen);
++
++    mir_win->has_free_buffer = TRUE;
++    mir_win->damage_index = (mir_win->damage_index + 1) % MIR_MAX_BUFFER_AGE;
++
++    if (xmir_window_is_dirty(mir_win))
++        (*xmir->driver->BufferAvailableForWindow)(mir_win,
++                                                  xmir_window_get_dirty(mir_win));
++}
++
++static inline int
++index_in_damage_buffer(int current_index, int age)
++{
++    int index = (current_index - age) % MIR_MAX_BUFFER_AGE;
++
++    return index < 0 ? MIR_MAX_BUFFER_AGE + index : index;
++}
++
++static void
++handle_buffer_received(MirSurface *surf, void *ctx)
++{
++    xmir_window *xmir_win = ctx;
++
++    xmir_screen *xmir =
++        xmir_screen_get(xmir_window_to_windowptr(xmir_win)->drawable.pScreen);
++
++    xmir_post_to_eventloop(xmir->submit_rendering_handler, &xmir_win);
++}
++
++static RegionPtr
++damage_region_for_current_buffer(xmir_window *xmir_win)
++{
++    MirBufferPackage *package;
++    RegionPtr region;
++    int age;
++
++    mir_surface_get_current_buffer(xmir_win->surface, &package);
++    age = package->age;
++
++    region = &xmir_win->past_damage[index_in_damage_buffer(xmir_win->damage_index, age)];
++
++    /* As per EGL_EXT_buffer_age, contents are undefined for age == 0 */
++    if (age == 0)
++        RegionCopy(region, &xmir_win->region);
++
++    return region;
++}
++
++/* Submit rendering for @window to Mir
++ * @region is an (optional) damage region, to hint the compositor as to what
++ * region has changed. It can be NULL to indicate the whole window should be
++ * considered dirty.
++ */
++_X_EXPORT int
++xmir_submit_rendering_for_window(xmir_window *xmir_win,
++                                 RegionPtr region)
++{
++    RegionPtr tracking;
++
++    if (!xmir_screen_get(xmir_win->win->drawable.pScreen)->dpms_on)
++        return Success;
++
++    xmir_win->has_free_buffer = FALSE;
++    tracking = damage_region_for_current_buffer(xmir_win);
++    mir_surface_swap_buffers(xmir_win->surface, &handle_buffer_received, xmir_win);
++
++    if (region == NULL)
++        RegionEmpty(tracking);
++    else
++        RegionSubtract(tracking, tracking, region);
++
++    if (RegionNil(tracking))
++        xorg_list_del(&xmir_win->link_damage);
++
++    return Success;
++}
++
++_X_EXPORT Bool
++xmir_window_has_free_buffer(xmir_window *xmir_win)
++{
++    return xmir_win->has_free_buffer;
++}
++
++_X_EXPORT RegionPtr
++xmir_window_get_dirty(xmir_window *xmir_win)
++{
++    if (xorg_list_is_empty(&xmir_win->link_damage))
++        return (RegionPtr)&xmir_empty_region;
++
++    if (xmir_win->damaged) {
++        int i;
++        RegionPtr damage = DamageRegion(xmir_win->damage);
++        RegionIntersect(damage, damage, &xmir_win->region);
++
++        for (i = 0; i < MIR_MAX_BUFFER_AGE; i++) {
++            RegionUnion(&xmir_win->past_damage[i],
++                        &xmir_win->past_damage[i],
++                        damage);
++        }
++
++        DamageEmpty(xmir_win->damage);
++        xmir_win->damaged = 0;
++    }
++
++    return damage_region_for_current_buffer(xmir_win);
++}
++
++_X_EXPORT Bool
++xmir_window_is_dirty(xmir_window *xmir_win)
++{
++    return RegionNotEmpty(xmir_window_get_dirty(xmir_win));
++}
++
++_X_EXPORT WindowPtr
++xmir_window_to_windowptr(xmir_window *xmir_win)
++{
++    return xmir_win->win;
++}
++
++_X_EXPORT BoxPtr
++xmir_window_get_drawable_region(xmir_window *xmir_win)
++{
++    return RegionExtents(&xmir_win->region);
++}
++
++_X_EXPORT int32_t
++xmir_window_get_stride(xmir_window *xmir_win)
++{
++    MirBufferPackage *package;
++
++    mir_surface_get_current_buffer(xmir_win->surface, &package);
++
++    return package->stride;
++}
++
++static void
++damage_report(DamagePtr damage, RegionPtr region, void *ctx)
++{
++    xmir_window *xmir_win = ctx;
++
++    xmir_win->damaged = 1;
++    xorg_list_move(&xmir_win->link_damage,
++                   &xmir_screen_get(damage->pScreen)->damage_list);
++}
++
++static void
++damage_destroy(DamagePtr damage, void *ctx)
++{
++    xmir_window *xmir_win = ctx;
++    xorg_list_del(&xmir_win->link_damage);
++}
++
++void
++xmir_window_enable_damage_tracking(xmir_window *xmir_win)
++{
++    WindowPtr win = xmir_win->win;
++
++    if (xmir_win->damage != NULL)
++        return;
++
++    xorg_list_init(&xmir_win->link_damage);
++    xmir_win->damage = DamageCreate(damage_report, damage_destroy,
++                                    DamageReportNonEmpty, TRUE,
++                                    win->drawable.pScreen, xmir_win);
++    DamageRegister(&win->drawable, xmir_win->damage);
++
++    for (int i = 0; i < MIR_MAX_BUFFER_AGE; i++) {
++        RegionNull(&xmir_win->past_damage[i]);
++    }
++    xmir_win->damage_index = 0;
++    xmir_win->damaged = 0;
++}
++
++void
++xmir_window_disable_damage_tracking(xmir_window *xmir_win)
++{
++    if (xmir_win->damage != NULL) {
++        DamageUnregister(xmir_win->damage);
++        DamageDestroy(xmir_win->damage);
++        xmir_win->damage = NULL;
++    }
++}
++
++static Bool
++xmir_create_window(WindowPtr win)
++{
++    ScreenPtr screen = win->drawable.pScreen;
++    xmir_screen *xmir = xmir_screen_get(screen);
++    Bool ret;
++
++    screen->CreateWindow = xmir->CreateWindow;
++    ret = (*screen->CreateWindow)(win);
++    screen->CreateWindow = xmir_create_window;
++
++    /* Until we support rootless operation, we care only for the root
++     * window, which has no parent.
++     */
++    if (win->parent == NULL) {
++        /* The CRTC setup has already created the root_window_fragments
++           array. We need to hook the root window into it */
++        for (int i = 0; xmir->root_window_fragments[i] != NULL; i++) {
++            xmir->root_window_fragments[i]->win = win;
++
++            /* TODO: This creates one Damage tracker per fragment; we only
++               really need one, though */
++            xmir_window_enable_damage_tracking(xmir->root_window_fragments[i]);
++        }
++    }
++    return ret;
++}
++
++static Bool
++xmir_destroy_window(WindowPtr win)
++{
++    ScreenPtr screen = win->drawable.pScreen;
++    xmir_screen *xmir = xmir_screen_get(screen);
++    Bool ret;
++
++    screen->DestroyWindow = xmir->DestroyWindow;
++    ret = (*screen->DestroyWindow)(win);
++    screen->DestroyWindow = xmir_destroy_window;
++
++    /* Until we support rootless operation, we care only for the root
++     * window, which has no parent.
++     */
++    if (win->parent == NULL) {
++        /* Break the link with the root_window_fragments */
++        for (int i = 0; xmir->root_window_fragments[i] != NULL; i++) {
++            xmir->root_window_fragments[i]->win = NULL;
++
++            /* We cannot use xmir_window_disable_damage_tracking here because
++             * the Damage extension will also clean it up on window destruction
++            */
++            xorg_list_del(&xmir->root_window_fragments[i]->link_damage);
++        }
++    }
++
++    return ret;
++}
++
++Bool
++xmir_screen_init_window(ScreenPtr screen, xmir_screen *xmir)
++{
++    if (!dixRegisterPrivateKey(&xmir_window_private_key, PRIVATE_WINDOW, 0))
++        return FALSE;
++
++    xmir->CreateWindow = screen->CreateWindow;
++    screen->CreateWindow = xmir_create_window;
++    xmir->DestroyWindow = screen->DestroyWindow;
++    screen->DestroyWindow = xmir_destroy_window;
++
++    xmir->submit_rendering_handler =
++        xmir_register_handler(&xmir_handle_buffer_available,
++                              sizeof (xmir_window *));
++    if (xmir->submit_rendering_handler == NULL)
++        return FALSE;
++
++    return TRUE;
++}
+--- /dev/null
++++ b/hw/xfree86/xmir/xmir.c
+@@ -0,0 +1,263 @@
++/*
++ * Copyright © 2012 Canonical, Inc
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Soft-
++ * ware"), to deal in the Software without restriction, including without
++ * limitation the rights to use, copy, modify, merge, publish, distribute,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, provided that the above copyright
++ * notice(s) and this permission notice appear in all copies of the Soft-
++ * ware and that both the above copyright notice(s) and this permission
++ * notice appear in supporting documentation.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
++ * QUENTIAL 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 PERFOR-
++ * MANCE OF THIS SOFTWARE.
++ *
++ * Except as contained in this notice, the name of a copyright holder shall
++ * not be used in advertising or otherwise to promote the sale, use or
++ * other dealings in this Software without prior written authorization of
++ * the copyright holder.
++ *
++ * Authors:
++ *   Christopher James Halse Rogers (christopher.halse.rogers@canonical.com)
++ */
++
++#ifdef HAVE_XORG_CONFIG_H
++#include <xorg-config.h>
++#endif
++
++#include "xmir.h"
++#include "xmir-private.h"
++
++#include "list.h"
++#include "xf86.h"
++#include "xf86Crtc.h"
++#include "xf86Priv.h"
++
++#include <xf86drm.h>
++#include <string.h>
++
++#include <mir_toolkit/mir_client_library.h>
++#include <mir_toolkit/mir_client_library_drm.h>
++
++static DevPrivateKeyRec xmir_screen_private_key;
++/*
++ * We have only a single Mir connection, regardless of how many
++ * drivers load.
++ */
++static MirConnection *conn;
++
++MirConnection *
++xmir_connection_get(void)
++{
++    return conn;
++}
++
++xmir_screen *
++xmir_screen_get(ScreenPtr screen)
++{
++    return dixGetPrivate(&screen->devPrivates, &xmir_screen_private_key);
++}
++
++_X_EXPORT int
++xmir_get_drm_fd(const char *busid)
++{
++    MirPlatformPackage platform;
++    int i, fd = -1;
++
++    mir_connection_get_platform(conn, &platform);
++
++    for (i = 0; i < platform.fd_items; ++i) {
++        char *fd_busid = drmGetBusid(platform.fd[i]);
++        if (!strcasecmp(busid, fd_busid))
++            fd = platform.fd[i];
++        drmFreeBusid(fd_busid);
++    }
++    return fd;
++}
++
++static void
++handle_auth_magic(int status, void *ctx)
++{
++    int *retVal = ctx;
++    *retVal = status;
++}
++
++_X_EXPORT int
++xmir_auth_drm_magic(xmir_screen *xmir, uint32_t magic)
++{
++    int status;
++    mir_wait_for(mir_connection_drm_auth_magic(xmir_connection_get(),
++                                               magic,
++                                               &handle_auth_magic,
++                                               &status));
++    return status;
++}
++
++_X_EXPORT xmir_screen *
++xmir_screen_create(ScrnInfoPtr scrn)
++{
++    xmir_screen *xmir = calloc (1, sizeof *xmir);
++    if (xmir == NULL)
++        return NULL;
++
++    xmir->scrn = scrn;
++    xmir->dpms_on = TRUE;
++
++    return xmir;
++}
++
++_X_EXPORT Bool
++xmir_screen_pre_init(ScrnInfoPtr scrn, xmir_screen *xmir, xmir_driver *driver)
++{
++    xmir->driver = driver;
++    xorg_list_init(&xmir->damage_list);
++
++    if (!xmir_mode_pre_init(scrn, xmir))
++        return FALSE;
++
++    return TRUE;
++}
++
++static void xmir_handle_focus_event(void *ctx)
++{
++    Bool new_focus = *(Bool *)ctx;
++    xf86Msg(X_INFO, "[XMir] Handling focus event, new_focus = %s\n", new_focus ? "TRUE" : "FALSE");
++
++    /* TODO: Split xf86VTSwitch out so that we don't need to check xf86VTOwner*/
++    /* TODO: Disable input on startup until we receive a usc ACK */
++    if (new_focus && !xf86VTOwner())
++        xf86VTSwitch();
++
++    if (!new_focus && xf86VTOwner())
++        xf86VTSwitch();
++}
++
++static void xmir_handle_lifecycle_event(MirConnection *unused, MirLifecycleState state, void *ctx)
++{
++    (void)unused;
++    xmir_screen *xmir = ctx;
++    Bool new_focus;
++    switch(state)
++    {
++    case mir_lifecycle_state_will_suspend:
++        new_focus = FALSE;
++        break;
++    case mir_lifecycle_state_resumed:
++        new_focus = TRUE;
++        break;
++    default:
++        xf86Msg(X_ERROR, "Received unknown Mir lifetime event\n");
++        return;
++    }
++    xmir_post_to_eventloop(xmir->focus_event_handler, &new_focus);
++}
++
++_X_EXPORT Bool
++xmir_screen_init(ScreenPtr screen, xmir_screen *xmir)
++{
++    if (!dixRegisterPrivateKey(&xmir_screen_private_key, PRIVATE_SCREEN, 0))
++        return FALSE;
++    dixSetPrivate(&screen->devPrivates, &xmir_screen_private_key, xmir);
++
++    if (!xmir_screen_init_window(screen, xmir))
++        return FALSE;
++
++    if (!xf86_cursors_init(screen, 0,0,0))
++        xf86Msg(X_WARNING, "xf86Cursor initialisation failed\n");
++
++    /* Hook up focus -> VT switch proxy */
++    xmir->focus_event_handler =
++        xmir_register_handler(&xmir_handle_focus_event,
++                              sizeof(Bool));
++    if (xmir->focus_event_handler == NULL)
++        return FALSE;
++
++    mir_connection_set_lifecycle_event_callback(xmir_connection_get(),
++                                                &xmir_handle_lifecycle_event,
++                                                xmir);
++
++    return TRUE;
++}
++
++_X_EXPORT void
++xmir_screen_close(ScreenPtr screen, xmir_screen *xmir)
++{
++
++}
++
++_X_EXPORT void
++xmir_screen_destroy(xmir_screen *xmir)
++{
++
++}
++
++_X_EXPORT void
++xmir_screen_for_each_damaged_window(xmir_screen *xmir, xmir_window_proc callback)
++{
++    xmir_window *xmir_win, *tmp_win;
++    xorg_list_for_each_entry_safe(xmir_win, tmp_win, &xmir->damage_list, link_damage) {
++        if (xmir_window_has_free_buffer(xmir_win) &&
++            xmir_window_is_dirty(xmir_win))
++            (*callback)(xmir_win, xmir_window_get_dirty(xmir_win));
++    }
++}
++
++static MODULESETUPPROTO(xMirSetup);
++static MODULETEARDOWNPROTO(xMirTeardown);
++
++static XF86ModuleVersionInfo VersRec = {
++    "xmir",
++    MODULEVENDORSTRING,
++    MODINFOSTRING1,
++    MODINFOSTRING2,
++    XORG_VERSION_CURRENT,
++    1, 0, 0,
++    ABI_CLASS_EXTENSION,
++    ABI_EXTENSION_VERSION,
++    MOD_CLASS_NONE,
++    {0, 0, 0, 0}
++};
++
++_X_EXPORT XF86ModuleData xmirModuleData = { &VersRec, xMirSetup, xMirTeardown };
++
++static pointer
++xMirSetup(pointer module, pointer opts, int *errmaj, int *errmin)
++{
++    static Bool setupDone = FALSE;
++
++    if (setupDone) {
++        if (errmaj)
++            *errmaj = LDR_ONCEONLY;
++        return NULL;
++    }
++
++    conn = mir_connect_sync(mirSocket, mirID);
++
++    if (!mir_connection_is_valid(conn)) {
++        if (errmaj)
++            *errmaj = LDR_MODSPECIFIC;
++        FatalError("Failed to connect to Mir: %s\n",
++                   mir_connection_get_error_message(conn));
++        return NULL;
++    }
++
++    xmir_init_thread_to_eventloop();
++
++    setupDone = TRUE;
++
++    return module;
++}
++
++static void
++xMirTeardown(pointer module)
++{
++}
+--- /dev/null
++++ b/hw/xfree86/xmir/xmir.h
+@@ -0,0 +1,103 @@
++/*
++ * Copyright © 2012 Canonical, Inc
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Soft-
++ * ware"), to deal in the Software without restriction, including without
++ * limitation the rights to use, copy, modify, merge, publish, distribute,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, provided that the above copyright
++ * notice(s) and this permission notice appear in all copies of the Soft-
++ * ware and that both the above copyright notice(s) and this permission
++ * notice appear in supporting documentation.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
++ * QUENTIAL 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 PERFOR-
++ * MANCE OF THIS SOFTWARE.
++ *
++ * Except as contained in this notice, the name of a copyright holder shall
++ * not be used in advertising or otherwise to promote the sale, use or
++ * other dealings in this Software without prior written authorization of
++ * the copyright holder.
++ *
++ * Authors:
++ *   Christopher James Halse Rogers (christopher.halse.rogers@canonical.com)
++ */
++
++#ifndef _XMIR_H
++#define _XMIR_H
++
++#include <stdint.h>
++#include <mir_toolkit/mir_client_library.h>
++
++#include "xf86str.h"
++#include "scrnintstr.h"
++#include "window.h"
++
++typedef struct xmir_screen xmir_screen;
++typedef struct xmir_window xmir_window;
++
++typedef void (*xmir_window_proc)(xmir_window *xmir_win, RegionPtr damaged_region);
++
++#define XMIR_DRIVER_VERSION 1
++typedef struct {
++    int version;
++    xmir_window_proc BufferAvailableForWindow;
++} xmir_driver;
++
++_X_EXPORT int
++xmir_get_drm_fd(const char *busid);
++
++_X_EXPORT int
++xmir_auth_drm_magic(xmir_screen *xmir, uint32_t magic);
++
++_X_EXPORT xmir_screen *
++xmir_screen_create(ScrnInfoPtr scrn);
++
++_X_EXPORT Bool
++xmir_screen_pre_init(ScrnInfoPtr scrn, xmir_screen *xmir, xmir_driver *driver);
++
++_X_EXPORT Bool
++xmir_screen_init(ScreenPtr screen, xmir_screen *xmir);
++
++_X_EXPORT void
++xmir_screen_close(ScreenPtr screen, xmir_screen *xmir);
++
++_X_EXPORT void
++xmir_screen_destroy(xmir_screen *xmir);
++
++_X_EXPORT WindowPtr
++xmir_window_to_windowptr(xmir_window *xmir_win);
++
++_X_EXPORT int
++xmir_window_get_fd(xmir_window *xmir_win);
++
++_X_EXPORT int
++xmir_submit_rendering_for_window(xmir_window *xmir_win,
++                                 RegionPtr region);
++
++_X_EXPORT Bool
++xmir_window_has_free_buffer(xmir_window *xmir_win);
++
++_X_EXPORT RegionPtr
++xmir_window_get_dirty(xmir_window *xmir_win);
++
++_X_EXPORT Bool
++xmir_window_is_dirty(xmir_window *xmir_win);
++
++_X_EXPORT BoxPtr
++xmir_window_get_drawable_region(xmir_window *xmir_win);
++
++_X_EXPORT int32_t
++xmir_window_get_stride(xmir_window *xmir_win);
++
++_X_EXPORT void
++xmir_screen_for_each_damaged_window(xmir_screen *xmir, xmir_window_proc callback);
++
++#endif /* _XMIR_H */
+--- a/include/list.h
++++ b/include/list.h
+@@ -184,6 +184,14 @@
+     prev->next = next;
+ }
++static inline void
++xorg_list_move(struct xorg_list *entry, struct xorg_list *head)
++{
++    __xorg_list_del(entry->prev, entry->next);
++    __xorg_list_add(entry, head->prev, head);
++}
++
++
+ /**
+  * Remove the element from the list it is in. Using this function will reset
+  * the pointers to/from this element so it is removed from the list. It does
+--- a/include/xorg-server.h.in
++++ b/include/xorg-server.h.in
+@@ -224,4 +224,7 @@
+ /* Use XTrans FD passing support */
+ #undef XTRANS_SEND_FDS
++/* Build XMIR nested server */
++#undef XMIR
++
+ #endif /* _XORG_SERVER_H_ */
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -6,6 +6,9 @@
+ # For now, requires xf86 ddx, could be adjusted to use another
+ SUBDIRS += xi2
+ noinst_PROGRAMS += xkb input xtest misc fixes xfree86 hashtabletest os signal-logging touch
++if XMIR
++noinst_PROGRAMS += xmir-thread-proxy
++endif #XMIR
+ endif
+ check_LTLIBRARIES = libxservertest.la
+@@ -38,6 +41,8 @@
+ signal_logging_LDADD=$(TEST_LDADD)
+ hashtabletest_LDADD=$(TEST_LDADD) $(top_srcdir)/Xext/hashtable.c
+ os_LDADD=$(TEST_LDADD)
++xmir_thread_proxy_LDADD=$(TEST_LDADD) $(top_srcdir)/hw/xfree86/xmir/xmir-thread-proxy.c -lpthread
++xmir_thread_proxy_CFLAGS=$(AM_CFLAGS) $(XMIR_CFLAGS) -I$(top_srcdir)/hw/xfree86/xmir -I$(top_srcdir)/hw/xfree86/common
+ libxservertest_la_LIBADD = $(XSERVER_LIBS)
+ if XORG
+--- /dev/null
++++ b/test/xmir-thread-proxy.c
+@@ -0,0 +1,154 @@
++/*
++ * Copyright © 2012 Canonical, Inc
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Soft-
++ * ware"), to deal in the Software without restriction, including without
++ * limitation the rights to use, copy, modify, merge, publish, distribute,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, provided that the above copyright
++ * notice(s) and this permission notice appear in all copies of the Soft-
++ * ware and that both the above copyright notice(s) and this permission
++ * notice appear in supporting documentation.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
++ * QUENTIAL 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 PERFOR-
++ * MANCE OF THIS SOFTWARE.
++ *
++ * Except as contained in this notice, the name of a copyright holder shall
++ * not be used in advertising or otherwise to promote the sale, use or
++ * other dealings in this Software without prior written authorization of
++ * the copyright holder.
++ *
++ * Authors:
++ *   Christopher James Halse Rogers (christopher.halse.rogers@canonical.com)
++ */
++
++#ifdef HAVE_DIX_CONFIG_H
++#include <dix-config.h>
++#endif
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <pthread.h>
++#include <unistd.h>
++
++#include "xmir-private.h"
++
++struct test_content {
++      int *variable;
++      int value;
++};
++
++static void
++_test_callback(void *msg_content)
++{
++      struct test_content *content = msg_content;
++      *content->variable = content->value;
++}
++
++static void
++xmir_test_marshall_to_eventloop(void)
++{
++      xmir_marshall_handler *test_marshaller;
++      struct test_content msg;
++      int check = 0;
++
++      xmir_init_thread_to_eventloop();
++
++      test_marshaller = xmir_register_handler(&_test_callback, sizeof msg);
++
++      msg.variable = &check;
++      msg.value = 1;
++
++      xmir_post_to_eventloop(test_marshaller, &msg);
++      xmir_process_from_eventloop();
++
++      assert(check == 1);
++}
++
++static void
++_racy_test_callback(void *msg_content)
++{
++      struct test_content *content = msg_content;
++      int new_value = *content->variable + 1;
++      /* Ensure the other threads get to run and see the old value of content->variable */
++      usleep(100);
++      *content->variable = new_value;
++}
++
++struct thread_context {
++      xmir_marshall_handler *marshaller;
++      struct test_content *msg;
++};
++
++static void *
++_post_racy_msg(void *thread_ctx)
++{
++      struct thread_context *ctx = thread_ctx;
++
++      xmir_post_to_eventloop(ctx->marshaller, ctx->msg);
++
++      return NULL;
++}
++
++#define NUM_THREADS 10
++
++static void
++xmir_test_many_threads_to_eventloop(void)
++{
++      pthread_t threads[NUM_THREADS];
++      pthread_attr_t attr;
++      xmir_marshall_handler *test_marshaller;
++      struct thread_context ctx;
++      struct test_content msg;
++      int check = 0, i;
++
++      pthread_attr_init(&attr);
++      pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
++
++      xmir_init_thread_to_eventloop();
++
++      test_marshaller = xmir_register_handler(&_racy_test_callback, sizeof msg);
++
++      msg.variable = &check;
++
++      ctx.marshaller = test_marshaller;
++      ctx.msg = &msg;
++
++      for (i = 0; i < NUM_THREADS; i++) {
++              pthread_create(&threads[i], &attr, _post_racy_msg, (void *)&ctx);
++      }
++
++      pthread_attr_destroy(&attr);
++
++      for (i = 0; i < NUM_THREADS; i++) {
++              pthread_join(threads[i], NULL);
++      }
++
++      xmir_process_from_eventloop();
++
++      assert(check == NUM_THREADS);
++}
++
++static void
++xmir_test_refuses_to_marshall_too_large_msg(void)
++{
++      xmir_init_thread_to_eventloop();
++
++      assert(xmir_register_handler(&_test_callback, PIPE_BUF) == NULL);
++}
++
++int
++main(int argc, char **argv)
++{
++      xmir_test_marshall_to_eventloop();
++      xmir_test_many_threads_to_eventloop();
++      xmir_test_refuses_to_marshall_too_large_msg();
++}
diff --git a/debian/patches/xrandr-rroutputchanged-main.patch b/debian/patches/xrandr-rroutputchanged-main.patch
new file mode 100644 (file)
index 0000000..0d8121e
--- /dev/null
@@ -0,0 +1,63 @@
+From e78c75f5e19cf38f276b1631078f87b502fdc555 Mon Sep 17 00:00:00 2001
+From: Alberto Milone <alberto.milone@canonical.com>
+Date: Sun, 8 Dec 2013 10:00:08 +0100
+Subject: [PATCH 1/1] randr: make RROutputChanged change the main protocol
+ screen not the gpu screen
+
+We only set changes on the main protocol screen as, for example
+in RRSetChanged() and RRTellChanged(), therefore we should follow
+the same logic when reporting that an output changed in
+RROutputChanged().
+
+This means that RRTellChanged() will then update the relevant
+timestamps also when events come from gpu screens.
+
+Reviewed-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Alberto Milone <alberto.milone@canonical.com>
+---
+ randr/rroutput.c |   25 ++++++++++++++++++++-----
+ 1 file changed, 20 insertions(+), 5 deletions(-)
+
+diff --git a/randr/rroutput.c b/randr/rroutput.c
+index 2b0b82f..3cc9852 100644
+--- a/randr/rroutput.c
++++ b/randr/rroutput.c
+@@ -31,15 +31,30 @@ RESTYPE RROutputType;
+ void
+ RROutputChanged(RROutputPtr output, Bool configChanged)
+ {
++    /* set changed bits on the master screen only */
+     ScreenPtr pScreen = output->pScreen;
+     output->changed = TRUE;
+-    if (pScreen) {
+-        rrScrPriv(pScreen);
+-        RRSetChanged(pScreen);
+-        if (configChanged)
+-            pScrPriv->configChanged = TRUE;
++    if (!pScreen)
++        return;
++
++    ScreenPtr master;
++    rrScrPriv(pScreen);
++    rrScrPrivPtr mastersp;
++
++    if (pScreen->isGPU) {
++        master = pScreen->current_master;
++        if (!master)
++            return;
++        mastersp = rrGetScrPriv(master);
+     }
++    else {
++        mastersp = pScrPriv;
++    }
++
++    RRSetChanged(pScreen);
++    if (configChanged)
++        mastersp->configChanged = TRUE;
+ }
+ /*
+-- 
+1.7.9.5
+
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..a2bbaf0
--- /dev/null
@@ -0,0 +1,402 @@
+#!/usr/bin/make -f
+# debian/rules for the Debian xorg-server package.
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>
+# Copyright © 2005 Daniel Stone <daniel@fooishbar.org>
+# Copyright © 2005 David Nusinow <dnusinow@debian.org>
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# Set up the $(STAMP_DIR) directory, and use it for quilt' stamp:
+STAMP_DIR     := stampdir
+QUILT_STAMPFN := $(STAMP_DIR)/patch
+$(STAMP_DIR)/stampdir:
+       mkdir $(STAMP_DIR)
+       >$@
+
+include /usr/share/quilt/quilt.make
+
+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)
+DEB_HOST_ARCH_OS   ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
+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
+
+# udeb is arch-dependent...
+ifneq (, $(filter %-udeb, $(shell dh_listpackages -s)))
+       udeb = yes
+endif
+
+# ...but let's support disabling it to speed up debug builds:
+ifneq (,$(filter noudeb,$(DEB_BUILD_OPTIONS)))
+       udeb =
+       DH_INSTALL_OPTIONS = -Nxserver-xorg-core-udeb
+endif
+
+
+ifeq ($(DEB_HOST_ARCH_OS), linux)
+       selinux = --enable-xselinux
+       build_xmir = --enable-xmir
+else
+       selinux = --disable-xselinux
+endif
+
+# Mir isn't built on PPC
+ifneq (,$(filter $(DEB_HOST_ARCH), arm64 powerpc ppc64el))
+       build_xmir = --disable-xmir
+endif
+
+ifeq ($(DEB_HOST_ARCH_OS), hurd)
+       dri = --disable-dri --disable-dri2 --disable-dri3
+else
+       dri = --enable-dri --enable-dri2
+ifeq ($(DEB_HOST_ARCH_OS), linux)
+       dri += --enable-dri3
+else
+       # disable dri3 on kbsd until xtrans fd passing is enabled
+       dri += --disable-dri3
+endif
+endif
+
+config_backend = --disable-config-dbus --disable-config-hal
+ifeq ($(DEB_HOST_ARCH_OS), linux)
+       config_backend += --enable-config-udev
+else ifeq ($(DEB_HOST_ARCH_OS), kfreebsd)
+       config_backend += --disable-config-udev --enable-config-devd
+       libs = $(shell pkg-config --libs libbsd-overlay)
+       cppflags = $(shell pkg-config --cflags libbsd-overlay)
+else # hurd
+       config_backend += --disable-config-udev
+endif
+
+vars = $(shell DEB_BUILD_MAINT_OPTIONS="hardening=+pie" DEB_LDFLAGS_MAINT_APPEND="-Wl,-Bsymbolic" DEB_CPPFLAGS_MAINT_APPEND="-DPRE_RELEASE=0 $(cppflags)" dpkg-buildflags --export=configure) LIBS="$(libs)"
+
+ifneq (,$(filter nocheck, $(DEB_BUILD_OPTIONS)))
+       config_tests = --disable-unit-tests
+else
+       config_tests = --enable-unit-tests
+endif
+
+INSTALL=/usr/bin/install
+
+VENDOR = $(shell lsb_release -i -s)
+SUPPORT = For technical support please see http://www.ubuntu.com/support
+
+SOURCE_NAME    :=  xorg-server
+SOURCE_VERSION := $(shell dpkg-parsechangelog | awk -F': ' '/^Version: / {print $$2}')
+
+# Add a workaround for LP: #1266492
+confflags += lt_cv_prog_compiler_static_works=no
+
+# Add a workaround for LP: #1266492
+confflags += lt_cv_prog_compiler_static_works=no
+
+# disable-static is so we don't get libfoo.a for modules.  now if only we could
+# kill the .las.
+confflags += \
+            --disable-silent-rules \
+            --disable-static \
+            --without-dtrace \
+            --disable-strict-compilation \
+            --disable-debug \
+            $(config_tests) \
+            --with-int10=x86emu \
+            --with-extra-module-dir="/usr/lib/${DEB_HOST_MULTIARCH}/xorg/extra-modules,/usr/lib/xorg/extra-modules" \
+            --with-os-vendor="$(VENDOR)" \
+            --with-builderstring="$(SOURCE_NAME) $(SOURCE_VERSION) ($(SUPPORT))" \
+            --with-xkb-path=/usr/share/X11/xkb \
+            --with-xkb-output=/var/lib/xkb \
+            --disable-install-libxf86config \
+            --enable-mitshm \
+            --enable-xres \
+            --disable-xcsecurity \
+            --disable-tslib \
+            --enable-dbe \
+            --disable-xf86bigfont \
+            --enable-dpms \
+            $(config_backend) \
+            --enable-xorg \
+            --disable-linux-acpi \
+            --disable-linux-apm \
+            --disable-xquartz \
+            --disable-xwin \
+            --disable-xfake \
+            --disable-xfbdev \
+            --disable-install-setuid
+
+confflags_main =        \
+       --with-default-font-path="/usr/share/fonts/X11/misc,/usr/share/fonts/X11/cyrillic,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,built-ins" \
+       --enable-aiglx \
+       --enable-glx-tls \
+       --enable-registry \
+       --enable-composite \
+       --enable-record \
+       --enable-xv \
+       --enable-xvmc \
+       --enable-dga \
+       --enable-screensaver \
+       --enable-xdmcp \
+       --enable-xdm-auth-1 \
+       --enable-glx \
+       $(dri) \
+       --enable-present \
+       --enable-xinerama \
+       --enable-xf86vidmode \
+       --enable-xace \
+       $(selinux) \
+       --enable-xfree86-utils \
+       --enable-dmx \
+       --enable-xvfb \
+       --enable-xnest \
+       --enable-kdrive \
+       --enable-xephyr \
+       $(build_xfbdev) \
+       $(build_xmir) \
+       --with-sha1=libgcrypt \
+       --enable-xcsecurity \
+       $(config_backend_main) \
+       $(void)
+
+confflags_udeb = \
+       --with-default-font-path="built-ins" \
+       --disable-aiglx \
+       --disable-glx-tls \
+       --disable-registry \
+       --disable-composite \
+       --disable-record \
+       --disable-xv \
+       --disable-xvmc \
+       --enable-dga \
+       --disable-screensaver \
+       --disable-xdmcp \
+       --disable-xdm-auth-1 \
+       --disable-glx \
+       --disable-dri \
+       --disable-dri2 \
+       --disable-xinerama \
+       --disable-xf86vidmode \
+       --disable-xace \
+       --disable-xselinux \
+       --disable-xfree86-utils \
+       --disable-dmx \
+       --disable-xvfb \
+       --disable-xnest \
+       --disable-kdrive \
+       --disable-xephyr \
+       --disable-xfbdev \
+       --disable-xmir \
+       --with-sha1=libnettle \
+       $(config_backend_udeb) \
+       $(void)
+
+$(QUILT_STAMPFN): $(STAMP_DIR)/stampdir
+
+$(STAMP_DIR)/autoreconf: $(STAMP_DIR)/stampdir $(QUILT_STAMPFN)
+       dh_testdir
+       autoreconf -vfi
+       >$@
+
+$(STAMP_DIR)/build-source: $(STAMP_DIR)/autoreconf
+       mkdir -p build-source
+       tar \
+       --owner=0 --group=0 \
+        --transform 's,^,xorg-server/,' \
+        --exclude=stampdir --exclude=debian \
+        --exclude=build-* --exclude=autom4te.cache \
+        -cf - * | xz > build-source/xorg-server.tar.xz
+       >$@
+
+$(STAMP_DIR)/configure-%: $(STAMP_DIR)/autoreconf
+       dh_testdir
+       mkdir -p build-$*
+       cd build-$* && \
+       ../configure \
+         --prefix=/usr \
+         --mandir=\$${prefix}/share/man \
+         --infodir=\$${prefix}/share/info \
+         --sysconfdir=/etc \
+         --localstatedir=/var \
+         $(confflags) \
+         $(confflags_$*) \
+         $(vars)
+       >$@
+
+$(STAMP_DIR)/build-%: $(STAMP_DIR)/configure-%
+       dh_testdir
+       cd build-$* && $(MAKE)
+       >$@
+
+$(STAMP_DIR)/tests-%: $(STAMP_DIR)/build-%
+       cd build-$* && $(MAKE) check VERBOSE=1
+       >$@
+
+build: abibumpcheck
+build: $(STAMP_DIR)/build-main
+build: $(STAMP_DIR)/tests-main
+ifeq ($(udeb), yes)
+build: $(STAMP_DIR)/build-udeb
+build: $(STAMP_DIR)/tests-udeb
+endif
+build-arch: build
+build-indep: $(STAMP_DIR)/build-source build
+
+clean: unpatch
+       dh_testdir
+       rm -rf $(STAMP_DIR)
+       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-*
+       rm -f compile config.guess config.sub configure depcomp install-sh
+       rm -f ltmain.sh missing INSTALL aclocal.m4 ylwrap
+       rm -f include/do-not-use-config.h.in
+       rm -f m4/lt*.m4 m4/libtool.m4
+       find -name Makefile.in -delete
+       rm -f test-driver
+       dh_clean
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_prep
+       dh_installdirs
+
+       cd build-main && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp/main install
+ifeq ($(udeb), yes)
+       cd build-udeb && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp/udeb install
+endif
+
+       # oh, yuck.
+       find debian/tmp/*/usr/lib/xorg -type f -name '*.la' | \
+         xargs rm -f
+
+       # remove modules not needed in d-i
+       rm -rf debian/tmp/udeb/usr/lib/xorg/modules/multimedia
+       rm -f debian/tmp/udeb/usr/lib/xorg/modules/libxaa.so
+       rm -f debian/tmp/udeb/usr/lib/xorg/modules/libexa.so
+       rm -f debian/tmp/udeb/usr/lib/xorg/modules/libwfb.so
+       rm -f debian/tmp/udeb/usr/lib/xorg/modules/libxf8_16bpp.so
+
+       # we don't ship these from the udeb build, reduce noise from dh_install
+       # --list-missing
+       rm -rf debian/tmp/udeb/usr/include
+       rm -rf debian/tmp/udeb/usr/share/aclocal
+       rm -rf debian/tmp/udeb/usr/share/man
+       rm -rf debian/tmp/udeb/usr/lib/pkgconfig
+
+       install -m 755 debian/local/xvfb-run debian/tmp/main/usr/bin
+       # Make sure Xvfb at least starts up
+       PATH=debian/tmp/main/usr/bin/:/bin:/usr/bin \
+         debian/tmp/main/usr/bin/xvfb-run -s "-screen 0 1280x1024x24 -nolisten tcp -noreset" true
+
+       install debian/local/xvfb-run.1 debian/tmp/main/usr/share/man/man1
+ifneq ($(DEB_HOST_ARCH_OS), linux)
+       install -d debian/tmp/main/usr/share/X11/xorg.conf.d
+       install -m 644 debian/local/10-*.conf debian/tmp/main/usr/share/X11/xorg.conf.d
+ifeq ($(udeb), yes)
+       install -d debian/tmp/udeb/usr/share/X11/xorg.conf.d
+       install -m 644 debian/local/10-*.conf debian/tmp/udeb/usr/share/X11/xorg.conf.d
+endif
+endif
+
+# stub to start building deb files, used by binary-indep and binary-arch
+binary-initial:
+       dh_testdir
+       dh_testroot
+
+# stub to build deb files, used by binary-indep and binary-arch
+binary-deb:
+       dh_lintian
+       dh_compress
+       dh_fixperms
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+# Only read the first line, the rest of the file is used to determine
+# when the minimal version as to be bumped:
+SERVERMINVER = debian/serverminver
+serverminver = $(shell head -1 $(SERVERMINVER))
+
+.PHONY: abibumpcheck
+abibumpcheck: debian/serverminver $(QUILT_STAMPFN)
+       @echo Checking for the need of an ABI bump
+       # Build an updated version of the file:
+       head -1 $(SERVERMINVER) > $(SERVERMINVER).new
+       perl -ne 'print "$$1:$$2.$$3\n" if /^#define\s+(ABI_(?:VIDEODRV|XINPUT)_VERSION)\s+SET_ABI_VERSION\(\s*(\d+)\s*,\s*(\d+)\s*\)/' hw/xfree86/common/xf86Module.h|sort >> $(SERVERMINVER).new
+       # Compare both files:
+       @if ! cmp --quiet $(SERVERMINVER) $(SERVERMINVER).new; then \
+       echo "serverminver bump required, ABI changed!";\
+       echo "When bumping major or minor, always bump required xorg-server minimum";\
+       echo "version too, the newly built drivers are not backwards compatible!";\
+       diff -u $(SERVERMINVER) $(SERVERMINVER).new; \
+       exit 1; \
+       else \
+       echo "ABI unchanged"; \
+       rm -f $(SERVERMINVER).new; \
+       fi
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       $(MAKE) -f debian/rules DH_OPTIONS=-s binary-initial
+
+       dh_installdocs -s
+       dh_installchangelogs -s
+       dh_install $(DH_INSTALL_OPTIONS) -s --list-missing
+       $(INSTALL) -d $(CURDIR)/debian/xserver-xorg-dev/usr/share/xserver-xorg
+       # Extract only the major ABI version:
+       abi_videodrv=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/pkgconfig pkg-config --variable=abi_videodrv xorg-server|cut -d . -f 1`; \
+       echo videoabi=xorg-video-abi-$$abi_videodrv > debian/xserver-xorg-core.substvars && \
+       echo "xorg-video-abi-$$abi_videodrv, xserver-xorg-core (>= $(serverminver))" > debian/xserver-xorg-dev/usr/share/xserver-xorg/videodrvdep
+       abi_xinput=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/pkgconfig pkg-config --variable=abi_xinput xorg-server|cut -d . -f 1`; \
+       echo inputabi=xorg-input-abi-$$abi_xinput >> debian/xserver-xorg-core.substvars && \
+       echo "xorg-input-abi-$$abi_xinput, xserver-xorg-core (>= $(serverminver))" > debian/xserver-xorg-dev/usr/share/xserver-xorg/xinputdep
+
+       # The udeb uses the same substvars:
+       cp debian/xserver-xorg-core.substvars debian/xserver-xorg-core-udeb.substvars
+
+       $(INSTALL) -m 755 -d debian/xserver-xorg-core/usr/share/bug/xserver-xorg-core
+       $(INSTALL) -m 755 debian/xserver-xorg-core.bug.script debian/xserver-xorg-core/usr/share/bug/xserver-xorg-core/script
+ifeq ($(DEB_HOST_ARCH_OS), linux)
+       install -d debian/xserver-xorg-core/lib/udev/rules.d
+       install -m 644 debian/local/64-xorg-xkb.rules debian/xserver-xorg-core/lib/udev/rules.d
+ifeq ($(udeb), yes)
+       install -d debian/xserver-xorg-core-udeb/lib/udev/rules.d
+       install -m 644 debian/local/64-xorg-xkb.rules debian/xserver-xorg-core-udeb/lib/udev/rules.d
+endif
+endif
+       dh_installdebconf -s
+       dh_installman -s
+       dh_link -s
+       dh_strip -pxserver-xorg-xmir -pxserver-xorg-core --dbg-package=xserver-xorg-core-dbg
+       dh_strip -s -Nxserver-xorg-core -Nxserver-xorg-core-dbg
+       $(MAKE) -f debian/rules DH_OPTIONS=-s binary-deb
+
+
+# Build architecture-independent files here
+binary-indep: build-indep install check
+       $(MAKE) -f debian/rules DH_OPTIONS=-i binary-initial
+       dh_install -i
+       dh_installdocs -i
+       dh_installchangelogs -i ChangeLog
+
+       $(MAKE) -f debian/rules DH_OPTIONS=-i binary-deb
+
+check:
+       dh_testdir
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/debian/serverminver b/debian/serverminver
new file mode 100644 (file)
index 0000000..c01f07e
--- /dev/null
@@ -0,0 +1,3 @@
+2:1.14.99.902
+ABI_VIDEODRV_VERSION:15.0
+ABI_XINPUT_VERSION:20.0
diff --git a/debian/watch b/debian/watch
new file mode 100644 (file)
index 0000000..60a37d4
--- /dev/null
@@ -0,0 +1,3 @@
+#git=git://anongit.freedesktop.org/xorg/xserver
+version=3
+http://xorg.freedesktop.org/releases/individual/xserver/ xorg-server-(.*)\.tar\.gz
diff --git a/debian/xdmx-tools.install b/debian/xdmx-tools.install
new file mode 100644 (file)
index 0000000..3eac31a
--- /dev/null
@@ -0,0 +1,6 @@
+main/usr/bin/dmx*      usr/bin
+main/usr/bin/vdltodmx  usr/bin
+main/usr/bin/xdmxconfig        usr/bin
+main/usr/share/man/man1/vdltodmx.1     usr/share/man/man1
+main/usr/share/man/man1/dmxtodmx.1     usr/share/man/man1
+main/usr/share/man/man1/xdmxconfig.1   usr/share/man/man1
diff --git a/debian/xdmx.install b/debian/xdmx.install
new file mode 100644 (file)
index 0000000..c6a37eb
--- /dev/null
@@ -0,0 +1,2 @@
+main/usr/bin/Xdmx      usr/bin
+main/usr/share/man/man1/Xdmx.1 usr/share/man/man1
diff --git a/debian/xnest.install b/debian/xnest.install
new file mode 100644 (file)
index 0000000..b11a15e
--- /dev/null
@@ -0,0 +1,2 @@
+main/usr/bin/Xnest     usr/bin
+main/usr/share/man/man1/Xnest.1        usr/share/man/man1
diff --git a/debian/xorg-server-source.install b/debian/xorg-server-source.install
new file mode 100644 (file)
index 0000000..712189c
--- /dev/null
@@ -0,0 +1 @@
+build-source/xorg-server.tar.* usr/src
diff --git a/debian/xserver-common.install b/debian/xserver-common.install
new file mode 100644 (file)
index 0000000..28c12bb
--- /dev/null
@@ -0,0 +1,3 @@
+main/usr/lib/xorg/protocol.txt usr/lib/xorg
+main/usr/share/man/man1/Xserver.1      usr/share/man/man1
+main/var/lib/xkb/README.compiled var/lib/xkb
diff --git a/debian/xserver-xephyr.docs b/debian/xserver-xephyr.docs
new file mode 100644 (file)
index 0000000..059d734
--- /dev/null
@@ -0,0 +1 @@
+hw/kdrive/ephyr/README
diff --git a/debian/xserver-xephyr.install b/debian/xserver-xephyr.install
new file mode 100644 (file)
index 0000000..c0939e6
--- /dev/null
@@ -0,0 +1,2 @@
+main/usr/bin/Xephyr    usr/bin
+main/usr/share/man/man1/Xephyr.1       usr/share/man/man1
diff --git a/debian/xserver-xorg-core-udeb.install b/debian/xserver-xorg-core-udeb.install
new file mode 100644 (file)
index 0000000..8092696
--- /dev/null
@@ -0,0 +1,7 @@
+# from xserver-common:
+udeb/usr/lib/xorg/protocol.txt usr/lib/xorg
+
+# from xserver-xorg-core:
+udeb/usr/lib/xorg/modules      usr/lib/xorg
+udeb/usr/bin/Xorg      usr/bin
+udeb/usr/share/X11/xorg.conf.d usr/share/X11/
diff --git a/debian/xserver-xorg-core.bug.script b/debian/xserver-xorg-core.bug.script
new file mode 100644 (file)
index 0000000..c78ce6e
--- /dev/null
@@ -0,0 +1,146 @@
+#!/bin/sh
+
+PATH="/sbin:$PATH"
+CONFIG_DIR=/etc/X11
+SERVER_BINARY=/usr/bin/Xorg
+SERVER_SYMLINK="$CONFIG_DIR/X"
+XORGCONFIG="$CONFIG_DIR/xorg.conf"
+XORGCONFIG_DIR="$CONFIG_DIR/xorg.conf.d"
+CONFIG_AUX_DIR=/var/lib/x11
+X11R6_LIBS=/usr/X11R6/lib
+LOCAL_LIBS=/usr/local/lib
+
+# Pretty echo, underline the specified string:
+pecho() {
+    echo "$@"
+    echo "$@"|sed 's/./-/g'
+}
+
+exec >&3
+
+if [ -e "$SERVER_SYMLINK" ]; then
+    pecho "X server symlink status:"
+    ls -dl "$SERVER_SYMLINK"
+    ls -dl "$(readlink "$SERVER_SYMLINK")"
+else
+    echo "$SERVER_SYMLINK does not exist."
+fi
+
+if ! [ -L "$SERVER_SYMLINK" ]; then
+    echo "$SERVER_SYMLINK is not a symlink."
+fi
+
+if ! [ -x "$SERVER_SYMLINK" ]; then
+    echo "$SERVER_SYMLINK is not executable."
+fi
+
+echo
+
+if ldd "$SERVER_BINARY" | grep -qs "$LOCAL_LIBS"; then
+   pecho "The server is using local libraries!"
+   ldd "$SERVER_BINARY" | grep "$LOCAL_LIBS"
+   echo
+fi
+
+if ldd "$SERVER_BINARY" | grep -qs "$X11R6_LIBS"; then
+   pecho "The server is using obsolete libraries!"
+   ldd "$SERVER_BINARY" | grep "$X11R6_LIBS"
+   echo
+fi
+
+if dpkg-divert --list | grep -qs -i libgl; then
+    pecho "Diversions concerning libGL are in place"
+    dpkg-divert --list | grep -i libgl
+    echo
+fi
+
+if which lspci > /dev/null 2>&1; then
+    pecho "VGA-compatible devices on PCI bus:"
+    LC_ALL=C lspci -nn | grep 'VGA compatible controller'
+else
+    echo "The lspci command was not found; not including PCI data."
+fi
+
+echo
+
+if [ -e "$XORGCONFIG" ]; then
+    pecho "Xorg X server configuration file status:"
+    ls -dl "$XORGCONFIG"
+    echo
+    pecho "Contents of $XORGCONFIG:"
+    iconv -c -t ascii "$XORGCONFIG"
+else
+    echo "$XORGCONFIG does not exist."
+fi
+
+echo
+
+if [ -d "$XORGCONFIG_DIR" ]; then
+    pecho "Contents of $XORGCONFIG_DIR:"
+    ls -l "$XORGCONFIG_DIR"
+else
+    echo "$XORGCONFIG_DIR does not exist."
+fi
+
+echo
+
+KMS_CONFS_DIR=/etc/modprobe.d
+KMS_CONFS=$(ls $KMS_CONFS_DIR/*-kms.conf 2>/dev/null)
+
+if [ -n "$KMS_CONFS" ]; then
+    pecho "KMS configuration files:"
+    for CONF in $KMS_CONFS; do
+      echo "$CONF:"
+      # Indent, and get rid of empty lines:
+      sed 's/^/  /' < "$CONF"|egrep -v '^\s*$'
+    done
+else
+    echo "$KMS_CONFS_DIR contains no KMS configuration files."
+fi
+
+echo
+
+KERNEL_VERSION=/proc/version
+
+if [ -e "$KERNEL_VERSION" ]; then
+    pecho "Kernel version ($KERNEL_VERSION):"
+    cat /proc/version
+else
+    echo "No kernel version found (missing $KERNEL_VERSION)."
+fi
+
+echo
+
+XORG_LOGS=$(ls -dt /var/log/Xorg.*.log 2>/dev/null)
+
+if [ -n "$XORG_LOGS" ]; then
+    pecho "Xorg X server log files on system:"
+    ls -dlrt /var/log/Xorg.*.log 2>/dev/null
+    echo
+    for LOG in $XORG_LOGS; do
+        if [ -f "$LOG" ]; then
+            pecho "Contents of most recent Xorg X server log file ($LOG):"
+            cat "$LOG"
+            # the log files are large; only show the most recent
+            break
+        fi
+    done
+else
+    echo "No Xorg X server log files found."
+fi
+
+echo
+
+if [ -x /sbin/udevadm ]; then
+    pecho "udev information:"
+    /sbin/udevadm info --export-db | awk -F '\n' -v RS='\n\n' '/E: ID_INPUT/ { print; print "" }'
+    echo
+fi
+
+if [ -x /bin/dmesg ]; then
+    pecho "DRM Information from dmesg:"
+    dmesg | egrep -i 'drm|agp'
+    echo
+fi
+
+# vim:set ai et sts=4 sw=4 tw=0:
diff --git a/debian/xserver-xorg-core.install b/debian/xserver-xorg-core.install
new file mode 100644 (file)
index 0000000..0abdf30
--- /dev/null
@@ -0,0 +1,14 @@
+main/usr/lib/xorg/modules/*.so usr/lib/xorg/modules
+main/usr/lib/xorg/modules/multimedia   usr/lib/xorg/modules
+main/usr/lib/xorg/modules/extensions/libglx.so usr/lib/xorg/modules/extensions
+main/usr/bin/Xorg      usr/bin
+main/usr/share/man/man1/Xorg.1 usr/share/man/man1
+main/usr/share/man/man4/exa.4  usr/share/man/man4
+main/usr/share/man/man4/fbdevhw.4      usr/share/man/man4
+main/usr/share/man/man5/xorg.conf.5    usr/share/man/man5
+main/usr/share/man/man5/xorg.conf.d.5  usr/share/man/man5
+main/usr/bin/cvt       usr/bin
+main/usr/bin/gtf       usr/bin
+main/usr/share/man/man1/cvt.1  usr/share/man/man1
+main/usr/share/man/man1/gtf.1  usr/share/man/man1
+main/usr/share/X11/xorg.conf.d usr/share/X11/
diff --git a/debian/xserver-xorg-core.lintian-overrides b/debian/xserver-xorg-core.lintian-overrides
new file mode 100644 (file)
index 0000000..635a9b6
--- /dev/null
@@ -0,0 +1,3 @@
+# That's OK, they were virtual packages:
+breaks-without-version xserver-xorg-input-7
+breaks-without-version xserver-xorg-video-6
diff --git a/debian/xserver-xorg-core.postrm b/debian/xserver-xorg-core.postrm
new file mode 100644 (file)
index 0000000..0eb50b1
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+purge)
+  rm /var/log/Xorg.*.log || true
+  rm /var/log/Xorg.*.log.old || true
+  ;;
+esac
+
+#DEBHELPER#
+
+# vim:set ai et sts=2 sw=2 tw=0:
diff --git a/debian/xserver-xorg-dev.install b/debian/xserver-xorg-dev.install
new file mode 100644 (file)
index 0000000..9ec3c60
--- /dev/null
@@ -0,0 +1,6 @@
+main/usr/include/xorg  usr/include
+main/usr/lib/pkgconfig/xorg-server.pc  usr/lib/pkgconfig
+main/usr/share/aclocal usr/share
+
+../../debian/local/dh_xsf_substvars usr/bin
+../../debian/local/xsf.pm /usr/share/perl5/Debian/Debhelper/Sequence/
diff --git a/debian/xserver-xorg-xmir.install b/debian/xserver-xorg-xmir.install
new file mode 100644 (file)
index 0000000..d710363
--- /dev/null
@@ -0,0 +1 @@
+main/usr/lib/xorg/modules/extensions/libxmir.so        usr/lib/xorg/modules/extensions
diff --git a/debian/xvfb.install b/debian/xvfb.install
new file mode 100644 (file)
index 0000000..9fb2663
--- /dev/null
@@ -0,0 +1,4 @@
+main/usr/bin/Xvfb      usr/bin
+main/usr/bin/xvfb-run  usr/bin
+main/usr/share/man/man1/xvfb-run.1     usr/share/man/man1
+main/usr/share/man/man1/Xvfb.1 usr/share/man/man1
diff --git a/doc/c-extensions b/doc/c-extensions
new file mode 100644 (file)
index 0000000..4a90061
--- /dev/null
@@ -0,0 +1,68 @@
+First of all: C89 or better.  If you don't have that, port gcc first.
+
+Use of C language extensions throughout the X server tree
+---------------------------------------------------------
+
+Optional extensions:
+The server will still build if your toolchain does not support these
+extensions, although the results may not be optimal.
+
+    * _X_SENTINEL(x): member x of the passed structure must be NULL, e.g.:
+                      void parseOptions(Option *options _X_SENTINEL(0));
+                      parseOptions("foo", "bar", NULL); /* this is OK */
+                      parseOptions("foo", "bar", "baz"); /* this is not */
+                      This definition comes from Xfuncproto.h in the core
+                      protocol headers.
+    * _X_ATTRIBUTE_PRINTF(x, y): This function has printf-like semantics;
+                                 check the format string when built with
+                                 -Wformat (gcc) or similar.
+    * _X_EXPORT: this function should appear in symbol tables.
+    * _X_HIDDEN: this function should not appear in the _dynamic_ symbol
+                 table.
+    * _X_INTERNAL: like _X_HIDDEN, but attempt to ensure that this function
+                   is never called from another module.
+    * _X_INLINE: inline this functon if possible (generally obeyed unless
+                 disabling optimisations).
+    * _X_DEPRECATED: warn on use of this function.
+
+Mandatory extensions:
+The server will not build if your toolchain does not support these extensions.
+
+    * named initialisers: explicitly initialising structure members, e.g.:
+                          struct foo bar = { .baz = quux, .brian = "dog" };
+    * variadic macros: macros with a variable number of arguments, e.g.:
+                       #define DebugF(x, ...) /**/
+    * interleaved code and declarations: { foo = TRUE; int bar; do_stuff(); }
+
+
+Use of library facilities throughout the X server tree
+-------------------------------------------------------------
+
+Non-OS-dependent code can assume facilities at least as good as
+the non-OS-facility parts of POSIX-1.2001.  Ideally this would
+be C99, but even gcc+glibc doesn't implement that yet.
+
+Unix-like systems are assumed to be at least as good as UNIX03.
+
+Note that there are two Windows ports, Cygwin and MinGW:
+- Cygwin is more or less like Linux.
+- MinGW is more restrictive. Windows does not provide the required
+POSIX facilities, so some non-OS-dependent code is stubbed out or
+has an alternate implementation if WIN32 is defined.  Code that
+needs to be portable to Windows should be careful to, well, be portable.
+
+
+Required OS facilities
+-------------------------------------------------------------
+
+Linux systems must be at least 2.4 or later.  As a practical matter
+though, 2.4 kernels never receive any testing.  Use 2.6 already.
+
+TODO: Solaris.
+
+TODO: *BSD.
+
+Windows-dependent code assumes at least NT 5.1.
+
+OSX support is generally limited to the most recent version.  Currently
+that means 10.5.
diff --git a/dri3/dri3_event.c b/dri3/dri3_event.c
new file mode 100644 (file)
index 0000000..02f0f65
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * 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, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS 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.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "dri3_priv.h"
+
+RESTYPE dri3_event_type;
+
+static int
+dri3_free_event(pointer data, XID id)
+{
+    dri3_event_ptr dri3_event = (dri3_event_ptr) data;
+    dri3_window_priv_ptr window_priv = dri3_window_priv(dri3_event->window);
+    dri3_event_ptr *previous, current;
+
+    for (previous = &window_priv->events; (current = *previous); previous = &current->next) {
+        if (current == dri3_event) {
+            *previous = dri3_event->next;
+            break;
+        }
+    }
+    free((pointer) dri3_event);
+    return 1;
+
+}
+
+void
+dri3_free_events(WindowPtr window)
+{
+    dri3_window_priv_ptr window_priv = dri3_window_priv(window);
+    dri3_event_ptr event;
+
+    if (!window_priv)
+        return;
+
+    while ((event = window_priv->events))
+        FreeResource(event->id, RT_NONE);
+}
+
+static void
+dri3_event_swap(xGenericEvent *from, xGenericEvent *to)
+{
+    *to = *from;
+    swaps(&to->sequenceNumber);
+    swapl(&to->length);
+    swaps(&to->evtype);
+    switch (from->evtype) {
+    case DRI3_ConfigureNotify: {
+        xDRI3ConfigureNotify *c = (xDRI3ConfigureNotify *) to;
+
+        swapl(&c->eid);
+        swapl(&c->window);
+        swaps(&c->x);
+        swaps(&c->y);
+        swaps(&c->width);
+        swaps(&c->height);
+        swaps(&c->off_x);
+        swaps(&c->off_y);
+        swaps(&c->pixmap_width);
+        swaps(&c->pixmap_height);
+        swapl(&c->pixmap_flags);
+        break;
+    }
+    }
+}
+
+void
+dri3_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling)
+{
+    dri3_window_priv_ptr window_priv = dri3_window_priv(window);
+
+    if (window_priv) {
+        xDRI3ConfigureNotify cn = {
+            .type = GenericEvent,
+            .extension = dri3_request,
+            .length = (sizeof(xDRI3ConfigureNotify) - 32) >> 2,
+            .evtype = DRI3_ConfigureNotify,
+            .eid = 0,
+            .window = window->drawable.id,
+            .x = x,
+            .y = y,
+            .width = w,
+            .height = h,
+            .off_x = 0,
+            .off_y = 0,
+            .pixmap_width = w,
+            .pixmap_height = h,
+            .pixmap_flags = 0
+        };
+        dri3_event_ptr event;
+        dri3_screen_priv_ptr screen_priv = dri3_screen_priv(window->drawable.pScreen);
+
+        if (screen_priv->info && screen_priv->info->driver_config)
+            screen_priv->info->driver_config(window, &cn);
+
+        for (event = window_priv->events; event; event = event->next) {
+            if (event->mask & (1 << DRI3ConfigureNotify)) {
+                cn.eid = event->id;
+                WriteEventsToClient(event->client, 1, (xEvent *) &cn);
+            }
+        }
+    }
+}
+
+int
+dri3_select_input(ClientPtr client, XID eid, WindowPtr window, CARD32 mask)
+{
+    dri3_window_priv_ptr window_priv = dri3_window_priv(window);
+    dri3_event_ptr event;
+
+    if (!window_priv)
+        return BadAlloc;
+
+    event = calloc (1, sizeof (dri3_event_rec));
+    if (!event)
+        return BadAlloc;
+
+    event->client = client;
+    event->window = window;
+    event->id = eid;
+    event->mask = mask;
+
+    event->next = window_priv->events;
+    window_priv->events = event;
+
+    if (!AddResource(event->id, dri3_event_type, (pointer) event))
+        return BadAlloc;
+
+    return Success;
+}
+
+Bool
+dri3_event_init(void)
+{
+    dri3_event_type = CreateNewResourceType(dri3_free_event, "DRI3Event");
+    if (!dri3_event_type)
+        return FALSE;
+
+    GERegisterExtension(dri3_request, dri3_event_swap);
+    return TRUE;
+}
diff --git a/dri3/dri3int.h b/dri3/dri3int.h
new file mode 100644 (file)
index 0000000..7f53eba
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright © 2011 Daniel Stone
+ *
+ * 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.
+ *
+ * Author: Daniel Stone <daniel@fooishbar.org>
+ */
+
+extern Bool DRI2ModuleSetup(void);
diff --git a/fix-miregion b/fix-miregion
new file mode 100644 (file)
index 0000000..fc502bb
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+sed -i \
+-e 's/miRegionCreate\b/RegionCreate/g' \
+-e 's/miRegionInit\b/RegionInit/g' \
+-e 's/miRegionDestroy\b/RegionDestroy/g' \
+-e 's/miRegionUninit\b/RegionUninit/g' \
+-e 's/miRegionCopy\b/RegionCopy/g' \
+-e 's/miIntersect\b/RegionIntersect/g' \
+-e 's/miUnion\b/RegionUnion/g' \
+-e 's/miRegionAppend\b/RegionAppend/g' \
+-e 's/miRegionValidate\b/RegionValidate/g' \
+-e 's/miRectsToRegion\b/RegionFromRects/g' \
+-e 's/miSubtract\b/RegionSubtract/g' \
+-e 's/miInverse\b/RegionInverse/g' \
+-e 's/miRectIn\b/RegionContainsRect/g' \
+-e 's/miTranslateRegion\b/RegionTranslate/g' \
+-e 's/miRegionReset\b/RegionReset/g' \
+-e 's/miRegionBreak\b/RegionBreak/g' \
+-e 's/miPointInRegion\b/RegionContainsPoint/g' \
+-e 's/miRegionEqual\b/RegionEqual/g' \
+-e 's/miRegionNotEmpty\b/RegionNotEmpty/g' \
+-e 's/miRegionEmpty\b/RegionEmpty/g' \
+-e 's/miRegionExtents\b/RegionExtents/g' \
+-e 's/miPrintRegion\b/RegionPrint/g' \
+-e 's/miRectAlloc\b/RegionRectAlloc/g' \
+-e 's/miValidRegion\b/RegionIsValid/g' \
+-e 's/miRegionBroken\b/RegionBroken/g' \
+-e 's/miClipSpans\b/RegionClipSpans/g' \
+"$@"
diff --git a/fix-miregion-private b/fix-miregion-private
new file mode 100644 (file)
index 0000000..ebc24fa
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+sed -i \
+-e 's/miEmptyBox\b/RegionEmptyBox/g' \
+-e 's/miEmptyData\b/RegionEmptyData/g' \
+-e 's/miBrokenData\b/RegionBrokenData/g' \
+-e 's/miBrokenRegion\b/RegionBrokenRegion/g' \
+-e 's/miCoalesce\b/RegionCoalesce/g' \
+-e 's/miAppendNonO\b/RegionAppendNonO/g' \
+-e 's/miRegionOp\b/RegionOp/g' \
+-e 's/miSetExtents\b/RegionSetExtents/g' \
+-e 's/miIntersectO\b/RegionIntersectO/g' \
+-e 's/miUnionO\b/RegionUnionO/g' \
+-e 's/miSubtractO\b/RegionSubtractO/g' \
+"$@"
diff --git a/fix-patch-whitespace b/fix-patch-whitespace
new file mode 100644 (file)
index 0000000..2d06d8e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+git diff --check |
+sed -n 's!^\([^:]*\):\([^:]*\):.*!sed -i "\2 s/[ \t]*$//; \2 s/ *\t/\t/g" \1!p' |
+sh
diff --git a/fix-region b/fix-region
new file mode 100644 (file)
index 0000000..ef8eb42
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+sed -i \
+    -e 's/REGION_NIL\b/RegionNil/g' \
+    -e 's/REGION_NAR\b/RegionNar/g' \
+    -e 's/REGION_NUM_RECTS\b/RegionNumRects/g' \
+    -e 's/REGION_SIZE\b/RegionSize/g' \
+    -e 's/REGION_RECTS\b/RegionRects/g' \
+    -e 's/REGION_BOXPTR\b/RegionBoxptr/g' \
+    -e 's/REGION_BOX\b/RegionBox/g' \
+    -e 's/REGION_TOP\b/RegionTop/g' \
+    -e 's/REGION_END\b/RegionEnd/g' \
+    -e 's/REGION_SZOF\b/RegionSizeof/g' \
+    -e 's/REGION_CREATE *([^,]*, */RegionCreate(/g' \
+    -e 's/REGION_COPY *([^,]*, */RegionCopy(/g' \
+    -e 's/REGION_DESTROY *([^,]*, */RegionDestroy(/g' \
+    -e 's/REGION_INTERSECT *([^,]*, */RegionIntersect(/g' \
+    -e 's/REGION_UNION *([^,]*, */RegionUnion(/g' \
+    -e 's/REGION_SUBTRACT *([^,]*, */RegionSubtract(/g' \
+    -e 's/REGION_INVERSE *([^,]*, */RegionInverse(/g' \
+    -e 's/REGION_TRANSLATE *([^,]*, */RegionTranslate(/g' \
+    -e 's/RECT_IN_REGION *([^,]*, */RegionContainsRect(/g' \
+    -e 's/POINT_IN_REGION *([^,]*, */RegionContainsPoint(/g' \
+    -e 's/REGION_EQUAL *([^,]*, */RegionEqual(/g' \
+    -e 's/REGION_APPEND *([^,]*, */RegionAppend(/g' \
+    -e 's/REGION_VALIDATE *([^,]*, */RegionValidate(/g' \
+    -e 's/BITMAP_TO_REGION\b/BitmapToRegion/g' \
+    -e 's/RECTS_TO_REGION *([^,]*, */RegionFromRects(/g' \
+    -e 's/REGION_BREAK *([^,]*, */RegionBreak(/g' \
+    -e 's/REGION_INIT *([^,]*, */RegionInit(/g' \
+    -e 's/REGION_UNINIT *([^,]*, */RegionUninit(/g' \
+    -e 's/REGION_RESET *([^,]*, */RegionReset(/g' \
+    -e 's/REGION_NOTEMPTY *([^,]*, */RegionNotEmpty(/g' \
+    -e 's/REGION_BROKEN *([^,]*, */RegionBroken(/g' \
+    -e 's/REGION_EMPTY *([^,]*, */RegionEmpty(/g' \
+    -e 's/REGION_EXTENTS *([^,]*, */RegionExtents(/g' \
+    -e 's/REGION_NULL *([^,]*, */RegionNull(/g' \
+    -e 's/REGION_NULL$/RegionNull/g' \
+    "$@"
diff --git a/glx/glthread.c b/glx/glthread.c
new file mode 100644 (file)
index 0000000..fd4c6cc
--- /dev/null
@@ -0,0 +1,204 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  6.5.1
+ *
+ * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
+ *
+ * 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 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * XXX There's probably some work to do in order to make this file
+ * truly reusable outside of Mesa.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#include <X11/Xfuncproto.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "glthread.h"
+
+/*
+ * This file should still compile even when THREADS is not defined.
+ * This is to make things easier to deal with on the makefile scene..
+ */
+#ifdef THREADS
+#include <errno.h>
+
+/*
+ * Error messages
+ */
+#define INIT_TSD_ERROR "_glthread_: failed to allocate key for thread specific data"
+#define GET_TSD_ERROR "_glthread_: failed to get thread specific data"
+#define SET_TSD_ERROR "_glthread_: thread failed to set thread specific data"
+
+/*
+ * Magic number to determine if a TSD object has been initialized.
+ * Kind of a hack but there doesn't appear to be a better cross-platform
+ * solution.
+ */
+#define INIT_MAGIC 0xff8adc98
+
+/*
+ * POSIX Threads -- The best way to go if your platform supports them.
+ *                  Solaris >= 2.5 have POSIX threads, IRIX >= 6.4 reportedly
+ *                  has them, and many of the free Unixes now have them.
+ *                  Be sure to use appropriate -mt or -D_REENTRANT type
+ *                  compile flags when building.
+ */
+#ifdef PTHREADS
+
+_X_EXPORT unsigned long
+_glthread_GetID(void)
+{
+    return (unsigned long) pthread_self();
+}
+
+void
+_glthread_InitTSD(_glthread_TSD * tsd)
+{
+    if (pthread_key_create(&tsd->key, NULL /*free */ ) != 0) {
+        perror(INIT_TSD_ERROR);
+        exit(-1);
+    }
+    tsd->initMagic = INIT_MAGIC;
+}
+
+void *
+_glthread_GetTSD(_glthread_TSD * tsd)
+{
+    if (tsd->initMagic != (int) INIT_MAGIC) {
+        _glthread_InitTSD(tsd);
+    }
+    return pthread_getspecific(tsd->key);
+}
+
+void
+_glthread_SetTSD(_glthread_TSD * tsd, void *ptr)
+{
+    if (tsd->initMagic != (int) INIT_MAGIC) {
+        _glthread_InitTSD(tsd);
+    }
+    if (pthread_setspecific(tsd->key, ptr) != 0) {
+        perror(SET_TSD_ERROR);
+        exit(-1);
+    }
+}
+
+#endif                          /* PTHREADS */
+
+/*
+ * Win32 Threads.  The only available option for Windows 95/NT.
+ * Be sure that you compile using the Multithreaded runtime, otherwise
+ * bad things will happen.
+ */
+#ifdef WIN32_THREADS
+
+void
+FreeTSD(_glthread_TSD * p)
+{
+    if (p->initMagic == INIT_MAGIC) {
+        TlsFree(p->key);
+        p->initMagic = 0;
+    }
+}
+
+void
+InsteadOf_exit(int nCode)
+{
+    DWORD dwErr = GetLastError();
+}
+
+unsigned long
+_glthread_GetID(void)
+{
+    return GetCurrentThreadId();
+}
+
+void
+_glthread_InitTSD(_glthread_TSD * tsd)
+{
+    tsd->key = TlsAlloc();
+    if (tsd->key == TLS_OUT_OF_INDEXES) {
+        perror("Mesa:_glthread_InitTSD");
+        InsteadOf_exit(-1);
+    }
+    tsd->initMagic = INIT_MAGIC;
+}
+
+void *
+_glthread_GetTSD(_glthread_TSD * tsd)
+{
+    if (tsd->initMagic != INIT_MAGIC) {
+        _glthread_InitTSD(tsd);
+    }
+    return TlsGetValue(tsd->key);
+}
+
+void
+_glthread_SetTSD(_glthread_TSD * tsd, void *ptr)
+{
+    /* the following code assumes that the _glthread_TSD has been initialized
+       to zero at creation */
+    if (tsd->initMagic != INIT_MAGIC) {
+        _glthread_InitTSD(tsd);
+    }
+    if (TlsSetValue(tsd->key, ptr) == 0) {
+        perror("Mesa:_glthread_SetTSD");
+        InsteadOf_exit(-1);
+    }
+}
+
+#endif                          /* WIN32_THREADS */
+
+#else                           /* THREADS */
+
+/*
+ * no-op functions
+ */
+
+_X_EXPORT unsigned long
+_glthread_GetID(void)
+{
+    return 0;
+}
+
+void
+_glthread_InitTSD(_glthread_TSD * tsd)
+{
+    (void) tsd;
+}
+
+void *
+_glthread_GetTSD(_glthread_TSD * tsd)
+{
+    (void) tsd;
+    return NULL;
+}
+
+void
+_glthread_SetTSD(_glthread_TSD * tsd, void *ptr)
+{
+    (void) tsd;
+    (void) ptr;
+}
+
+#endif                          /* THREADS */
diff --git a/hw/kdrive/Xkdrive.man b/hw/kdrive/Xkdrive.man
new file mode 100644 (file)
index 0000000..b37f9f1
--- /dev/null
@@ -0,0 +1,57 @@
+.\" $RCSId: xc/programs/Xserver/hw/kdrive/Xkdrive.man,v 1.3 2001/01/24 00:06:10 dawes Exp $
+.\"
+.TH Xkdrive 1 __vendorversion__
+.SH NAME
+Xkdrive \- tiny X server
+.SH SYNOPSIS
+.B Xvesa
+.RI [ :display ]
+.RI [ option ...]
+
+.B Xfbdev
+.RI [ :display ]
+.RI [ option ...]
+.SH DESCRIPTION
+.B Xkdrive
+is a family of X servers designed to be particularly small.  This
+manual page describes the common functionality of the 
+.B Xkdrive
+servers; for information on a specific X server, please refer to the
+relevant manual page.
+.SH OPTIONS
+In addition to the standard options accepted by all X servers (see
+Xserver(1)), all the 
+.B Xkdrive
+servers accept the following options:
+.TP 8
+.B -card \fIpcmcia\fP
+use pcmcia card as additional screen.
+.TP 8
+.B -dumb
+disable hardware acceleration.
+.TP 8
+.B -origin \fIX\fP,\fIY\fP
+Locates the next screen in the Xinerama virtual screen.
+.TP 8
+.B -screen \fIwidth\fBx\fIheight\fR[\fBx\fIdepth\fR[\fBx\fIfreq\fR]]\fR[\fB@\fIrotation\fR]\fB
+use a screen of the specified \fIwidth\fP, \fIheight\fP, screen \fIdepth\fP, \fIfrequency\fP, and \fIrotation\fP (0, 90, 180 and 270 are legal values).
+.TP 8
+.B -softCursor
+disable the hardware cursor.
+.TP 8
+.B -videoTest
+start the server, pause momentarily, and exit.
+.TP 8
+.B -zaphod
+disable switching screens by moving the pointer across a screen boundary.
+.TP 8
+.B -2button
+enable emulation of a middle mouse button by chording.
+.TP 8
+.B -3button
+disable emulation of a middle mouse button by chording.
+.SH SEE ALSO
+X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), Xvesa(1), Xfbdev(1).
+.SH AUTHORS
+The Xkdrive common core was written by Keith Packard,
+and is based on the Sample Implementation of X.
diff --git a/hw/kdrive/fbdev/Xfbdev.man b/hw/kdrive/fbdev/Xfbdev.man
new file mode 100644 (file)
index 0000000..bfdae16
--- /dev/null
@@ -0,0 +1,28 @@
+.\" $RCSId: xc/programs/Xserver/hw/kdrive/fbdev/Xfbdev.man,v 1.4 2001/01/27 18:20:40 dawes Exp $
+.\"
+.TH Xfbdev 1 __vendorversion__
+.SH NAME
+Xfbdev \- Linux framebuffer device tiny X server
+.SH SYNOPSIS
+.B Xfbdev
+.RI [ :display ] 
+.RI [ option ...]
+.SH DESCRIPTION
+.B Xfbdev
+is a generic X server for Linux.
+.B Xfbdev
+doesn't know about any particular hardware, and uses the framebuffer
+provided by the Linux framebuffer device.
+.SH OPTIONS
+.B Xfbdev
+accepts the common options of the Xkdrive family of servers.  Please
+see Xkdrive(1).
+.SH KEYBOARD
+To be written.
+.SH SEE ALSO
+X(__miscmansuffix__), Xserver(1), Xkdrive(1), xdm(1), xinit(1).
+.SH AUTHORS
+The
+.B Xfbdev
+server was written by Keith Packard.
+
diff --git a/hw/xfree86/dixmods/extmod/modinit.h b/hw/xfree86/dixmods/extmod/modinit.h
new file mode 100644 (file)
index 0000000..4c9b6e3
--- /dev/null
@@ -0,0 +1,80 @@
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <X11/extensions/shapeproto.h>
+
+#ifdef XTEST
+extern void XTestExtensionInit(void);
+#include <X11/extensions/xtestproto.h>
+#endif
+
+#if 1
+extern void XTestExtension1Init(void);
+#endif
+
+#if 1
+extern void XCMiscExtensionInit(void);
+#endif
+
+#ifdef SCREENSAVER
+extern void ScreenSaverExtensionInit(void);
+#include <X11/extensions/saver.h>
+#endif
+
+#ifdef XF86VIDMODE
+extern void XFree86VidModeExtensionInit(void);
+#include <X11/extensions/xf86vmproto.h>
+#endif
+
+#ifdef XFreeXDGA
+extern void XFree86DGAExtensionInit(void);
+extern void XFree86DGARegister(void);
+#include <X11/extensions/xf86dgaproto.h>
+#endif
+
+#ifdef DPMSExtension
+extern void DPMSExtensionInit(void);
+#include <X11/extensions/dpmsconst.h>
+#endif
+
+#ifdef XV
+extern void XvExtensionInit(void);
+extern void XvMCExtensionInit(void);
+extern void XvRegister(void);
+#include <X11/extensions/Xv.h>
+#include <X11/extensions/XvMC.h>
+#endif
+
+#ifdef RES
+extern void ResExtensionInit(void);
+#include <X11/extensions/XResproto.h>
+#endif
+
+#ifdef SHM
+#include <X11/extensions/shmproto.h>
+extern void ShmExtensionInit(void);
+extern void ShmRegisterFuncs(ScreenPtr pScreen, ShmFuncsPtr funcs);
+#endif
+
+#ifdef XSELINUX
+extern void SELinuxExtensionInit(void);
+#include "xselinux.h"
+#endif
+
+#ifdef XEVIE
+extern void XevieExtensionInit(void);
+#endif
+
+#if 1
+extern void SecurityExtensionInit(void);
+#endif
+
+#if 1
+extern void PanoramiXExtensionInit(void);
+#endif
+
+#if 1
+extern void XkbExtensionInit(void);
+#endif
diff --git a/hw/xfree86/os-support/shared/platform_noop.c b/hw/xfree86/os-support/shared/platform_noop.c
new file mode 100644 (file)
index 0000000..199ae5e
--- /dev/null
@@ -0,0 +1,23 @@
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#ifdef XSERVER_PLATFORM_BUS
+/* noop platform device support */
+#include "xf86_OSproc.h"
+
+#include "xf86.h"
+#include "xf86platformBus.h"
+
+Bool
+xf86PlatformDeviceCheckBusID(struct xf86_platform_device *device, const char *busid)
+{
+    return FALSE;
+}
+
+void xf86PlatformDeviceProbe(struct OdevAttributes *attribs)
+{
+
+}
+#endif
diff --git a/hw/xquartz/GL/glcontextmodes.c b/hw/xquartz/GL/glcontextmodes.c
new file mode 100644 (file)
index 0000000..1ce3570
--- /dev/null
@@ -0,0 +1,586 @@
+/*
+ * (C) Copyright IBM Corporation 2003
+ * All Rights Reserved.
+ *
+ * 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, 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 NON-INFRINGEMENT.  IN NO EVENT SHALL
+ * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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.
+ */
+
+/**
+ * \file glcontextmodes.c
+ * Utility routines for working with \c __GLcontextModes structures.  At
+ * some point most or all of these functions will be moved to the Mesa
+ * code base.
+ *
+ * \author Ian Romanick <idr@us.ibm.com>
+ */
+
+#if defined(IN_MINI_GLX)
+#include <GL/gl.h>
+#else
+#if defined(HAVE_DIX_CONFIG_H)
+#include <dix-config.h>
+#endif
+#include <X11/X.h>
+#include <GL/glx.h>
+#include "GL/glxint.h"
+#endif
+
+/* Memory macros */
+#if defined(IN_MINI_GLX)
+#include <stdlib.h>
+#include <string.h>
+#define _mesa_malloc(b) malloc(b)
+#define _mesa_free(m)   free(m)
+#define _mesa_memset memset
+#else
+#ifdef XFree86Server
+#include <os.h>
+#include <string.h>
+#define _mesa_malloc(b) malloc(b)
+#define _mesa_free(m)   free(m)
+#define _mesa_memset memset
+#else
+#include <X11/Xlibint.h>
+#define _mesa_memset memset
+#define _mesa_malloc(b) Xmalloc(b)
+#define _mesa_free(m)   free(m)
+#endif  /* XFree86Server */
+#endif /* !defined(IN_MINI_GLX) */
+
+#include "glcontextmodes.h"
+
+#if !defined(IN_MINI_GLX)
+#define NUM_VISUAL_TYPES 6
+
+/**
+ * Convert an X visual type to a GLX visual type.
+ *
+ * \param visualType X visual type (i.e., \c TrueColor, \c StaticGray, etc.)
+ *        to be converted.
+ * \return If \c visualType is a valid X visual type, a GLX visual type will
+ *         be returned.  Otherwise \c GLX_NONE will be returned.
+ */
+GLint
+_gl_convert_from_x_visual_type(int visualType)
+{
+    static const int glx_visual_types[NUM_VISUAL_TYPES] = {
+        GLX_STATIC_GRAY,  GLX_GRAY_SCALE,
+        GLX_STATIC_COLOR, GLX_PSEUDO_COLOR,
+        GLX_TRUE_COLOR,   GLX_DIRECT_COLOR
+    };
+
+    return ((unsigned)visualType < NUM_VISUAL_TYPES)
+           ? glx_visual_types[visualType] : GLX_NONE;
+}
+
+/**
+ * Convert a GLX visual type to an X visual type.
+ *
+ * \param visualType GLX visual type (i.e., \c GLX_TRUE_COLOR,
+ *                   \c GLX_STATIC_GRAY, etc.) to be converted.
+ * \return If \c visualType is a valid GLX visual type, an X visual type will
+ *         be returned.  Otherwise -1 will be returned.
+ */
+GLint
+_gl_convert_to_x_visual_type(int visualType)
+{
+    static const int x_visual_types[NUM_VISUAL_TYPES] = {
+        TrueColor,   DirectColor,
+        PseudoColor, StaticColor,
+        GrayScale,   StaticGray
+    };
+
+    return ((unsigned)(visualType - GLX_TRUE_COLOR) < NUM_VISUAL_TYPES)
+           ? x_visual_types[visualType - GLX_TRUE_COLOR] : -1;
+}
+
+/**
+ * Copy a GLX visual config structure to a GL context mode structure.  All
+ * of the fields in \c config are copied to \c mode.  Additional fields in
+ * \c mode that can be derrived from the fields of \c config (i.e.,
+ * \c haveDepthBuffer) are also filled in.  The remaining fields in \c mode
+ * that cannot be derived are set to default values.
+ *
+ * \param mode   Destination GL context mode.
+ * \param config Source GLX visual config.
+ *
+ * \note
+ * The \c fbconfigID and \c visualID fields of the \c __GLcontextModes
+ * structure will be set to the \c vid of the \c __GLXvisualConfig structure.
+ */
+void
+_gl_copy_visual_to_context_mode(__GLcontextModes * mode,
+                                const __GLXvisualConfig * config)
+{
+    __GLcontextModes * const next = mode->next;
+
+    (void)_mesa_memset(mode, 0, sizeof(__GLcontextModes));
+    mode->next = next;
+
+    mode->visualID = config->vid;
+    mode->visualType = _gl_convert_from_x_visual_type(config->class);
+    mode->xRenderable = GL_TRUE;
+    mode->fbconfigID = config->vid;
+    mode->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT;
+
+    mode->rgbMode = (config->rgba != 0);
+    mode->renderType = (mode->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT;
+
+    mode->colorIndexMode = !(mode->rgbMode);
+    mode->doubleBufferMode = (config->doubleBuffer != 0);
+    mode->stereoMode = (config->stereo != 0);
+
+    mode->haveAccumBuffer = ((config->accumRedSize +
+                              config->accumGreenSize +
+                              config->accumBlueSize +
+                              config->accumAlphaSize) > 0);
+    mode->haveDepthBuffer = (config->depthSize > 0);
+    mode->haveStencilBuffer = (config->stencilSize > 0);
+
+    mode->redBits = config->redSize;
+    mode->greenBits = config->greenSize;
+    mode->blueBits = config->blueSize;
+    mode->alphaBits = config->alphaSize;
+    mode->redMask = config->redMask;
+    mode->greenMask = config->greenMask;
+    mode->blueMask = config->blueMask;
+    mode->alphaMask = config->alphaMask;
+    mode->rgbBits = mode->rgbMode ? config->bufferSize : 0;
+    mode->indexBits = mode->colorIndexMode ? config->bufferSize : 0;
+
+    mode->accumRedBits = config->accumRedSize;
+    mode->accumGreenBits = config->accumGreenSize;
+    mode->accumBlueBits = config->accumBlueSize;
+    mode->accumAlphaBits = config->accumAlphaSize;
+    mode->depthBits = config->depthSize;
+    mode->stencilBits = config->stencilSize;
+
+    mode->numAuxBuffers = config->auxBuffers;
+    mode->level = config->level;
+
+    mode->visualRating = config->visualRating;
+    mode->transparentPixel = config->transparentPixel;
+    mode->transparentRed = config->transparentRed;
+    mode->transparentGreen = config->transparentGreen;
+    mode->transparentBlue = config->transparentBlue;
+    mode->transparentAlpha = config->transparentAlpha;
+    mode->transparentIndex = config->transparentIndex;
+    mode->samples = config->multiSampleSize;
+    mode->sampleBuffers = config->nMultiSampleBuffers;
+    /* mode->visualSelectGroup = config->visualSelectGroup; ? */
+
+    mode->swapMethod = GLX_SWAP_UNDEFINED_OML;
+
+    mode->bindToTextureRgb = (mode->rgbMode) ? GL_TRUE : GL_FALSE;
+    mode->bindToTextureRgba = (mode->rgbMode && mode->alphaBits) ?
+                              GL_TRUE : GL_FALSE;
+    mode->bindToMipmapTexture = mode->rgbMode ? GL_TRUE : GL_FALSE;
+    mode->bindToTextureTargets = mode->rgbMode ?
+                                 GLX_TEXTURE_1D_BIT_EXT |
+                                 GLX_TEXTURE_2D_BIT_EXT |
+                                 GLX_TEXTURE_RECTANGLE_BIT_EXT : 0;
+    mode->yInverted = GL_FALSE;
+}
+
+/**
+ * Get data from a GL context mode.
+ *
+ * \param mode         GL context mode whose data is to be returned.
+ * \param attribute    Attribute of \c mode that is to be returned.
+ * \param value_return Location to store the data member of \c mode.
+ * \return  If \c attribute is a valid attribute of \c mode, zero is
+ *          returned.  Otherwise \c GLX_BAD_ATTRIBUTE is returned.
+ */
+int
+_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute,
+                          int *value_return)
+{
+    switch (attribute) {
+    case GLX_USE_GL:
+        *value_return = GL_TRUE;
+        return 0;
+
+    case GLX_BUFFER_SIZE:
+        *value_return = mode->rgbBits;
+        return 0;
+
+    case GLX_RGBA:
+        *value_return = mode->rgbMode;
+        return 0;
+
+    case GLX_RED_SIZE:
+        *value_return = mode->redBits;
+        return 0;
+
+    case GLX_GREEN_SIZE:
+        *value_return = mode->greenBits;
+        return 0;
+
+    case GLX_BLUE_SIZE:
+        *value_return = mode->blueBits;
+        return 0;
+
+    case GLX_ALPHA_SIZE:
+        *value_return = mode->alphaBits;
+        return 0;
+
+    case GLX_DOUBLEBUFFER:
+        *value_return = mode->doubleBufferMode;
+        return 0;
+
+    case GLX_STEREO:
+        *value_return = mode->stereoMode;
+        return 0;
+
+    case GLX_AUX_BUFFERS:
+        *value_return = mode->numAuxBuffers;
+        return 0;
+
+    case GLX_DEPTH_SIZE:
+        *value_return = mode->depthBits;
+        return 0;
+
+    case GLX_STENCIL_SIZE:
+        *value_return = mode->stencilBits;
+        return 0;
+
+    case GLX_ACCUM_RED_SIZE:
+        *value_return = mode->accumRedBits;
+        return 0;
+
+    case GLX_ACCUM_GREEN_SIZE:
+        *value_return = mode->accumGreenBits;
+        return 0;
+
+    case GLX_ACCUM_BLUE_SIZE:
+        *value_return = mode->accumBlueBits;
+        return 0;
+
+    case GLX_ACCUM_ALPHA_SIZE:
+        *value_return = mode->accumAlphaBits;
+        return 0;
+
+    case GLX_LEVEL:
+        *value_return = mode->level;
+        return 0;
+
+    case GLX_TRANSPARENT_TYPE_EXT:
+        *value_return = mode->transparentPixel;
+        return 0;
+
+    case GLX_TRANSPARENT_RED_VALUE:
+        *value_return = mode->transparentRed;
+        return 0;
+
+    case GLX_TRANSPARENT_GREEN_VALUE:
+        *value_return = mode->transparentGreen;
+        return 0;
+
+    case GLX_TRANSPARENT_BLUE_VALUE:
+        *value_return = mode->transparentBlue;
+        return 0;
+
+    case GLX_TRANSPARENT_ALPHA_VALUE:
+        *value_return = mode->transparentAlpha;
+        return 0;
+
+    case GLX_TRANSPARENT_INDEX_VALUE:
+        *value_return = mode->transparentIndex;
+        return 0;
+
+    case GLX_X_VISUAL_TYPE:
+        *value_return = mode->visualType;
+        return 0;
+
+    case GLX_CONFIG_CAVEAT:
+        *value_return = mode->visualRating;
+        return 0;
+
+    case GLX_VISUAL_ID:
+        *value_return = mode->visualID;
+        return 0;
+
+    case GLX_DRAWABLE_TYPE:
+        *value_return = mode->drawableType;
+        return 0;
+
+    case GLX_RENDER_TYPE:
+        *value_return = mode->renderType;
+        return 0;
+
+    case GLX_X_RENDERABLE:
+        *value_return = mode->xRenderable;
+        return 0;
+
+    case GLX_FBCONFIG_ID:
+        *value_return = mode->fbconfigID;
+        return 0;
+
+    case GLX_MAX_PBUFFER_WIDTH:
+        *value_return = mode->maxPbufferWidth;
+        return 0;
+
+    case GLX_MAX_PBUFFER_HEIGHT:
+        *value_return = mode->maxPbufferHeight;
+        return 0;
+
+    case GLX_MAX_PBUFFER_PIXELS:
+        *value_return = mode->maxPbufferPixels;
+        return 0;
+
+    case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX:
+        *value_return = mode->optimalPbufferWidth;
+        return 0;
+
+    case GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX:
+        *value_return = mode->optimalPbufferHeight;
+        return 0;
+
+    case GLX_SWAP_METHOD_OML:
+        *value_return = mode->swapMethod;
+        return 0;
+
+    case GLX_SAMPLE_BUFFERS_SGIS:
+        *value_return = mode->sampleBuffers;
+        return 0;
+
+    case GLX_SAMPLES_SGIS:
+        *value_return = mode->samples;
+        return 0;
+
+    case GLX_BIND_TO_TEXTURE_RGB_EXT:
+        *value_return = mode->bindToTextureRgb;
+        return 0;
+
+    case GLX_BIND_TO_TEXTURE_RGBA_EXT:
+        *value_return = mode->bindToTextureRgba;
+        return 0;
+
+    case GLX_BIND_TO_MIPMAP_TEXTURE_EXT:
+        *value_return = mode->bindToMipmapTexture == GL_TRUE ? GL_TRUE :
+                        GL_FALSE;
+        return 0;
+
+    case GLX_BIND_TO_TEXTURE_TARGETS_EXT:
+        *value_return = mode->bindToTextureTargets;
+        return 0;
+
+    case GLX_Y_INVERTED_EXT:
+        *value_return = mode->yInverted;
+        return 0;
+
+    /* Applications are NOT allowed to query GLX_VISUAL_SELECT_GROUP_SGIX.
+     * It is ONLY for communication between the GLX client and the GLX
+     * server.
+     */
+    case GLX_VISUAL_SELECT_GROUP_SGIX:
+    default:
+        return GLX_BAD_ATTRIBUTE;
+    }
+}
+#endif /* !defined(IN_MINI_GLX) */
+
+/**
+ * Allocate a linked list of \c __GLcontextModes structures.  The fields of
+ * each structure will be initialized to "reasonable" default values.  In
+ * most cases this is the default value defined by table 3.4 of the GLX
+ * 1.3 specification.  This means that most values are either initialized to
+ * zero or \c GLX_DONT_CARE (which is -1).  As support for additional
+ * extensions is added, the new values will be initialized to appropriate
+ * values from the extension specification.
+ *
+ * \param count         Number of structures to allocate.
+ * \param minimum_size  Minimum size of a structure to allocate.  This allows
+ *                      for differences in the version of the
+ *                      \c __GLcontextModes stucture used in libGL and in a
+ *                      DRI-based driver.
+ * \returns A pointer to the first element in a linked list of \c count
+ *          stuctures on success, or \c NULL on failure.
+ *
+ * \warning Use of \c minimum_size does \b not guarantee binary compatibility.
+ *          The fundamental assumption is that if the \c minimum_size
+ *          specified by the driver and the size of the \c __GLcontextModes
+ *          structure in libGL is the same, then the meaning of each byte in
+ *          the structure is the same in both places.  \b Be \b careful!
+ *          Basically this means that fields have to be added in libGL and
+ *          then propagated to drivers.  Drivers should \b never arbitrarilly
+ *          extend the \c __GLcontextModes data-structure.
+ */
+__GLcontextModes *
+_gl_context_modes_create(unsigned count, size_t minimum_size)
+{
+    const size_t size = (minimum_size > sizeof(__GLcontextModes))
+                        ? minimum_size : sizeof(__GLcontextModes);
+    __GLcontextModes * base = NULL;
+    __GLcontextModes ** next;
+    unsigned i;
+
+    next = &base;
+    for (i = 0; i < count; i++) {
+        *next = (__GLcontextModes *)_mesa_malloc(size);
+        if (*next == NULL) {
+            _gl_context_modes_destroy(base);
+            base = NULL;
+            break;
+        }
+
+        (void)_mesa_memset(*next, 0, size);
+        (*next)->visualID = GLX_DONT_CARE;
+        (*next)->visualType = GLX_DONT_CARE;
+        (*next)->visualRating = GLX_NONE;
+        (*next)->transparentPixel = GLX_NONE;
+        (*next)->transparentRed = GLX_DONT_CARE;
+        (*next)->transparentGreen = GLX_DONT_CARE;
+        (*next)->transparentBlue = GLX_DONT_CARE;
+        (*next)->transparentAlpha = GLX_DONT_CARE;
+        (*next)->transparentIndex = GLX_DONT_CARE;
+        (*next)->xRenderable = GLX_DONT_CARE;
+        (*next)->fbconfigID = GLX_DONT_CARE;
+        (*next)->swapMethod = GLX_SWAP_UNDEFINED_OML;
+        (*next)->bindToTextureRgb = GLX_DONT_CARE;
+        (*next)->bindToTextureRgba = GLX_DONT_CARE;
+        (*next)->bindToMipmapTexture = GLX_DONT_CARE;
+        (*next)->bindToTextureTargets = GLX_DONT_CARE;
+        (*next)->yInverted = GLX_DONT_CARE;
+
+        next = &((*next)->next);
+    }
+
+    return base;
+}
+
+/**
+ * Destroy a linked list of \c __GLcontextModes structures created by
+ * \c _gl_context_modes_create.
+ *
+ * \param modes  Linked list of structures to be destroyed.  All structres
+ *               in the list will be freed.
+ */
+void
+_gl_context_modes_destroy(__GLcontextModes * modes)
+{
+    while (modes != NULL) {
+        __GLcontextModes * const next = modes->next;
+
+        _mesa_free(modes);
+        modes = next;
+    }
+}
+
+/**
+ * Find a context mode matching a Visual ID.
+ *
+ * \param modes  List list of context-mode structures to be searched.
+ * \param vid    Visual ID to be found.
+ * \returns A pointer to a context-mode in \c modes if \c vid was found in
+ *          the list, or \c NULL if it was not.
+ */
+
+__GLcontextModes *
+_gl_context_modes_find_visual(__GLcontextModes *modes, int vid)
+{
+    __GLcontextModes *m;
+
+    for (m = modes; m != NULL; m = m->next)
+        if (m->visualID == vid)
+            return m;
+
+    return NULL;
+}
+
+__GLcontextModes *
+_gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid)
+{
+    __GLcontextModes *m;
+
+    for (m = modes; m != NULL; m = m->next)
+        if (m->fbconfigID == fbid)
+            return m;
+
+    return NULL;
+}
+
+/**
+ * Determine if two context-modes are the same.  This is intended to be used
+ * by libGL implementations to compare to sets of driver generated FBconfigs.
+ *
+ * \param a  Context-mode to be compared.
+ * \param b  Context-mode to be compared.
+ * \returns \c GL_TRUE if the two context-modes are the same.  \c GL_FALSE is
+ *          returned otherwise.
+ */
+GLboolean
+_gl_context_modes_are_same(const __GLcontextModes * a,
+                           const __GLcontextModes * b)
+{
+    return ((a->rgbMode == b->rgbMode) &&
+            (a->floatMode == b->floatMode) &&
+            (a->colorIndexMode == b->colorIndexMode) &&
+            (a->doubleBufferMode == b->doubleBufferMode) &&
+            (a->stereoMode == b->stereoMode) &&
+            (a->redBits == b->redBits) &&
+            (a->greenBits == b->greenBits) &&
+            (a->blueBits == b->blueBits) &&
+            (a->alphaBits == b->alphaBits) &&
+#if 0 /* For some reason these don't get set on the client-side in libGL. */
+            (a->redMask == b->redMask) &&
+            (a->greenMask == b->greenMask) &&
+            (a->blueMask == b->blueMask) &&
+            (a->alphaMask == b->alphaMask) &&
+#endif
+            (a->rgbBits == b->rgbBits) &&
+            (a->indexBits == b->indexBits) &&
+            (a->accumRedBits == b->accumRedBits) &&
+            (a->accumGreenBits == b->accumGreenBits) &&
+            (a->accumBlueBits == b->accumBlueBits) &&
+            (a->accumAlphaBits == b->accumAlphaBits) &&
+            (a->depthBits == b->depthBits) &&
+            (a->stencilBits == b->stencilBits) &&
+            (a->numAuxBuffers == b->numAuxBuffers) &&
+            (a->level == b->level) &&
+            (a->visualRating == b->visualRating) &&
+
+            (a->transparentPixel == b->transparentPixel) &&
+
+            ((a->transparentPixel != GLX_TRANSPARENT_RGB) ||
+             ((a->transparentRed == b->transparentRed) &&
+              (a->transparentGreen == b->transparentGreen) &&
+              (a->transparentBlue == b->transparentBlue) &&
+              (a->transparentAlpha == b->transparentAlpha))) &&
+
+            ((a->transparentPixel != GLX_TRANSPARENT_INDEX) ||
+             (a->transparentIndex == b->transparentIndex)) &&
+
+            (a->sampleBuffers == b->sampleBuffers) &&
+            (a->samples == b->samples) &&
+            ((a->drawableType & b->drawableType) != 0) &&
+            (a->renderType == b->renderType) &&
+            (a->maxPbufferWidth == b->maxPbufferWidth) &&
+            (a->maxPbufferHeight == b->maxPbufferHeight) &&
+            (a->maxPbufferPixels == b->maxPbufferPixels) &&
+            (a->optimalPbufferWidth == b->optimalPbufferWidth) &&
+            (a->optimalPbufferHeight == b->optimalPbufferHeight) &&
+            (a->swapMethod == b->swapMethod) &&
+            (a->bindToTextureRgb == b->bindToTextureRgb) &&
+            (a->bindToTextureRgba == b->bindToTextureRgba) &&
+            (a->bindToMipmapTexture == b->bindToMipmapTexture) &&
+            (a->bindToTextureTargets == b->bindToTextureTargets) &&
+            (a->yInverted == b->yInverted));
+}
diff --git a/hw/xquartz/GL/glcontextmodes.h b/hw/xquartz/GL/glcontextmodes.h
new file mode 100644 (file)
index 0000000..7237ccc
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * (C) Copyright IBM Corporation 2003
+ * All Rights Reserved.
+ *
+ * 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, 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 NON-INFRINGEMENT.  IN NO EVENT SHALL
+ * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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.
+ */
+
+/**
+ * \file glcontextmodes.h
+ * \author Ian Romanick <idr@us.ibm.com>
+ */
+
+#ifndef GLCONTEXTMODES_H
+#define GLCONTEXTMODES_H
+
+#include "GL/internal/glcore.h"
+
+#if !defined(IN_MINI_GLX)
+extern GLint
+_gl_convert_from_x_visual_type(int visualType);
+extern GLint
+_gl_convert_to_x_visual_type(int visualType);
+extern void
+_gl_copy_visual_to_context_mode(__GLcontextModes * mode,
+                                const __GLXvisualConfig * config);
+extern int
+_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute,
+                          int *value_return);
+#endif /* !defined(IN_MINI_GLX) */
+
+extern __GLcontextModes *
+_gl_context_modes_create(unsigned count, size_t minimum_size);
+extern void
+_gl_context_modes_destroy(__GLcontextModes * modes);
+extern __GLcontextModes *
+_gl_context_modes_find_visual(__GLcontextModes *modes, int vid);
+extern __GLcontextModes *
+_gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid);
+extern GLboolean
+_gl_context_modes_are_same(const __GLcontextModes * a,
+                           const __GLcontextModes * b);
+
+#endif /* GLCONTEXTMODES_H */
diff --git a/xkb/XKM_file_format.txt b/xkb/XKM_file_format.txt
new file mode 100644 (file)
index 0000000..0ba28ee
--- /dev/null
@@ -0,0 +1,684 @@
+                        XKM File Format Description
+                                Version 15
+
+1. Introduction
+
+The XKM file format is the exchange format for XKB keyboard descriptions
+between the server and xkbcomp. Usually, the server forks off xkbcomp,
+xkbcomp compiles the XKM format from the given parameters.
+The resulting XKM file is put into a directory readable by the server and
+then parsed.
+
+The XKM format is little more than a binary dump of various XKB-specific
+structures and hence tied to the ABI of the server.
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+
+1.1 About this file format description
+
+This description was produced by analyzing the XKM parsing code. Parts of
+the file description present in the original format specification may be
+missing. This description thus cannot be a reference document for XKM
+implementations.
+
+No description of the meaning of the various fields is given here. Refer to
+the XKB protocol specification for more details.
+                              ❧❧❧❧❧❧❧❧❧❧❧
+
+2. Notations used in this document
+
+Notation for structures:
+
+┌───
+  Name of struct
+       name of field:          type or fixed value of field
+       name of field:          type or fixed value of field
+└───
+
+Data types are identical to those used in the X Protocol specification
+except where noted otherwise. Structs specific to XKM are prefixed with XKM,
+defines specific to the XKB protocol specification are prefixed with Xkb and
+their value is equivalent to that in the protocol specification.
+
+Multiple instances of a given type are denoted in the following form:
+       name of field:          LISTofFIELDTYPE
+
+Length specifiers for such fields are usually prefixed with num_. For
+example, a struct containing a num_foo of 8 and a 'foo' field contains 8
+structures of type 'foo'.
+
+Variable length padding is specified as pad(x), where x is the length of the
+data to be padded out to a multiple of 4 bytes. For example, given an x of
+10, pad(x) would be the remaining 2 bytes to pad the whole struct to 12
+bytes.
+
+A special notation is a variable content struct. In this case, the contents
+of the struct depend on the value of one or more specific fields.
+┌───
+  Name of struct
+       field:                  type or fixed value of field
+       field:                  type or fixed value of field
+       ───
+       field ⇒ value 1
+       ⇒
+               specific field:         type
+               specific field:         type
+       ───
+        field ⇒ value 2
+       ⇒
+               specific field:         type
+               specific field:         type
+└───
+This notation denotes that if field is of value 1, this struct contains the
+specific fields listed underneath value 1.
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+
+3. XKM Format
+
+The XKM format is a binary format with structs usually being padded to a
+multiple of 4 bytes. No provisions for endianess are provided, the parser is
+left to guess the endianess of the XKM file.
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+3.1 Common data types
+
+┌───
+  XKMCountedString
+       count:                  CARD16
+       string:                 count * CHAR
+       pad:                    pad(count + 2)
+└───
+
+XKMCountedString is used for user-readable identifiers. Prime example are
+the level names and the section names ("complete", "evdev(inet)", etc.)
+
+┌───
+  XKMGroupBits:                CARD8
+       group1                  0x1
+       group2                  0x2
+       group3                  0x4
+       group4                  0x8
+└───
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+
+3.2 Header and Table of Contents
+
+┌───
+  XKMHeader
+       version:                CARD8
+       identifier1:            'm'
+       identifier2:            'k'
+       idenfifier3:            'x'
+└───
+
+The XKM file format has a 4 byte header identifying the file and the XKM
+version. The header is followed by the table of contents indicating the
+sections present in this file.
+
+┌───
+  XKMFileInfo
+       type:                   CARD8
+       min_keycode:            CARD8
+       max_keycode:            CARD8
+       num_sectioninfo:        CARD8
+       present:                CARD16
+       pad:                    CARD16
+       sectioninfo:            LISTofXKMSectionInfo
+└───
+
+min_keycode and max_keycode specify the keycode range for this keyboard
+descriptions. The core protocol requires min_keycode always be equal to or
+greater than 8.
+
+┌───
+  XKMSectionInfo
+       type:                   CARD16
+               XkmTypesIndex           0
+               XkmCompatMapIndex       1
+               XkmSymbolsIndex         2
+               XkmIndicatorsIndex      3
+               XkmKeyNamesIndex        4
+               XkmGeometryIndex        5
+               XkmVirtualModsIndex     6
+       format:                 CARD16
+       size:                   CARD16
+       offset:                 CARD16
+└───
+
+Describes the section found in a chunk of a file. This struct is found
+_twice_ in the file per section, once as part of the XKMFileInfo, once at
+the beginning of the actual section (see offset).
+The type specifies the type of the section, the section is to be parsed
+according to this type.
+Size and offset specify the size in bytes and the offset into the file in
+bytes, respectively.
+
+3.3 Sections
+
+Each section resides at the offset specified in the XKMFileInfo sectioninfo.
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+
+3.3.1 XKMTypes
+
+An XKMTypes section describes the key types defined in a layout. Roughly
+speaking, a key type defines how many levels a given key has and which
+modifiers change to a particular level.
+
+┌───
+  XKMTypesSection
+       section_info:           XKMSectionInfo
+       name:                   XKMCountedString
+       num_types:              CARD16
+       pad:                    CARD16
+       types:                  LISTofXKMKeyType
+└───
+
+┌───
+  XKMKeyType
+       real_mods:              CARD8
+       num_levels:             CARD8
+       virt_mods:              CARD16
+       num_map_entries:        CARD8
+       num_level_names:        CARD8
+       perserve:               CARD8
+       pad:                    CARD8
+       map_entries:            LISTofXKMKTMapEntry
+       name:                   XKMCountedString
+       mods:                   LISTofXKMModsDesc
+       level_names:            LISXTofXKMCountedString
+└───
+
+The num_map_entries specifies the number of structs in both map_entries and mods. mods is only present if preserve is TRUE.
+
+┌───
+  XKMKTMapEntry
+       level:                  CARD8
+       real_mods:              CARD8
+       virt_mods:              CARD16
+└───
+
+┌───
+  XKMModsDesc
+       real_mods:              CARD8
+       pad:                    CARD8
+       virt_mods:              CARD16
+└───
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+3.3.2 XKMCompatMap
+
+An XKMCompatMap section describes the actions a keyboard may trigger. This
+ranges from the TerminateServer action to simple modifier bits.
+
+┌───
+  XKMCompatMap
+       section_info:           XKMSectionInfo
+       name:                   XKMCountedString
+       num_si:                 CARD16
+       group_mask:             XKMGroupBits
+       pad:                    CARD8
+       si:                     LISTofXKMSymInterpreterDesc
+       groups:                 LISTofXKMModsDesc
+└───
+
+One XKMModsDesc is present for each bit set in group_mask.
+
+┌───
+  XKMSymInterpretDesc
+       sym:                    CARD32
+       mods:                   CARD8
+       match:                  CARD8
+       virtual_mod:            CARD8
+       flags:                  CARD8
+       action_type:            CARD8
+       action_data:            XKMActionData
+└───
+
+Where the action is 7 bytes of CARD8 whose content is determined by
+action_type.
+
+┌───
+  XKMActionData:
+       pad0:                   CARD8
+       pad1:                   CARD16
+       pad2:                   CARD32
+       ───
+        action_type ⇒ XkbSA_SetMods ||
+        action_type ⇒ XkbSA_LatchMods ||
+        action_type ⇒ XkbSA_LockMods
+       ⇒
+               flags:                  CARD8
+               mask:                   CARD8
+               real_mods:              CARD8
+               vmods1:                 CARD8
+               vmods2:                 CARD8
+               pad:                    CARD16
+       ───
+        action_type ⇒ XkbSA_SetGroup ||
+        action_type ⇒ XkbSA_LatchGroup ||
+        action_type ⇒ XkbSA_LockGroup
+       ⇒
+               flags:                  CARD8
+               group_XXX:              CARD8
+               pad0:                   CARD8
+               pad1:                   CARD32
+       ───
+        action_type ⇒ XkbSA_MovePtr
+       ⇒
+               flags:                  CARD8
+               high_XXX:               CARD8
+               low_XXX:                CARD8
+               high_YYY:               CARD8
+               low_YYY:                CARD8
+               pad:                    CARD16
+       ───
+        action_type ⇒ XkbSA_PtrBtn ||
+        action_type ⇒ XkbSA_LockPtrBtn
+       ⇒
+               flags:                  CARD8
+               count:                  CARD8
+               button:                 CARD8
+               pad:                    CARD32
+       ───
+        action_type ⇒ XkbSA_DeviceBtn ||
+        action_type ⇒ XkbSA_LockLockPtrBtn
+       ⇒
+               flags:                  CARD8
+               count:                  CARD8
+               button:                 CARD8
+               device:                 CARD8
+               pad0:                   CARD8
+               pad1:                   CARD16
+       ───
+        action_type ⇒ XkbSA_SetPtrDflt
+       ⇒
+               flags:                  CARD8
+               affect:                 CARD8
+               valueXXX:               CARD8
+               pad0:                   CARD32
+       ───
+        action_type ⇒ XkbSA_ISOLock
+       ⇒
+               flags:                  CARD8
+               mask:                   CARD8
+               real_mods:              CARD8
+               group_XXX:              CARD8
+               affect:                 CARD8
+               vmods1:                 CARD8
+               vmods1:                 CARD8
+       ───
+        action_type ⇒ XkbSA_SwitchScreen
+       ⇒
+               flags:                  CARD8
+               screenXXX:              CARD8
+               pad0:                   CARD8
+               pad1:                   CARD32
+       ───
+        action_type ⇒ XkbSA_SetControls ||
+        action_type ⇒ XkbSA_LockControls
+       ⇒
+               flags:                  CARD8
+               ctrls3:                 CARD8
+               ctrls2:                 CARD8
+               ctrls1:                 CARD8
+               ctrls0:                 CARD8
+               pad:                    CARD16
+       ───
+        action_type ⇒ XkbSA_RedirectKey
+       ⇒
+               new_key:                CARD8
+               mods_mask:              CARD8
+               mods:                   CARD8
+               vmods_mask0:            CARD8
+               vmods_mask1:            CARD8
+               vmods0:                 CARD8
+               vmods1:                 CARD8
+       ───
+        action_type ⇒ XkbSA_DeviceValuator
+       ⇒
+               device:         CARD8
+               v1_what:                CARD8
+               v1_idx:                 CARD8
+               v1_value:               CARD8
+               v2_what:                CARD8
+               v2_idx:                 CARD8
+               v2_value:               CARD8
+               pad:                    CARD8
+       ───
+        action_type ⇒ XkbSA_XFree86Private ||
+        action_type ⇒ XkbSA_Terminate
+       ⇒
+               pad0:                   CARD8
+               pad1:                   CARD16
+               pad2:                   CARD32
+       ───
+        action_type ⇒ XkbSA_ActionMessage
+       ⇒
+               press_msg:              BOOL
+               release_msg:            BOOL
+               gen_event:              BOOL
+               message:                4 * CHAR
+└───
+
+Note: XkbSA_ActionMessage is currently unsupported and the contents are
+ignored.
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+3.3.3 XkmSymbols
+
+The symbols in a keymap define the actual keysyms each key may produce.
+
+┌───
+  XKMSymbols
+       section_info:           XKMSectionInfo
+       name:                   XKMCountedString
+       min_keycode:            CARD8
+       max_keycode:            CARD8
+       group_names_mask:       XKMGroupBits
+       num_vmod_maps:          CARD8
+       group_names:            LISTofXKMCountedString
+       keysyms:                XKMKeysymMapDesc
+       vmod_maps:              XKMVModMapDesc
+└───
+One group_name is present for each bit set in group_names_mask.
+The number of keysyms present is max_keycode - min_keycode + 1.
+
+┌───
+  XKMKeysymMapDesc
+       width:                  CARD8
+       num_groups:             CARD8
+       modifier_map:           CARD8
+       flags:                  CARD8
+       names:                  LISTofXKMCountedString
+       syms:                   LISTofCARD32
+       behavior:               XKMBehaviorDesc
+└───
+
+Presence of names is conditional on the XkmKeyHasTypes flag. The number of
+strings is equal to the number of group bits in group_names_mask in the
+preceeding XKMSymbols section.
+The number of elements in syms is equal to width * num_groups.
+Presence of behavior is conditional on the XkmKeyHasBehavior flag.
+
+┌───
+  XKMKeyBehaviorDesc
+       type:                   CARD8
+       data:                   CARD8
+       pad:                    CARD16
+└───
+
+┌───
+  XKMVModMapDesc
+       key:                    CARD8
+       pad:                    CARD8
+       vmods:                  CARD16
+└───
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+
+3.3.4 XKMIndicators
+
+┌───
+  XKMIndicators
+       section_info:           XKMSectionInfo
+       name:                   XKMCountedString
+       num_indicators:         CARD8
+       pad0:                   CARD8
+       pad1:                   CARD16
+       indicators:             LISTofXKMIndicatorMapDesc
+└───
+
+┌───
+  XKMIndicatorMapDesc
+       name:                   XKMCountedString
+       indicator:              CARD8
+       flags:                  CARD8
+       which_mods:             CARD8
+       real_mods:              CARD8
+       vmods:                  CARD16
+       which_groups:           CARD8
+       groups:                 CARD8
+       ctrls:                  CARD32
+└───
+                              ❧❧❧❧❧❧❧❧❧❧❧
+
+3.3.5 XKMKeyNames
+
+┌───
+  XKMKeyNames
+       section_info:           XKMSectionInfo
+       name:                   XKMCountedString
+       min_keycode:            CARD8
+       max_keycode:            CARD8
+       num_aliases:            CARD8
+       pad:                    CARD8
+       keynames:               LISTofXKMKeyname
+       aliases:                LISTofXKMKeyAlias
+└───
+
+keynames contains max_keycode - min_keycode + 1 entries.
+
+┌───
+  XkmKeyname
+       name:                   4 * CHAR8
+└───
+
+┌───
+  XkmKeyAlias
+       real:                   XkmKeyname
+       alias:                  XkmKeyname
+└───
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+
+3.3.5 XKMGeometry
+
+┌───
+  XKMGeometry
+       section_info:           XKMSectionInfo
+       name:                   XKMCountedString
+       width_mm:               CARD16
+       height_mm:              CARD16
+       base_color_ndx:         CARD8
+       label_color_ndx:        CARD8
+       num_properties:         CARD16
+       num_colors:             CARD16
+       num_shapes:             CARD16
+       num_sections:           CARD16
+       num_doodads:            CARD16
+       num_key_aliases:        CARD16
+       pad:                    CARD16
+       label_font:             XKMCountedString
+       properties:             LISTofXKMGeomProperty
+       colors:                 LISTofXKMCountedString
+       shapes:                 LISTofXKMGeomShape
+       sections:               LISTofXKMGeomSection
+       doodads:                LISTofXKMGeomDoodad
+       key_aliases:            LISTofXKMKeyAlias
+└───
+
+┌───
+  XKMGeomProperty
+       name:                   XKMCountedString
+       value:                  XKMCountedString
+
+└───
+
+┌───
+  XKMGeomShape
+       name:                   XKMCountedString
+       num_outlines:           CARD8
+       primary_idx:            CARD8
+       approx_idx:             CARD8
+       pad:                    CARD8
+       outlines:               LISTofXKMOutlineDesc
+└───
+
+┌───
+  XKMOutlineDesc
+       num_points:             CARD8
+       corner_radius:          CARD8
+       pad:                    CARD16
+       points:                 LISTofXKMPointDesc
+└───
+
+┌───
+  XKMPointDesc
+       x:                      INT16
+       y:                      INT16
+└───
+
+┌───
+  XKMGeomSection
+       name:                   XKMCountedString
+       top:                    INT16
+       left:                   INT16
+       width:                  CARD16
+       height:                 CARD16
+       angle:                  INT16
+       priority:               CARD8
+       num_rows:               CARD8
+       num_doodads:            CARD8
+       num_overlays:           CARD8
+       pad:                    CARD16
+       rows:                   LISTofXKMRowDesc
+       doodads:                LISTofXKMGeomDoodad
+       overlays:               LISTofXKMGeomOverlay
+└───
+
+┌───
+  XKMRowDesc
+       top:                    INT16
+       left:                   INT16
+       num_keys:               CARD8
+       vertical:               BOOL
+       pad:                    CARD16
+       keys:                   XKMKeyDesc
+└───
+
+┌───
+  XKMKeyDesc
+       name:                   XKMKeyname
+       gap:                    INT16
+       shape_idx:              CARD8
+       color_idx:              CARD8
+└───
+
+┌───
+  XKMGeomDoodad
+       name:                   XKMCountedString
+       type:                   CARD8
+       priority:               CARD8
+       top:                    INT16
+       left:                   INT16
+       pad1:                   CARD16
+       pad2:                   CARD32
+       pad3:                   CARD32
+       ───
+        type ⇒ XkbOutlineDoodad ||
+        type ⇒ XkbSolideDoodad
+       ⇒
+               type:                   CARD8
+               priority:               CARD8
+               top:                    INT16
+               left:                   INT16
+               angle:                  INT16
+               color_idx:              CARD8
+               shape_idx:              CARD8
+               pad0:                   CARD16
+               pad1:                   CARD32
+       ───
+        type ⇒ XkbTextDoodad
+       ⇒
+               type:                   CARD8
+               priority:               CARD8
+               top:                    INT16
+               left:                   INT16
+               angle:                  INT16
+               width:                  CARD16
+               height:                 CARD16
+               color_idx:              CARD8
+               pad0:                   CARD8
+               pad1:                   CARD16
+               text:                   XKMCountedString
+               font:                   XKMCountedString
+       ───
+        type ⇒ XkbIndicatorDoodad
+       ⇒
+               type:                   CARD8
+               priority:               CARD8
+               top:                    INT16
+               left:                   INT16
+               shape_idx:              CARD8
+               on_color_idx:           CARD8
+               off_color_idx:          CARD8
+               pad0:                   CARD8
+               pad1:                   CARD16
+               pad2:                   CARD32
+       ───
+        type ⇒ XkbLogoDoodad
+       ⇒
+               type:                   CARD8
+               priority:               CARD8
+               top:                    INT16
+               left:                   INT16
+               angle:                  INT16
+               color_idx:              CARD8
+               shape_idx:              CARD8
+               pad0:                   CARD16
+               pad1:                   CARD32
+               logo_name:              XKMCountedString
+└───
+
+WARNING: XKMGeomDoodad has variable length depending on the type.
+NOTE: The current server implementation does not use all fields of all
+structures.
+
+┌───
+  XKMOverlayDesc
+       name:                   XKMCountedString
+       num_rows:               CARD8
+       pad0:                   CARD8
+       pad1:                   CARD16
+       rows:                   LISTofXKMOverlayRowDesc
+└───
+
+┌───
+  XKMOverlayRowDesc
+       name:                   XKMCountedString
+       row_under:              CARD8
+       num_keys:               CARD8
+       pad:                    CARD16
+       keys:                   LISTofXKMOverlayKeyDesc
+└───
+
+┌───
+  XKMOverlayKeyDesc
+       over:                   XKMKeyname
+       under:                  XKMKeyname
+└───
+
+                              ❧❧❧❧❧❧❧❧❧❧❧
+
+3.3.6 XKMVirtualMods
+
+┌───
+  XKMOverlayRowDesc
+       section_info:           XKMSectionInfo
+       name:                   XKMCountedString
+       bound_mask:             SETofVMODBITS
+       named_mask:             SETofVMODBITS
+       vmods:                  LISTofCARD8
+       pad:                    pad(vmods)
+       names:                  LISTofXKMCountedString
+└───
+
+       VMODBITS:               CARD16
+
+Number of elements in vmods is equal to the number of bits set in
+bound_mask. The padding completes vmods to a multiple of 4 byte units.
+Number of elements in names is equal to the number of bits set in
+named_mask.