summaryrefslogtreecommitdiff
path: root/libre/xorg-server
diff options
context:
space:
mode:
Diffstat (limited to 'libre/xorg-server')
-rw-r--r--libre/xorg-server/PKGBUILD16
-rw-r--r--libre/xorg-server/os-access-fix-regression-in-server-interpreted-auth.patch30
-rw-r--r--libre/xorg-server/v2-xserver-Fix-a-crash-with-XDMCP-error-handler.patch23
3 files changed, 65 insertions, 4 deletions
diff --git a/libre/xorg-server/PKGBUILD b/libre/xorg-server/PKGBUILD
index f6cd49ca3..23d5e83ec 100644
--- a/libre/xorg-server/PKGBUILD
+++ b/libre/xorg-server/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 231249 2015-02-11 08:34:18Z lcarlier $
+# $Id: PKGBUILD 231711 2015-02-21 13:38:48Z lcarlier $
# Maintainer: AndyRTR <andyrtr@archlinux.org>
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Maintainer (Parabola): Márcio Silva <coadde@parabola.nu>
@@ -6,7 +6,7 @@
pkgbase=xorg-server
pkgname=('xorg-server')
pkgver=1.17.1
-pkgrel=1.parabola1 # build first with 0.1 and then rebuild it after xf86-input-evdev rebuild
+pkgrel=2.parabola1 # build first with 0.1 and then rebuild it after xf86-input-evdev rebuild
arch=('i686' 'x86_64' 'mips64el')
license=('custom')
url="http://xorg.freedesktop.org"
@@ -19,16 +19,24 @@ makedepends=('pixman' 'libx11' 'mesa' 'mesa-libgl' 'xf86driproto' 'xcmiscproto'
'libxshmfence')
source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2{,.sig}
xvfb-run
- xvfb-run.1)
+ xvfb-run.1
+ os-access-fix-regression-in-server-interpreted-auth.patch
+ v2-xserver-Fix-a-crash-with-XDMCP-error-handler.patch)
validpgpkeys=('7B27A3F1A6E18CD9588B4AE8310180050905E40C'
'C383B778255613DFDB409D91DB221A6900000011')
sha256sums=('2bf8e9f6f0a710dec1d2472467bff1f4e247cb6dcd76eb469aafdc8a2d7db2ab'
'SKIP'
'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9'
- '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776')
+ '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776'
+ '8a9d76eecf8795ca645fb1ce261733965578e953f6606153ce001a0e15d036e8'
+ 'a73e33644682d9f430db987c192da0f7193907af50539669ebd59614a5ebd0f9')
prepare() {
cd "${pkgbase}-${pkgver}"
+ # fix FS#43884, not yet upstream
+ patch -Np1 -i ../os-access-fix-regression-in-server-interpreted-auth.patch
+ # partially fix FS#43867, not yet upstream
+ patch -Np1 -i ../v2-xserver-Fix-a-crash-with-XDMCP-error-handler.patch
# fix os name:
#Build Operating System = OSNAME="--kernel-name --kernel-release --machine" OSVENDOR=""
diff --git a/libre/xorg-server/os-access-fix-regression-in-server-interpreted-auth.patch b/libre/xorg-server/os-access-fix-regression-in-server-interpreted-auth.patch
new file mode 100644
index 000000000..b96bb7a31
--- /dev/null
+++ b/libre/xorg-server/os-access-fix-regression-in-server-interpreted-auth.patch
@@ -0,0 +1,30 @@
+diff --git a/os/access.c b/os/access.c
+index 28f2d32..fe6e831 100644
+--- a/os/access.c
++++ b/os/access.c
+@@ -1390,14 +1390,23 @@ InvalidHost(register struct sockaddr *saddr, int len, ClientPtr client)
+ else
+ return 0;
+ }
++
++ /* An empty address requires both a NULL addr *and* a zero length
++ * as the address comparison functions call memcmp with both
++ * parameters. Make sure they agree here
++ */
++ if (addr == NULL)
++ len = 0;
++ if (len == 0)
++ addr = NULL;
+ for (host = validhosts; host; host = host->next) {
+ if (host->family == FamilyServerInterpreted) {
+- if (addr && siAddrMatch(family, addr, len, host, client)) {
++ if (siAddrMatch(family, addr, len, host, client)) {
+ return 0;
+ }
+ }
+ else {
+- if (addr && addrEqual(family, addr, len, host))
++ if (addrEqual(family, addr, len, host))
+ return 0;
+ }
+
diff --git a/libre/xorg-server/v2-xserver-Fix-a-crash-with-XDMCP-error-handler.patch b/libre/xorg-server/v2-xserver-Fix-a-crash-with-XDMCP-error-handler.patch
new file mode 100644
index 000000000..02dbaf22f
--- /dev/null
+++ b/libre/xorg-server/v2-xserver-Fix-a-crash-with-XDMCP-error-handler.patch
@@ -0,0 +1,23 @@
+diff --git a/os/xdmcp.c b/os/xdmcp.c
+index b6e97c9..0e9e625 100644
+--- a/os/xdmcp.c
++++ b/os/xdmcp.c
+@@ -1409,8 +1409,16 @@ recv_alive_msg(unsigned length)
+ static void
+ XdmcpFatal(const char *type, ARRAY8Ptr status)
+ {
+- FatalError("XDMCP fatal error: %s %*.*s\n", type,
+- status->length, status->length, status->data);
++ char *error_message;
++
++ /* error_message is leaked, but that's fine, we're aborting */
++ error_message = malloc (status->length + 1);
++ if (!error_message)
++ FatalError("XDMCP fatal error: %s", type);
++
++ memcpy(error_message, status->data, status->length);
++ error_message[status->length] = '\0';
++ FatalError("XDMCP fatal error: %s %s\n", type, error_message);
+ }
+
+ static void