commit dc9fa4dce1327560e674ffd9d3fb5430e129eb07 Author: Jacek Bukarewicz Date: Wed Nov 12 13:25:55 2014 +0100 Do not attempt to send unset error when dispatching auto-activation messages Error is not always set when bus_dispatch_matches returns FALSE. This can happen if access is denied on receive rule. Attempt to send unset error results in assertion failure which can trigger SIGABRT. diff --git a/bus/activation.c b/bus/activation.c index bdf9cf3..0cedc84 100644 --- a/bus/activation.c +++ b/bus/activation.c @@ -1199,11 +1199,14 @@ bus_activation_send_pending_auto_activation_messages (BusActivation *activation * to the original method invoker; in particular, we don't * want to make the RequestName call fail with that error * (see fd.o #78979, CVE-2014-3477). */ - if (!bus_transaction_send_error_reply (transaction, entry->connection, - &error, entry->activation_message)) + if (dbus_error_is_set (&error)) { - bus_connection_send_oom_error (entry->connection, - entry->activation_message); + if (!bus_transaction_send_error_reply (transaction, entry->connection, + &error, entry->activation_message)) + { + bus_connection_send_oom_error (entry->connection, + entry->activation_message); + } } link = next;