From 757999d48441c32a2cb60068faf91ddc12ef3b0d Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 14 Sep 2015 22:22:49 +0200 Subject: [PATCH] manager: avoid wrong ref-counting in do_set_property_check() Fixes: 52ed6a8e5c37d32f1d0bc1b559bc602e00d9d61f --- src/nm-manager.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/nm-manager.c b/src/nm-manager.c index 1f6c9f7031..2199d7ad4b 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -4465,23 +4465,27 @@ do_set_property_check (gpointer user_data) const char *error_message = NULL; if (!pfd->object) { - pfd->object = nm_bus_manager_get_registered_object (nm_bus_manager_get (), + GObject *object; + + object = nm_bus_manager_get_registered_object (nm_bus_manager_get (), g_dbus_message_get_path (pfd->message)); - if (!pfd->object) { + if (!object) { reply = g_dbus_message_new_method_error (pfd->message, "org.freedesktop.DBus.Error.UnknownObject", (error_message = "Object doesn't exist.")); goto out; } + /* If we lookup the object, we expect the object to be of a certain type. * Only NMDevice type have settable properties. */ - if (!NM_IS_DEVICE (pfd->object)) { + if (!NM_IS_DEVICE (object)) { reply = g_dbus_message_new_method_error (pfd->message, "org.freedesktop.DBus.Error.InvalidArgs", (error_message = "Object is of unexpected type.")); goto out; } - g_object_ref (pfd->object); + + pfd->object = g_object_ref (object); } pfd->subject = nm_auth_subject_new_unix_process_from_message (pfd->connection, pfd->message);