diff options
11 files changed, 8 insertions, 1304 deletions
diff --git a/libre/xorg-server/0001-int10-Fix-error-check-for-pci_device_map_legacy.patch b/libre/xorg-server/0001-int10-Fix-error-check-for-pci_device_map_legacy.patch deleted file mode 100644 index 75e5bb92f..000000000 --- a/libre/xorg-server/0001-int10-Fix-error-check-for-pci_device_map_legacy.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 0a78b599b34cc8b5fe6fe82f90e90234e8ab7a56 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=BCrg=20Billeter?= <j@bitron.ch> -Date: Sat, 7 Feb 2015 18:13:21 +0100 -Subject: [PATCH] int10: Fix error check for pci_device_map_legacy -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -pci_device_map_legacy returns 0 on success. - -Signed-off-by: Jürg Billeter <j@bitron.ch> -Reviewed-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> ---- - hw/xfree86/int10/generic.c | 2 +- - hw/xfree86/os-support/linux/int10/linux.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hw/xfree86/int10/generic.c b/hw/xfree86/int10/generic.c -index 012d194..8d5c4da 100644 ---- a/hw/xfree86/int10/generic.c -+++ b/hw/xfree86/int10/generic.c -@@ -104,7 +104,7 @@ readIntVec(struct pci_device *dev, unsigned char *buf, int len) - { - void *map; - -- if (!pci_device_map_legacy(dev, 0, len, 0, &map)) -+ if (pci_device_map_legacy(dev, 0, len, 0, &map)) - return FALSE; - - memcpy(buf, map, len); -diff --git a/hw/xfree86/os-support/linux/int10/linux.c b/hw/xfree86/os-support/linux/int10/linux.c -index 79b9a88..6ca118f 100644 ---- a/hw/xfree86/os-support/linux/int10/linux.c -+++ b/hw/xfree86/os-support/linux/int10/linux.c -@@ -75,7 +75,7 @@ readLegacy(struct pci_device *dev, unsigned char *buf, int base, int len) - { - void *map; - -- if (!pci_device_map_legacy(dev, base, len, 0, &map)) -+ if (pci_device_map_legacy(dev, base, len, 0, &map)) - return FALSE; - - memcpy(buf, map, len); --- -2.3.2 - diff --git a/libre/xorg-server/0001-mi-Partial-pie-slice-filled-arcs-may-need-more-space.patch b/libre/xorg-server/0001-mi-Partial-pie-slice-filled-arcs-may-need-more-space.patch deleted file mode 100644 index 668ae21ba..000000000 --- a/libre/xorg-server/0001-mi-Partial-pie-slice-filled-arcs-may-need-more-space.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 41932dfbc841a1adc6512d41085ea3f8ebecb42c Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -Date: Wed, 8 Apr 2015 07:45:28 -0700 -Subject: [PATCH] mi: Partial pie-slice filled arcs may need more space for - spans - -The mi filled arc code estimates that a filled arc will produce no -more spans than the arc is tall. This is true for most arcs except -for pie-slice arcs strictly between 180 and 360 degrees where the missing -portion of the arc faces up or down such that we get two spans on some -scanlines. - -For those, we need to reserve room for another height/2 spans. This -patch just does it for all partial pie-sliced arcs to make the test -easier to understand; it's just over-allocating a bit of memory, so -that's safe. - -Signed-off-by: Keith Packard <keithp@keithp.com> -Reviewed-by: Adam Jackson <ajax@redhat.com> ---- - mi/mifillarc.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/mi/mifillarc.c b/mi/mifillarc.c -index 246d70f..888519e 100644 ---- a/mi/mifillarc.c -+++ b/mi/mifillarc.c -@@ -660,6 +660,11 @@ miPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int narcs_all, xArc * parcs) - if (narcs && nspans + arc->height > MAX_SPANS_PER_LOOP) - break; - nspans += arc->height; -+ -+ /* A pie-slice arc may add another pile of spans */ -+ if (pGC->arcMode == ArcPieSlice && -+ (-FULLCIRCLE < arc->angle2 && arc->angle2 < FULLCIRCLE)) -+ nspans += (arc->height + 1) >> 1; - } - - pts = points = malloc (sizeof (DDXPointRec) * nspans + --- -2.3.5 - diff --git a/libre/xorg-server/0001-modesetting-Fix-software-cursor-fallback.patch b/libre/xorg-server/0001-modesetting-Fix-software-cursor-fallback.patch deleted file mode 100644 index ffb08756c..000000000 --- a/libre/xorg-server/0001-modesetting-Fix-software-cursor-fallback.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 63e4f22d5fe3d4247cb48c969b5f7f2690665d78 Mon Sep 17 00:00:00 2001 -From: Adel Gadllah <adel.gadllah@gmail.com> -Date: Fri, 1 May 2015 17:21:12 +0200 -Subject: [PATCH] modesetting: Fix software cursor fallback -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The code in drmmode_set_cursor does not properly handle the case where -drmModeSetCursor2 returns any other error than EINVAL and silently fails to set -a cursor. - -So only return when the drmModeSetCursor2 succeeds (i.e returns 0) and disable -the cursor2 usage on EINVAL. - -References: https://bugzilla.redhat.com/show_bug.cgi?id=1205725 -Signed-off-by: Adel Gadllah <adel.gadllah@gmail.com> -Reviewed-by: Michel Dänzer <michel@daenzer.net> ---- - hw/xfree86/drivers/modesetting/drmmode_display.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c -index 824500b..912abda 100644 ---- a/hw/xfree86/drivers/modesetting/drmmode_display.c -+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c -@@ -396,10 +396,10 @@ drmmode_set_cursor(xf86CrtcPtr crtc) - drmModeSetCursor2(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, - handle, ms->cursor_width, ms->cursor_height, - cursor->bits->xhot, cursor->bits->yhot); -+ if (!ret) -+ return; - if (ret == -EINVAL) - use_set_cursor2 = FALSE; -- else -- return; - } - - ret = drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, handle, --- -2.1.0 - diff --git a/libre/xorg-server/0001-sdksyms.sh-Make-sdksyms.sh-work-with-gcc5.patch b/libre/xorg-server/0001-sdksyms.sh-Make-sdksyms.sh-work-with-gcc5.patch deleted file mode 100644 index 0e0b20df6..000000000 --- a/libre/xorg-server/0001-sdksyms.sh-Make-sdksyms.sh-work-with-gcc5.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 612eb45a2e7a0b35cc3790870e6d0cc42eb50c74 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Wed, 11 Feb 2015 16:26:40 +0100 -Subject: [PATCH] sdksyms.sh: Make sdksyms.sh work with gcc5. - -gcc5's cpp inserts patterns like this: - -extern - __attribute__((visibility("default"))) - int WaitForSomething(int * - ); - -This patch make sdksyms.sh work with this. Note my awk skills are weak, so -there likely is a better way to deal with this. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - hw/xfree86/sdksyms.sh | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh -index 2305073..99b0cae 100755 ---- a/hw/xfree86/sdksyms.sh -+++ b/hw/xfree86/sdksyms.sh -@@ -350,6 +350,23 @@ BEGIN { - if (sdk) { - n = 3; - -+ # detect the following gcc5 cpp pattern and skip it: -+ # extern -+ # # 320 "../../include/os.h" 3 4 -+ # __attribute__((visibility("default"))) -+ # # 320 "../../include/os.h" -+ # Note in this case the "extern " or "extern void " always has -+ # a trailing space -+ if ($0 ~ "^extern.* $") { -+ getline; -+ getline; -+ getline; -+ getline; -+ n = 1; -+ while ($n == " ") -+ n++; -+ } -+ - # skip attribute, if any - while ($n ~ /^(__attribute__|__global)/ || - # skip modifiers, if any --- -2.1.0 - diff --git a/libre/xorg-server/PKGBUILD b/libre/xorg-server/PKGBUILD index 32669605b..fb239ec55 100644 --- a/libre/xorg-server/PKGBUILD +++ b/libre/xorg-server/PKGBUILD @@ -1,12 +1,12 @@ -# $Id: PKGBUILD 240562 2015-06-11 11:05:23Z jgc $ +# $Id: PKGBUILD 240954 2015-06-16 17:41:01Z lcarlier $ # Maintainer (Arch): AndyRTR <andyrtr@archlinux.org> # Maintainer (Arch): Jan de Groot <jgc@archlinux.org> # Maintainer: Márcio Silva <coadde@parabola.nu> pkgbase=xorg-server pkgname=('xorg-server') -pkgver=1.17.1 -pkgrel=7.parabola1 # build first with 0.1 and then rebuild it after xf86-input-evdev rebuild +pkgver=1.17.2 +pkgrel=1.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" @@ -20,59 +20,23 @@ makedepends=('pixman' 'libx11' 'mesa' 'mesa-libgl' 'xf86driproto' 'xcmiscproto' source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2{,.sig} xvfb-run xvfb-run.1 - os-access-fix-regression-in-server-interpreted-auth.patch - v2-xserver-Fix-a-crash-with-XDMCP-error-handler.patch - 0001-int10-Fix-error-check-for-pci_device_map_legacy.patch - 0001-mi-Partial-pie-slice-filled-arcs-may-need-more-space.patch - 0001-sdksyms.sh-Make-sdksyms.sh-work-with-gcc5.patch 0001-dix-Add-unaccelerated-valuators-to-the-ValuatorMask.patch - 0002-dix-hook-up-the-unaccelerated-valuator-masks.patch - fix-CVE-2015-3164.patch - systemd-logind-dont-second-guess-D-Bus-default-tim.patch - systemd-logind-filter-out-non-signal-messages-from.patch - 0001-modesetting-Fix-software-cursor-fallback.patch) + 0002-dix-hook-up-the-unaccelerated-valuator-masks.patch) validpgpkeys=('7B27A3F1A6E18CD9588B4AE8310180050905E40C' - 'C383B778255613DFDB409D91DB221A6900000011') -sha256sums=('2bf8e9f6f0a710dec1d2472467bff1f4e247cb6dcd76eb469aafdc8a2d7db2ab' + 'C383B778255613DFDB409D91DB221A6900000011' + 'DD38563A8A8224537D1F90E45B8A2D50A0ECD0D3') +sha256sums=('f61120612728f2c5034671d0ca3e2273438c60aba93b3dda4a8aa40e6a257993' 'SKIP' 'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9' '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776' - '8a9d76eecf8795ca645fb1ce261733965578e953f6606153ce001a0e15d036e8' - 'a73e33644682d9f430db987c192da0f7193907af50539669ebd59614a5ebd0f9' - '2ea82cdbd695f21c935710847913ed58e22d3d5c0c18c96175a4a6cc1142c071' - 'ca89cc013844c5b50abfde4cc5e852ecdf4368f8b069ffd069a7100843c46e90' - 'b4a4fbddebfa614d1a97e77dde98748682ee331fbf7be394480050670d6203aa' '3dc795002b8763a7d29db94f0af200131da9ce5ffc233bfd8916060f83a8fad7' - '416a1422eed71efcebb1d893de74e7f27e408323a56c4df003db37f5673b3f96' - 'bc6ac3e686e16f0357fd3b939c1c1f2845fdb444d5ec9c8c37fb69167cc54a28' - '84a1fea6fc7a764844de115e7bacd1dcfc5d2f53fef64772b290acb25933f44e' - 'd8120468e73a9f3ec9905933ca3baa828a6e0a676f7fb75782c1350ec20958a6' - 'a0c0dbf5fe27994d52d5892c9c7cecf72792c5fa35db57b112ee7b17980faa75') + '416a1422eed71efcebb1d893de74e7f27e408323a56c4df003db37f5673b3f96') prepare() { cd "${pkgbase}-${pkgver}" - # fix FS#43884, merged upstream - patch -Np1 -i ../os-access-fix-regression-in-server-interpreted-auth.patch - # partially fix FS#43867, merged upstream - patch -Np1 -i ../v2-xserver-Fix-a-crash-with-XDMCP-error-handler.patch - # fix FS#43924, merged upstream - patch -Np1 -i ../0001-int10-Fix-error-check-for-pci_device_map_legacy.patch - # fix FS#43937, merged upstream - patch -Np1 -i ../0001-mi-Partial-pie-slice-filled-arcs-may-need-more-space.patch - # fix FS#45245, merged upstream - patch -Np1 -i ../0001-sdksyms.sh-Make-sdksyms.sh-work-with-gcc5.patch # fix FS#45229, merged upstream patch -Np1 -i ../0001-dix-Add-unaccelerated-valuators-to-the-ValuatorMask.patch patch -Np1 -i ../0002-dix-hook-up-the-unaccelerated-valuator-masks.patch - # fix CVE-2015-3164, merged upstream - patch -Np1 -i ../fix-CVE-2015-3164.patch - - # fix FS#44304, merged upstream - patch -Np1 -i ../systemd-logind-filter-out-non-signal-messages-from.patch - patch -Np1 -i ../systemd-logind-dont-second-guess-D-Bus-default-tim.patch - - # fix software cursor fallback (possible fix for FS#44602) - patch -Np1 -i ../0001-modesetting-Fix-software-cursor-fallback.patch # fix os name: #Build Operating System = OSNAME="--kernel-name --kernel-release --machine" OSVENDOR="" diff --git a/libre/xorg-server/fix-CVE-2015-3164.patch b/libre/xorg-server/fix-CVE-2015-3164.patch deleted file mode 100644 index e2ee12973..000000000 --- a/libre/xorg-server/fix-CVE-2015-3164.patch +++ /dev/null @@ -1,311 +0,0 @@ -From c4534a38b68aa07fb82318040dc8154fb48a9588 Mon Sep 17 00:00:00 2001 -From: Ray Strode <rstrode@redhat.com> -Date: Tue, 5 May 2015 16:43:42 -0400 -Subject: xwayland: Enable access control on open sockets [CVE-2015-3164 1/3] - -Xwayland currently allows wide-open access to the X sockets -it listens on, ignoring Xauth access control. - -This commit makes sure to enable access control on the sockets, -so one user can't snoop on another user's X-over-wayland -applications. - -Signed-off-by: Ray Strode <rstrode@redhat.com> -Reviewed-by: Daniel Stone <daniels@collabora.com> -Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Keith Packard <keithp@keithp.com> - -diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c -index 7e8d667..c5bee77 100644 ---- a/hw/xwayland/xwayland.c -+++ b/hw/xwayland/xwayland.c -@@ -483,7 +483,7 @@ listen_on_fds(struct xwl_screen *xwl_screen) - int i; - - for (i = 0; i < xwl_screen->listen_fd_count; i++) -- ListenOnOpenFD(xwl_screen->listen_fds[i], TRUE); -+ ListenOnOpenFD(xwl_screen->listen_fds[i], FALSE); - } - - static void --- -cgit v0.10.2 -From 4b4b9086d02b80549981d205fb1f495edc373538 Mon Sep 17 00:00:00 2001 -From: Ray Strode <rstrode@redhat.com> -Date: Tue, 5 May 2015 16:43:43 -0400 -Subject: os: support new implicit local user access mode [CVE-2015-3164 2/3] - -If the X server is started without a '-auth' argument, then -it gets started wide open to all local users on the system. - -This isn't a great default access model, but changing it in -Xorg at this point would break backward compatibility. - -Xwayland, on the other hand is new, and much more targeted -in scope. It could, in theory, be changed to allow the much -more secure default of a "user who started X server can connect -clients to that server." - -This commit paves the way for that change, by adding a mechanism -for DDXs to opt-in to that behavior. They merely need to call - -LocalAccessScopeUser() - -in their init functions. - -A subsequent commit will add that call for Xwayland. - -Signed-off-by: Ray Strode <rstrode@redhat.com> -Reviewed-by: Daniel Stone <daniels@collabora.com> -Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Keith Packard <keithp@keithp.com> - -diff --git a/include/os.h b/include/os.h -index 6638c84..b2b96c8 100644 ---- a/include/os.h -+++ b/include/os.h -@@ -431,11 +431,28 @@ extern _X_EXPORT void - ResetHosts(const char *display); - - extern _X_EXPORT void -+EnableLocalAccess(void); -+ -+extern _X_EXPORT void -+DisableLocalAccess(void); -+ -+extern _X_EXPORT void - EnableLocalHost(void); - - extern _X_EXPORT void - DisableLocalHost(void); - -+#ifndef NO_LOCAL_CLIENT_CRED -+extern _X_EXPORT void -+EnableLocalUser(void); -+ -+extern _X_EXPORT void -+DisableLocalUser(void); -+ -+extern _X_EXPORT void -+LocalAccessScopeUser(void); -+#endif -+ - extern _X_EXPORT void - AccessUsingXdmcp(void); - -diff --git a/os/access.c b/os/access.c -index 8fa028e..75e7a69 100644 ---- a/os/access.c -+++ b/os/access.c -@@ -102,6 +102,10 @@ SOFTWARE. - #include <sys/ioctl.h> - #include <ctype.h> - -+#ifndef NO_LOCAL_CLIENT_CRED -+#include <pwd.h> -+#endif -+ - #if defined(TCPCONN) || defined(STREAMSCONN) - #include <netinet/in.h> - #endif /* TCPCONN || STREAMSCONN */ -@@ -225,6 +229,13 @@ static int LocalHostEnabled = FALSE; - static int LocalHostRequested = FALSE; - static int UsingXdmcp = FALSE; - -+static enum { -+ LOCAL_ACCESS_SCOPE_HOST = 0, -+#ifndef NO_LOCAL_CLIENT_CRED -+ LOCAL_ACCESS_SCOPE_USER, -+#endif -+} LocalAccessScope; -+ - /* FamilyServerInterpreted implementation */ - static Bool siAddrMatch(int family, void *addr, int len, HOST * host, - ClientPtr client); -@@ -237,6 +248,21 @@ static void siTypesInitialize(void); - */ - - void -+EnableLocalAccess(void) -+{ -+ switch (LocalAccessScope) { -+ case LOCAL_ACCESS_SCOPE_HOST: -+ EnableLocalHost(); -+ break; -+#ifndef NO_LOCAL_CLIENT_CRED -+ case LOCAL_ACCESS_SCOPE_USER: -+ EnableLocalUser(); -+ break; -+#endif -+ } -+} -+ -+void - EnableLocalHost(void) - { - if (!UsingXdmcp) { -@@ -249,6 +275,21 @@ EnableLocalHost(void) - * called when authorization is enabled to keep us secure - */ - void -+DisableLocalAccess(void) -+{ -+ switch (LocalAccessScope) { -+ case LOCAL_ACCESS_SCOPE_HOST: -+ DisableLocalHost(); -+ break; -+#ifndef NO_LOCAL_CLIENT_CRED -+ case LOCAL_ACCESS_SCOPE_USER: -+ DisableLocalUser(); -+ break; -+#endif -+ } -+} -+ -+void - DisableLocalHost(void) - { - HOST *self; -@@ -262,6 +303,74 @@ DisableLocalHost(void) - } - } - -+#ifndef NO_LOCAL_CLIENT_CRED -+static int GetLocalUserAddr(char **addr) -+{ -+ static const char *type = "localuser"; -+ static const char delimiter = '\0'; -+ static const char *value; -+ struct passwd *pw; -+ int length = -1; -+ -+ pw = getpwuid(getuid()); -+ -+ if (pw == NULL || pw->pw_name == NULL) -+ goto out; -+ -+ value = pw->pw_name; -+ -+ length = asprintf(addr, "%s%c%s", type, delimiter, value); -+ -+ if (length == -1) { -+ goto out; -+ } -+ -+ /* Trailing NUL */ -+ length++; -+ -+out: -+ return length; -+} -+ -+void -+EnableLocalUser(void) -+{ -+ char *addr = NULL; -+ int length = -1; -+ -+ length = GetLocalUserAddr(&addr); -+ -+ if (length == -1) -+ return; -+ -+ NewHost(FamilyServerInterpreted, addr, length, TRUE); -+ -+ free(addr); -+} -+ -+void -+DisableLocalUser(void) -+{ -+ char *addr = NULL; -+ int length = -1; -+ -+ length = GetLocalUserAddr(&addr); -+ -+ if (length == -1) -+ return; -+ -+ RemoveHost(NULL, FamilyServerInterpreted, length, addr); -+ -+ free(addr); -+} -+ -+void -+LocalAccessScopeUser(void) -+{ -+ LocalAccessScope = LOCAL_ACCESS_SCOPE_USER; -+} -+#endif -+ - /* - * called at init time when XDMCP will be used; xdmcp always - * adds local hosts manually when needed -diff --git a/os/auth.c b/os/auth.c -index 5fcb538..7da6fc6 100644 ---- a/os/auth.c -+++ b/os/auth.c -@@ -181,11 +181,11 @@ CheckAuthorization(unsigned int name_length, - - /* - * If the authorization file has at least one entry for this server, -- * disable local host access. (loadauth > 0) -+ * disable local access. (loadauth > 0) - * - * If there are zero entries (either initially or when the - * authorization file is later reloaded), or if a valid -- * authorization file was never loaded, enable local host access. -+ * authorization file was never loaded, enable local access. - * (loadauth == 0 || !loaded) - * - * If the authorization file was loaded initially (with valid -@@ -194,11 +194,11 @@ CheckAuthorization(unsigned int name_length, - */ - - if (loadauth > 0) { -- DisableLocalHost(); /* got at least one */ -+ DisableLocalAccess(); /* got at least one */ - loaded = TRUE; - } - else if (loadauth == 0 || !loaded) -- EnableLocalHost(); -+ EnableLocalAccess(); - } - if (name_length) { - for (i = 0; i < NUM_AUTHORIZATION; i++) { --- -cgit v0.10.2 -From 76636ac12f2d1dbdf7be08222f80e7505d53c451 Mon Sep 17 00:00:00 2001 -From: Ray Strode <rstrode@redhat.com> -Date: Tue, 5 May 2015 16:43:44 -0400 -Subject: xwayland: default to local user if no xauth file given. - [CVE-2015-3164 3/3] - -Right now if "-auth" isn't passed on the command line, we let -any user on the system connect to the Xwayland server. - -That's clearly suboptimal, given Xwayland is generally designed -to be used by one user at a time. - -This commit changes the behavior, so only the user who started the -X server can connect clients to it. - -Signed-off-by: Ray Strode <rstrode@redhat.com> -Reviewed-by: Daniel Stone <daniels@collabora.com> -Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Keith Packard <keithp@keithp.com> - -diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c -index c5bee77..bc92beb 100644 ---- a/hw/xwayland/xwayland.c -+++ b/hw/xwayland/xwayland.c -@@ -702,4 +702,6 @@ InitOutput(ScreenInfo * screen_info, int argc, char **argv) - if (AddScreen(xwl_screen_init, argc, argv) == -1) { - FatalError("Couldn't add screen\n"); - } -+ -+ LocalAccessScopeUser(); - } --- -cgit v0.10.2 - diff --git a/libre/xorg-server/glamor-upstream-fix.patch b/libre/xorg-server/glamor-upstream-fix.patch deleted file mode 100644 index 89dd4d017..000000000 --- a/libre/xorg-server/glamor-upstream-fix.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 3c0431b8911241552a15a43e4279c50658b50a18 Mon Sep 17 00:00:00 2001 -From: Keith Packard <keithp@keithp.com> -Date: Wed, 16 Jul 2014 23:03:23 +0000 -Subject: glamor: Fix temp picture coordinates in glamor_composite_clipped_region - -To understand this patch, let's start at the protocol interface where -the relationship between the coordinate spaces is documented: - - static Bool - _glamor_composite(CARD8 op, - PicturePtr source, - PicturePtr mask, - PicturePtr dest, - INT16 x_source, - INT16 y_source, - INT16 x_mask, - INT16 y_mask, - INT16 x_dest, INT16 y_dest, - CARD16 width, CARD16 height, Bool fallback) - -The coordinates are passed to this function directly off the wire and -are all relative to their respective drawables. For Windows, this means -that they are relative to the upper left corner of the window, in -whatever pixmap that window is getting drawn to. - -_glamor_composite calls miComputeCompositeRegion to construct a clipped -region to actually render to. In reality, miComputeCompositeRegion clips -only to the destination these days; source clip region based clipping -would have to respect the transform, which isn't really possible. The -returned region is relative to the screen in which dest lives; offset by -dest->drawable.x and dest->drawable.y. - -What is important to realize here is that, because of clipping, the -composite region may not have the same position within the destination -drawable as x_dest, y_dest. The protocol coordinates now exist solely to -'pin' the three objects together. - - extents->x1,y1 Screen origin of clipped operation - width,height Extents of the clipped operation - x_dest,y_dest Unclipped destination-relative operation coordinate - x_source,y_source Unclipped source-relative operation coordinate - x_mask,y_mask Unclipped mask-relative operation coordinate - -One thing we want to know is what the offset is from the original -operation origin to the clipped origin - - Destination drawable relative coordinates of the clipped operation: - - x_dest_clipped = extents->x1 - dest->drawable.x - y_dest_clipped = extents->y1 - dest->drawable.y - - Offset from the original operation origin: - - x_off_clipped = x_dest_clipped - x_dest - y_off_clipped = y_dest_clipped - y_dest - - Source drawable relative coordinates of the clipped operation: - - x_source_clipped = x_source + x_off_clipped; - y_source_clipped = y_source + y_off_clipped; - - Mask drawable relative coordinates of the clipped operation: - - x_mask_clipped = x_source + x_off_clipped; - y_mask_clipped = y_source + y_off_clipped; - -This is where the original code fails -- it doesn't subtract the -destination drawable location when computing the distance that the -operation has been moved by clipping. Here's what it does when -constructing a temporary source picture: - - temp_src = - glamor_convert_gradient_picture(screen, source, - extent->x1 + x_source - x_dest, - extent->y1 + y_source - y_dest, - width, height); - ... - x_temp_src = -extent->x1 + x_dest; - y_temp_src = -extent->y1 + y_dest; - -glamor_convert_gradient_picture needs source drawable relative -coordinates, but that is not what it's getting; it's getting -screen-relative coordinates for the destination, adjusted by the -distance between the provided source and destination operation -coordinates. We want x_source_clipped and y_source_clipped: - - x_source_clipped = x_source + x_off_clipped - = x_source + x_dest_clipped - x_dest - = x_source + extents->x1 - dest->drawable.x - x_dest - -x_temp_src/y_temp_src are supposed to be the coordinates of the original -operation translated to the temporary picture: - - x_temp_src = x_source - x_source_clipped; - y_temp_src = y_source - y_source_clipped; - -Note that x_source_clipped/y_source_clipped will never be less than -x_source/y_source because all we're doing is clipping. This means that -x_temp_src/y_temp_src will always be non-positive; the original source -coordinate can never be strictly *inside* the temporary image or we -could have made the temporary image smaller. - - x_temp_src = x_source - x_source_clipped - = x_source - (x_source + x_off_clipped) - = -x_off_clipped - = x_dest - x_dest_clipped - = x_dest - (extents->x1 - dest->drawable.x) - -Again, this is off by the destination origin within the screen -coordinate space. - -The code should look like: - - temp_src = - glamor_convert_gradient_picture(screen, source, - extent->x1 + x_source - x_dest - dest->pDrawable->x, - extent->y1 + y_source - y_dest - dest->pDrawable->y, - width, height); - - x_temp_src = -extent->x1 + x_dest + dest->pDrawable->x; - y_temp_src = -extent->y1 + y_dest + dest->pDrawable->y; - -Signed-off-by: Keith Packard <keithp@keithp.com> -Reviewed-by: Markus Wick <markus@selfnet.de> -(cherry picked from commit 55f5bfb578e934319d1308cbb56c900c5ac7cfa7) -Signed-off-by: Julien Cristau <jcristau@debian.org> ---- -diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c -index 14ab738..e5d5d2c 100644 ---- a/glamor/glamor_render.c -+++ b/glamor/glamor_render.c -@@ -1450,8 +1450,8 @@ glamor_composite_clipped_region(CARD8 op, - || source_pixmap->drawable.height != height)))) { - temp_src = - glamor_convert_gradient_picture(screen, source, -- extent->x1 + x_source - x_dest, -- extent->y1 + y_source - y_dest, -+ extent->x1 + x_source - x_dest - dest->pDrawable->x, -+ extent->y1 + y_source - y_dest - dest->pDrawable->y, - width, height); - if (!temp_src) { - temp_src = source; -@@ -1459,8 +1459,8 @@ glamor_composite_clipped_region(CARD8 op, - } - temp_src_priv = - glamor_get_pixmap_private((PixmapPtr) (temp_src->pDrawable)); -- x_temp_src = -extent->x1 + x_dest; -- y_temp_src = -extent->y1 + y_dest; -+ x_temp_src = -extent->x1 + x_dest + dest->pDrawable->x; -+ y_temp_src = -extent->y1 + y_dest + dest->pDrawable->y; - } - - if (mask -@@ -1474,8 +1474,8 @@ glamor_composite_clipped_region(CARD8 op, - * to do reduce one convertion. */ - temp_mask = - glamor_convert_gradient_picture(screen, mask, -- extent->x1 + x_mask - x_dest, -- extent->y1 + y_mask - y_dest, -+ extent->x1 + x_mask - x_dest - dest->pDrawable->x, -+ extent->y1 + y_mask - y_dest - dest->pDrawable->y, - width, height); - if (!temp_mask) { - temp_mask = mask; -@@ -1483,8 +1483,8 @@ glamor_composite_clipped_region(CARD8 op, - } - temp_mask_priv = - glamor_get_pixmap_private((PixmapPtr) (temp_mask->pDrawable)); -- x_temp_mask = -extent->x1 + x_dest; -- y_temp_mask = -extent->y1 + y_dest; -+ x_temp_mask = -extent->x1 + x_dest + dest->pDrawable->x; -+ y_temp_mask = -extent->y1 + y_dest + dest->pDrawable->y; - } - /* Do two-pass PictOpOver componentAlpha, until we enable - * dual source color blending. --- -cgit v0.9.0.2-2-gbebe - 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 deleted file mode 100644 index b96bb7a31..000000000 --- a/libre/xorg-server/os-access-fix-regression-in-server-interpreted-auth.patch +++ /dev/null @@ -1,30 +0,0 @@ -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/systemd-logind-dont-second-guess-D-Bus-default-tim.patch b/libre/xorg-server/systemd-logind-dont-second-guess-D-Bus-default-tim.patch deleted file mode 100644 index fc0522eb0..000000000 --- a/libre/xorg-server/systemd-logind-dont-second-guess-D-Bus-default-tim.patch +++ /dev/null @@ -1,446 +0,0 @@ -From 89250c82a01062775f8f840737a757125138fbce Mon Sep 17 00:00:00 2001 -From: Ray Strode <rstrode@redhat.com> -Date: Fri, 10 Apr 2015 14:19:50 -0400 -Subject: [PATCH] systemd-logind: don't second guess D-Bus default timeout - -At the moment, the X server uses a non-default timeout for D-Bus -messages to systemd-logind. The only timeouts normally used with -D-Bus are: - -1) Infinite -2) Default - -Anything else is just as arbitrary as Default, and so rarely makes -sense to use instead of Default. - -Put another way, there's little reason to be fault tolerant against -a local root running daemon (logind), that in some configurations, the -X server already depends on for proper functionality. - -This commit changes systemd-logind to just use the default timeouts. - -https://bugzilla.redhat.com/show_bug.cgi?id=1209347 ---- - hw/xfree86/os-support/linux/systemd-logind.c | 14 ++++++-------- - 1 file changed, 6 insertions(+), 8 deletions(-) - -diff --git a/hw/xfree86/os-support/linux/systemd-logind.c b/hw/xfree86/os-support/linux/systemd-logind.c -index 57c87c0..4ad41a3 100644 ---- a/hw/xfree86/os-support/linux/systemd-logind.c -+++ b/hw/xfree86/os-support/linux/systemd-logind.c -@@ -13,62 +13,60 @@ - * 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: Hans de Goede <hdegoede@redhat.com> - */ - - #ifdef HAVE_XORG_CONFIG_H - #include <xorg-config.h> - #endif - - #include <dbus/dbus.h> - #include <string.h> - #include <sys/types.h> - #include <unistd.h> - - #include "os.h" - #include "dbus-core.h" - #include "xf86.h" - #include "xf86platformBus.h" - #include "xf86Xinput.h" - - #include "systemd-logind.h" - --#define DBUS_TIMEOUT 500 /* Wait max 0.5 seconds */ -- - struct systemd_logind_info { - DBusConnection *conn; - char *session; - Bool active; - Bool vt_active; - }; - - static struct systemd_logind_info logind_info; - - static InputInfoPtr - systemd_logind_find_info_ptr_by_devnum(InputInfoPtr start, - int major, int minor) - { - InputInfoPtr pInfo; - - for (pInfo = start; pInfo; pInfo = pInfo->next) - if (pInfo->major == major && pInfo->minor == minor && - (pInfo->flags & XI86_SERVER_FD)) - return pInfo; - - return NULL; - } - - static void - systemd_logind_set_input_fd_for_all_devs(int major, int minor, int fd, - Bool enable) - { - InputInfoPtr pInfo; - - pInfo = systemd_logind_find_info_ptr_by_devnum(xf86InputDevs, major, minor); -@@ -103,61 +101,61 @@ systemd_logind_take_fd(int _major, int _minor, const char *path, - if (strstr(path, "mouse")) - return -1; - - /* Check if we already have an InputInfo entry with this major, minor - * (shared device-nodes happen ie with Wacom tablets). */ - pInfo = systemd_logind_find_info_ptr_by_devnum(xf86InputDevs, major, minor); - if (pInfo) { - LogMessage(X_INFO, "systemd-logind: returning pre-existing fd for %s %u:%u\n", - path, major, minor); - *paused_ret = FALSE; - return pInfo->fd; - } - - dbus_error_init(&error); - - msg = dbus_message_new_method_call("org.freedesktop.login1", info->session, - "org.freedesktop.login1.Session", "TakeDevice"); - if (!msg) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &major, - DBUS_TYPE_UINT32, &minor, - DBUS_TYPE_INVALID)) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - reply = dbus_connection_send_with_reply_and_block(info->conn, msg, -- DBUS_TIMEOUT, &error); -+ DBUS_TIMEOUT_USE_DEFAULT, &error); - if (!reply) { - LogMessage(X_ERROR, "systemd-logind: failed to take device %s: %s\n", - path, error.message); - goto cleanup; - } - - if (!dbus_message_get_args(reply, &error, - DBUS_TYPE_UNIX_FD, &fd, - DBUS_TYPE_BOOLEAN, &paused, - DBUS_TYPE_INVALID)) { - LogMessage(X_ERROR, "systemd-logind: TakeDevice %s: %s\n", - path, error.message); - goto cleanup; - } - - *paused_ret = paused; - - LogMessage(X_INFO, "systemd-logind: got fd for %s %u:%u fd %d paused %d\n", - path, major, minor, fd, paused); - - cleanup: - if (msg) - dbus_message_unref(msg); - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); - - return fd; - } - -@@ -180,61 +178,61 @@ systemd_logind_release_fd(int _major, int _minor, int fd) - * and minor, otherwise other InputInfo's are still referencing the fd. */ - pInfo = systemd_logind_find_info_ptr_by_devnum(xf86InputDevs, major, minor); - while (pInfo) { - matches++; - pInfo = systemd_logind_find_info_ptr_by_devnum(pInfo->next, major, minor); - } - if (matches > 1) { - LogMessage(X_INFO, "systemd-logind: not releasing fd for %u:%u, still in use\n", major, minor); - return; - } - - LogMessage(X_INFO, "systemd-logind: releasing fd for %u:%u\n", major, minor); - - dbus_error_init(&error); - - msg = dbus_message_new_method_call("org.freedesktop.login1", info->session, - "org.freedesktop.login1.Session", "ReleaseDevice"); - if (!msg) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &major, - DBUS_TYPE_UINT32, &minor, - DBUS_TYPE_INVALID)) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - reply = dbus_connection_send_with_reply_and_block(info->conn, msg, -- DBUS_TIMEOUT, &error); -+ DBUS_TIMEOUT_USE_DEFAULT, &error); - if (!reply) - LogMessage(X_ERROR, "systemd-logind: failed to release device: %s\n", - error.message); - - cleanup: - if (msg) - dbus_message_unref(msg); - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); - close: - if (fd != -1) - close(fd); - } - - int - systemd_logind_controls_session(void) - { - return logind_info.session ? 1 : 0; - } - - void - systemd_logind_vtenter(void) - { - struct systemd_logind_info *info = &logind_info; - InputInfoPtr pInfo; - int i; - - if (!info->session) - return; /* Not using systemd-logind */ -@@ -262,61 +260,61 @@ systemd_logind_vtenter(void) - - /* Do delayed input probing, this must be done after the above enabling */ - xf86InputEnableVTProbe(); - } - - static void - systemd_logind_ack_pause(struct systemd_logind_info *info, - dbus_int32_t minor, dbus_int32_t major) - { - DBusError error; - DBusMessage *msg = NULL; - DBusMessage *reply = NULL; - - dbus_error_init(&error); - - msg = dbus_message_new_method_call("org.freedesktop.login1", info->session, - "org.freedesktop.login1.Session", "PauseDeviceComplete"); - if (!msg) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &major, - DBUS_TYPE_UINT32, &minor, - DBUS_TYPE_INVALID)) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - reply = dbus_connection_send_with_reply_and_block(info->conn, msg, -- DBUS_TIMEOUT, &error); -+ DBUS_TIMEOUT_USE_DEFAULT, &error); - if (!reply) - LogMessage(X_ERROR, "systemd-logind: failed to ack pause: %s\n", - error.message); - - cleanup: - if (msg) - dbus_message_unref(msg); - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); - } - - static DBusHandlerResult - message_filter(DBusConnection * connection, DBusMessage * message, void *data) - { - struct systemd_logind_info *info = data; - struct xf86_platform_device *pdev = NULL; - InputInfoPtr pInfo = NULL; - int ack = 0, pause = 0, fd = -1; - DBusError error; - dbus_int32_t major, minor; - char *pause_str; - - if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_SIGNAL) - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - - dbus_error_init(&error); - - if (dbus_message_is_signal(message, - "org.freedesktop.DBus", "NameOwnerChanged")) { -@@ -430,96 +428,96 @@ message_filter(DBusConnection * connection, DBusMessage * message, void *data) - } - - static void - connect_hook(DBusConnection *connection, void *data) - { - struct systemd_logind_info *info = data; - DBusError error; - DBusMessage *msg = NULL; - DBusMessage *reply = NULL; - dbus_int32_t arg; - char *session = NULL; - - dbus_error_init(&error); - - msg = dbus_message_new_method_call("org.freedesktop.login1", - "/org/freedesktop/login1", "org.freedesktop.login1.Manager", - "GetSessionByPID"); - if (!msg) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - arg = getpid(); - if (!dbus_message_append_args(msg, DBUS_TYPE_UINT32, &arg, - DBUS_TYPE_INVALID)) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - reply = dbus_connection_send_with_reply_and_block(connection, msg, -- DBUS_TIMEOUT, &error); -+ DBUS_TIMEOUT_USE_DEFAULT, &error); - if (!reply) { - LogMessage(X_ERROR, "systemd-logind: failed to get session: %s\n", - error.message); - goto cleanup; - } - dbus_message_unref(msg); - - if (!dbus_message_get_args(reply, &error, DBUS_TYPE_OBJECT_PATH, &session, - DBUS_TYPE_INVALID)) { - LogMessage(X_ERROR, "systemd-logind: GetSessionByPID: %s\n", - error.message); - goto cleanup; - } - session = XNFstrdup(session); - - dbus_message_unref(reply); - reply = NULL; - - - msg = dbus_message_new_method_call("org.freedesktop.login1", - session, "org.freedesktop.login1.Session", "TakeControl"); - if (!msg) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - arg = FALSE; /* Don't forcibly take over over the session */ - if (!dbus_message_append_args(msg, DBUS_TYPE_BOOLEAN, &arg, - DBUS_TYPE_INVALID)) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - reply = dbus_connection_send_with_reply_and_block(connection, msg, -- DBUS_TIMEOUT, &error); -+ DBUS_TIMEOUT_USE_DEFAULT, &error); - if (!reply) { - LogMessage(X_ERROR, "systemd-logind: TakeControl failed: %s\n", - error.message); - goto cleanup; - } - - dbus_bus_add_match(connection, - "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',path='/org/freedesktop/DBus'", - &error); - if (dbus_error_is_set(&error)) { - LogMessage(X_ERROR, "systemd-logind: could not add match: %s\n", - error.message); - goto cleanup; - } - - /* - * HdG: This is not useful with systemd <= 208 since the signal only - * contains invalidated property names there, rather than property, val - * pairs as it should. Instead we just use the first resume / pause now. - */ - #if 0 - snprintf(match, sizeof(match), - "type='signal',sender='org.freedesktop.login1',interface='org.freedesktop.DBus.Properties',member='PropertiesChanged',path='%s'", - session); - dbus_bus_add_match(connection, match, &error); - if (dbus_error_is_set(&error)) { - LogMessage(X_ERROR, "systemd-logind: could not add match: %s\n", - error.message); - goto cleanup; - } -@@ -537,61 +535,61 @@ connect_hook(DBusConnection *connection, void *data) - info->session = session; - info->vt_active = info->active = TRUE; /* The server owns the vt during init */ - session = NULL; - - cleanup: - free(session); - if (msg) - dbus_message_unref(msg); - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); - } - - static void - systemd_logind_release_control(struct systemd_logind_info *info) - { - DBusError error; - DBusMessage *msg = NULL; - DBusMessage *reply = NULL; - - dbus_error_init(&error); - - msg = dbus_message_new_method_call("org.freedesktop.login1", - info->session, "org.freedesktop.login1.Session", "ReleaseControl"); - if (!msg) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - reply = dbus_connection_send_with_reply_and_block(info->conn, msg, -- DBUS_TIMEOUT, &error); -+ DBUS_TIMEOUT_USE_DEFAULT, &error); - if (!reply) { - LogMessage(X_ERROR, "systemd-logind: ReleaseControl failed: %s\n", - error.message); - goto cleanup; - } - - cleanup: - if (msg) - dbus_message_unref(msg); - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); - } - - static void - disconnect_hook(void *data) - { - struct systemd_logind_info *info = data; - - free(info->session); - info->session = NULL; - info->conn = NULL; - } - - static struct dbus_core_hook core_hook = { - .connect = connect_hook, - .disconnect = disconnect_hook, - .data = &logind_info, - }; - --- -2.3.3 diff --git a/libre/xorg-server/systemd-logind-filter-out-non-signal-messages-from.patch b/libre/xorg-server/systemd-logind-filter-out-non-signal-messages-from.patch deleted file mode 100644 index ee968ef17..000000000 --- a/libre/xorg-server/systemd-logind-filter-out-non-signal-messages-from.patch +++ /dev/null @@ -1,90 +0,0 @@ -From e90798c142dedc4fd296936b69fe34a40d0aa35a Mon Sep 17 00:00:00 2001 -From: Ray Strode <rstrode@redhat.com> -Date: Fri, 10 Apr 2015 14:19:50 -0400 -Subject: [PATCH] systemd-logind: filter out non-signal messages from message - filter - -It's possible to receive a message reply in the message filter if a -previous message call timed out locally before the reply arrived. - -The message_filter function only handles signals, at the moment, and -does not properly handle message replies. - -This commit changes the message_filter function to filter out all -non-signal messages, including spurious message replies. - -https://bugzilla.redhat.com/show_bug.cgi?id=1209347 ---- - hw/xfree86/os-support/linux/systemd-logind.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/hw/xfree86/os-support/linux/systemd-logind.c b/hw/xfree86/os-support/linux/systemd-logind.c -index 49758f4..57c87c0 100644 ---- a/hw/xfree86/os-support/linux/systemd-logind.c -+++ b/hw/xfree86/os-support/linux/systemd-logind.c -@@ -286,60 +286,63 @@ systemd_logind_ack_pause(struct systemd_logind_info *info, - DBUS_TYPE_INVALID)) { - LogMessage(X_ERROR, "systemd-logind: out of memory\n"); - goto cleanup; - } - - reply = dbus_connection_send_with_reply_and_block(info->conn, msg, - DBUS_TIMEOUT, &error); - if (!reply) - LogMessage(X_ERROR, "systemd-logind: failed to ack pause: %s\n", - error.message); - - cleanup: - if (msg) - dbus_message_unref(msg); - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); - } - - static DBusHandlerResult - message_filter(DBusConnection * connection, DBusMessage * message, void *data) - { - struct systemd_logind_info *info = data; - struct xf86_platform_device *pdev = NULL; - InputInfoPtr pInfo = NULL; - int ack = 0, pause = 0, fd = -1; - DBusError error; - dbus_int32_t major, minor; - char *pause_str; - -+ if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_SIGNAL) -+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; -+ - dbus_error_init(&error); - - if (dbus_message_is_signal(message, - "org.freedesktop.DBus", "NameOwnerChanged")) { - char *name, *old_owner, *new_owner; - - dbus_message_get_args(message, &error, - DBUS_TYPE_STRING, &name, - DBUS_TYPE_STRING, &old_owner, - DBUS_TYPE_STRING, &new_owner, DBUS_TYPE_INVALID); - if (dbus_error_is_set(&error)) { - LogMessage(X_ERROR, "systemd-logind: NameOwnerChanged: %s\n", - error.message); - dbus_error_free(&error); - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - - if (name && strcmp(name, "org.freedesktop.login1") == 0) - FatalError("systemd-logind disappeared (stopped/restarted?)\n"); - - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - - if (strcmp(dbus_message_get_path(message), info->session) != 0) - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - - if (dbus_message_is_signal(message, "org.freedesktop.login1.Session", - "PauseDevice")) { - if (!dbus_message_get_args(message, &error, - DBUS_TYPE_UINT32, &major, --- -2.3.3 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 deleted file mode 100644 index 02dbaf22f..000000000 --- a/libre/xorg-server/v2-xserver-Fix-a-crash-with-XDMCP-error-handler.patch +++ /dev/null @@ -1,23 +0,0 @@ -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 |