Hello community, here is the log from the commit of package dbus-1 for openSUSE:Factory checked in at 2013-09-13 14:44:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dbus-1 (Old) and /work/SRC/openSUSE:Factory/.dbus-1.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dbus-1" Changes: -------- --- /work/SRC/openSUSE:Factory/dbus-1/dbus-1-x11.changes 2013-06-29 14:24:11.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.dbus-1.new/dbus-1-x11.changes 2013-09-13 14:44:07.000000000 +0200 @@ -1,0 +2,6 @@ +Sat Sep 7 20:17:40 UTC 2013 - [email protected] + +- Added 0001-_dbus_babysitter_unref-avoid-infinite-loop-if-waitpi.patch + from upstream for resolving fdo#68945, bnc#782909 + +------------------------------------------------------------------- dbus-1.changes: same change New: ---- 0001-_dbus_babysitter_unref-avoid-infinite-loop-if-waitpi.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dbus-1-x11.spec ++++++ --- /var/tmp/diff_new_pack.529jSS/_old 2013-09-13 14:44:08.000000000 +0200 +++ /var/tmp/diff_new_pack.529jSS/_new 2013-09-13 14:44:08.000000000 +0200 @@ -62,6 +62,8 @@ Patch1: dbus-do-autolaunch.patch # PATCH-FIX-OPENSUSE [email protected] bnc#802525 - Avoid clients hanging after move to /run Patch2: dbus-fall-back-to-old-run-directory.patch +# PATCH-FIX-UPSTREAM 0001-_dbus_babysitter_unref-avoid-infinite-loop-if-waitpi.patch (fdo#68945, bnc#782909) +Patch3: 0001-_dbus_babysitter_unref-avoid-infinite-loop-if-waitpi.patch %bcond_without selinux %if %{with selinux} BuildRequires: libselinux-devel @@ -118,6 +120,7 @@ %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 %build autoreconf -fi dbus-1.spec: same change ++++++ 0001-_dbus_babysitter_unref-avoid-infinite-loop-if-waitpi.patch ++++++ >From fc600b6a8f0dec5642b45c1026dee24c9adb9bc2 Mon Sep 17 00:00:00 2001 From: Simon McVittie <[email protected]> Date: Wed, 4 Sep 2013 17:53:23 +0100 Subject: [PATCH 1/3] _dbus_babysitter_unref: avoid infinite loop if waitpid() returns EINTR If waitpid() failed with EINTR, we'd go back for another go, but because ret is nonzero, we'd skip the waitpid() and just keep looping. Also avoid an unnecessary "goto" in favour of a proper loop, to make it more clearly correct. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=68945 Reviewed-by: Colin Walters <[email protected]> --- dbus/dbus-spawn.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/dbus/dbus-spawn.c b/dbus/dbus-spawn.c index ef00801..6e42f55 100644 --- a/dbus/dbus-spawn.c +++ b/dbus/dbus-spawn.c @@ -308,15 +308,18 @@ _dbus_babysitter_unref (DBusBabysitter *sitter) if (ret == 0) kill (sitter->sitter_pid, SIGKILL); - again: if (ret == 0) - ret = waitpid (sitter->sitter_pid, &status, 0); + { + do + { + ret = waitpid (sitter->sitter_pid, &status, 0); + } + while (_DBUS_UNLIKELY (ret < 0 && errno == EINTR)); + } if (ret < 0) { - if (errno == EINTR) - goto again; - else if (errno == ECHILD) + if (errno == ECHILD) _dbus_warn ("Babysitter process not available to be reaped; should not happen\n"); else _dbus_warn ("Unexpected error %d in waitpid() for babysitter: %s\n", -- 1.8.4 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
