Package: xdg-utils Version: 1.1.2 Severity: normal Tags: patch upstream Control: forwarded -1 https://bugs.freedesktop.org/show_bug.cgi?id=108121
Hi, This was first reported in Launchpad, but it affects Debian too. If the window title that 'suspend's argument refers to is invalid UTF-8 then the spawned perl process will crash with an assertion. We notice more in Ubuntu because this causes a crash pop-up - without that then the problem is probably that suspend hasn't worked. A patch is attached to fix this by sanitising the window name. I thought you might like to apply that in Debian. Cheers, -- Iain Lane [ i...@orangesquash.org.uk ] Debian Developer [ la...@debian.org ] Ubuntu Developer [ la...@ubuntu.com ]
>From bfee96b1b954b49fff3064d2ab22bd0f71775984 Mon Sep 17 00:00:00 2001 From: Iain Lane <iain.l...@canonical.com> Date: Tue, 2 Oct 2018 10:29:03 +0100 Subject: [PATCH] xdg-screensaver: Sanitise window name before sending it over the bus libdbus expects string arguments to be valid UTF-8. If they are not, then it aborts, which causes our backgrounded command to terminate abnormally. --- scripts/xdg-screensaver.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/xdg-screensaver.in b/scripts/xdg-screensaver.in index 9e68196..ccb4307 100644 --- a/scripts/xdg-screensaver.in +++ b/scripts/xdg-screensaver.in @@ -468,6 +468,7 @@ screensaver_gnome_screensaver() perl -e ' use strict; use warnings; +use Encode qw(decode); use IO::File; use Net::DBus; use X11::Protocol; @@ -489,6 +490,10 @@ while (1) { } } +# Replace any invalid unicode characters with U+FFFD, so we dont crash when we +# pass them over to D-Bus +$window_name = decode("utf8", $window_name, Encode::FB_DEFAULT); + # Inhibit idle detection (flags = 8) with window name and ID. # We have no reason so just send the window name again. my $bus = Net::DBus->session(); -- 2.17.0