chiark / gitweb /
dbus-manager: fix a fatal dbus abort in bus_manager_message_handler()
authorEelco Dolstra <eelco.dolstra@logicblox.com>
Wed, 31 Oct 2012 10:53:56 +0000 (11:53 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 15 Nov 2012 15:29:53 +0000 (16:29 +0100)
If ListUnitFiles fails, or an OOM occurs, then dbus_message_unref()
will be called twice on "reply", causing systemd to crash.  So remove
the call to dbus_message_unref(); it is unnecessary because of
the cleanup attribute on "reply".

[zj: modified to leave one dbus_message_unref() alone, per Colin
Walters' comment.]

src/core/dbus-manager.c

index 2010241e6aca8a5c2101d3dca42930dd8cffc4f2..3cf3e90a3659d9fc2b49dc440889c9b3c8fbd6ae 100644 (file)
@@ -1436,7 +1436,6 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
                 r = unit_file_get_list(m->running_as == SYSTEMD_SYSTEM ? UNIT_FILE_SYSTEM : UNIT_FILE_USER, NULL, h);
                 if (r < 0) {
                         unit_file_list_free(h);
-                        dbus_message_unref(reply);
                         return bus_send_error_reply(connection, message, NULL, r);
                 }