summaryrefslogtreecommitdiffstats
path: root/lib/Utils/Polkit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Utils/Polkit.cpp')
-rw-r--r--lib/Utils/Polkit.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/Utils/Polkit.cpp b/lib/Utils/Polkit.cpp
index c868e1a..8bd0eb6 100644
--- a/lib/Utils/Polkit.cpp
+++ b/lib/Utils/Polkit.cpp
@@ -46,14 +46,12 @@ static PolkitResult do_check(PolkitSubject *subject, const char *action_id)
GCancellable * cancellable;
authority = polkit_authority_get();
-
cancellable = g_cancellable_new();
g_timeout_add(POLKIT_TIMEOUT * 1000,
(GSourceFunc) do_cancel,
cancellable);
-
result = polkit_authority_check_authorization_sync(authority,
subject,
action_id,
@@ -61,6 +59,7 @@ static PolkitResult do_check(PolkitSubject *subject, const char *action_id)
POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
cancellable,
&error);
+ g_object_unref(authority);
if (error)
{
@@ -71,11 +70,18 @@ static PolkitResult do_check(PolkitSubject *subject, const char *action_id)
if (result)
{
if (polkit_authorization_result_get_is_challenge(result))
+ {
/* Can't happen (happens only with
* POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE flag) */
+ g_object_unref(result);
return PolkitChallenge;
+ }
if (polkit_authorization_result_get_is_authorized(result))
+ {
+ g_object_unref(result);
return PolkitYes;
+ }
+ g_object_unref(result);
return PolkitNo;
}