diff options
-rw-r--r-- | src/alarm-lib.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/alarm-lib.c b/src/alarm-lib.c index f721c8a..01e7325 100644 --- a/src/alarm-lib.c +++ b/src/alarm-lib.c @@ -596,13 +596,20 @@ error: EXPORT_API void alarmmgr_fini() { SECURE_LOGD("Enter"); + bool is_user = false; + + if (getuid() >= REGULAR_UID_MIN) + is_user = true; + if (introspection_data) { g_dbus_node_info_unref(introspection_data); introspection_data = NULL; } - if (alarm_context.connection != NULL && registration_id != 0) { - g_dbus_connection_unregister_object(alarm_context.connection, registration_id); + if (registration_id != 0) { + g_dbus_connection_unregister_object(is_user ? + alarm_context.session_conn : alarm_context.connection, + registration_id); registration_id = 0; } @@ -616,7 +623,7 @@ EXPORT_API void alarmmgr_fini() alarm_context.connection = NULL; } - if (alarm_context.connection) { + if (alarm_context.session_conn) { g_object_unref(alarm_context.session_conn); alarm_context.session_conn = NULL; } |