diff options
Diffstat (limited to 'libre/xorg-server')
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 |