Blob Blame History Raw
diff -up upower-0.9.5/src/up-daemon.c.dbus-fixes upower-0.9.5/src/up-daemon.c
--- upower-0.9.5/src/up-daemon.c.dbus-fixes	2010-07-08 03:50:24.000000000 -0400
+++ upower-0.9.5/src/up-daemon.c	2010-08-17 22:22:58.741257003 -0400
@@ -323,6 +323,7 @@ up_daemon_about_to_sleep (UpDaemon *daem
 				     UP_DAEMON_ERROR_GENERAL,
 				     "Sleep has already been requested and is pending");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -376,6 +377,7 @@ up_daemon_deferred_sleep_cb (UpDaemonDef
 				     "Failed to spawn: %s, stdout:%s, stderr:%s", error_local->message, stdout, stderr);
 		g_error_free (error_local);
 		dbus_g_method_return_error (sleep->context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -470,6 +472,7 @@ up_daemon_suspend (UpDaemon *daemon, DBu
 				     UP_DAEMON_ERROR_GENERAL,
 				     "No kernel support");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -486,6 +489,7 @@ up_daemon_suspend (UpDaemon *daemon, DBu
 				     UP_DAEMON_ERROR_GENERAL,
 				     "Sleep has already been requested and is pending");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -507,13 +511,21 @@ up_daemon_suspend_allowed (UpDaemon *dae
 	gboolean ret;
 	PolkitSubject *subject = NULL;
 	UpDaemonPrivate *priv = daemon->priv;
+        GError *error;
 
 	subject = up_polkit_get_subject (priv->polkit, context);
 	if (subject == NULL)
 		goto out;
 
-	ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.suspend", context);
-	dbus_g_method_return (context, ret);
+        error = NULL;
+	ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.suspend", &error);
+        if (error) {
+                dbus_g_method_return_error (context, error);
+                g_error_free (error);
+        }
+        else {
+	        dbus_g_method_return (context, ret);
+        }
 
 out:
 	if (subject != NULL)
@@ -563,6 +575,7 @@ up_daemon_hibernate (UpDaemon *daemon, D
 				     UP_DAEMON_ERROR_GENERAL,
 				     "No kernel support");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -572,6 +585,7 @@ up_daemon_hibernate (UpDaemon *daemon, D
 				     UP_DAEMON_ERROR_GENERAL,
 				     "Not enough swap space");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -582,6 +596,7 @@ up_daemon_hibernate (UpDaemon *daemon, D
 				     UP_DAEMON_ERROR_GENERAL,
 				     "Swap space is encrypted, use AllowHibernateEncryptedSwap to override");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -598,6 +613,7 @@ up_daemon_hibernate (UpDaemon *daemon, D
 				     UP_DAEMON_ERROR_GENERAL,
 				     "Sleep has already been requested and is pending");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -619,13 +635,21 @@ up_daemon_hibernate_allowed (UpDaemon *d
 	gboolean ret;
 	PolkitSubject *subject = NULL;
 	UpDaemonPrivate *priv = daemon->priv;
+        GError *error;
 
 	subject = up_polkit_get_subject (priv->polkit, context);
 	if (subject == NULL)
 		goto out;
 
-	ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.hibernate", context);
-	dbus_g_method_return (context, ret);
+        error = NULL;
+	ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.hibernate", &error);
+        if (error) {
+                dbus_g_method_return_error (context, error);
+                g_error_free (error);
+        }
+        else {
+	        dbus_g_method_return (context, ret);
+        }
 
 out:
 	if (subject != NULL)
diff -up upower-0.9.5/src/up-polkit.c.dbus-fixes upower-0.9.5/src/up-polkit.c
--- upower-0.9.5/src/up-polkit.c.dbus-fixes	2010-08-17 22:22:58.735257003 -0400
+++ upower-0.9.5/src/up-polkit.c	2010-08-17 22:23:40.437257006 -0400
@@ -52,12 +52,19 @@ static gpointer up_polkit_object = NULL;
 PolkitSubject *
 up_polkit_get_subject (UpPolkit *polkit, DBusGMethodInvocation *context)
 {
+        GError *error;
 	const gchar *sender;
 	PolkitSubject *subject;
 
 	sender = dbus_g_method_get_sender (context);
 	subject = polkit_system_bus_name_new (sender);
 
+        if (subject == NULL) {
+		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "failed to get PolicyKit subject");
+                dbus_g_method_return_error (context, error);
+		g_error_free (error);
+        }
+
 	return subject;
 }
 
@@ -88,8 +95,8 @@ up_polkit_check_auth (UpPolkit *polkit, 
 		ret = TRUE;
 	} else {
 		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "not authorized");
-		dbus_g_method_return_error (context, error);
-		g_error_free (error);
+                dbus_g_method_return_error (context, error);
+                g_error_free (error);
 	}
 out:
 	if (result != NULL)
@@ -101,10 +108,9 @@ out:
  * up_polkit_is_allowed:
  **/
 gboolean
-up_polkit_is_allowed (UpPolkit *polkit, PolkitSubject *subject, const gchar *action_id, DBusGMethodInvocation *context)
+up_polkit_is_allowed (UpPolkit *polkit, PolkitSubject *subject, const gchar *action_id, GError **error)
 {
 	gboolean ret = FALSE;
-	GError *error;
 	GError *error_local;
 	PolkitAuthorizationResult *result;
 
@@ -112,10 +118,8 @@ up_polkit_is_allowed (UpPolkit *polkit, 
         error_local = NULL;
 	result = polkit_authority_check_authorization_sync (polkit->priv->authority, subject, action_id, NULL, POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE, NULL, &error_local);
 	if (result == NULL) {
-		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "failed to check authorisation: %s", error_local->message);
-		dbus_g_method_return_error (context, error);
+		g_set_error (error, UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "failed to check authorisation: %s", error_local->message);
 		g_error_free (error_local);
-		g_error_free (error);
 		goto out;
 	}
 
diff -up upower-0.9.5/src/up-polkit.h.dbus-fixes upower-0.9.5/src/up-polkit.h
--- upower-0.9.5/src/up-polkit.h.dbus-fixes	2010-02-10 12:09:31.000000000 -0500
+++ upower-0.9.5/src/up-polkit.h	2010-08-17 22:22:58.746257003 -0400
@@ -56,11 +56,11 @@ PolkitSubject	*up_polkit_get_subject		(U
 gboolean	 up_polkit_check_auth		(UpPolkit		*polkit,
 						 PolkitSubject		*subject,
 						 const gchar		*action_id,
-						 DBusGMethodInvocation	*context);
+						 DBusGMethodInvocation *context);
 gboolean	 up_polkit_is_allowed		(UpPolkit		*polkit,
 						 PolkitSubject		*subject,
 						 const gchar		*action_id,
-						 DBusGMethodInvocation	*context);
+						 GError               **error);
 gboolean         up_polkit_get_uid		(UpPolkit              *polkit,
                                                  PolkitSubject          *subject,
                                                  uid_t                  *uid);
diff -up upower-0.9.5/src/up-qos.c.dbus-fixes upower-0.9.5/src/up-qos.c
--- upower-0.9.5/src/up-qos.c.dbus-fixes	2010-06-05 11:45:18.000000000 -0400
+++ upower-0.9.5/src/up-qos.c	2010-08-17 22:22:58.748257003 -0400
@@ -262,6 +262,7 @@ up_qos_request_latency (UpQos *qos, cons
 	if (type == UP_QOS_KIND_UNKNOWN) {
 		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "type invalid: %s", type_text);
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -270,6 +271,7 @@ up_qos_request_latency (UpQos *qos, cons
 	if (sender == NULL) {
 		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "no DBUS sender");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -291,6 +293,7 @@ up_qos_request_latency (UpQos *qos, cons
 	if (!retval) {
 		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "cannot get UID");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -299,6 +302,7 @@ up_qos_request_latency (UpQos *qos, cons
 	if (!retval) {
 		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "cannot get PID");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -307,6 +311,7 @@ up_qos_request_latency (UpQos *qos, cons
 	if (cmdline == NULL) {
 		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "cannot get cmdline");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -359,6 +364,7 @@ up_qos_cancel_request (UpQos *qos, guint
 		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL,
 				     "Cannot find request for #%i", cookie);
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -367,6 +373,7 @@ up_qos_cancel_request (UpQos *qos, guint
 	if (sender == NULL) {
 		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "no DBUS sender");
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		goto out;
 	}
 
@@ -388,6 +395,8 @@ up_qos_cancel_request (UpQos *qos, guint
 	/* TODO: if persistent remove from datadase */
 
 	g_signal_emit (qos, signals [REQUESTS_CHANGED], 0);
+
+	dbus_g_method_return (context, NULL);
 out:
 	if (subject != NULL)
 		g_object_unref (subject);
@@ -430,6 +439,7 @@ up_qos_set_minimum_latency (UpQos *qos, 
 	if (type == UP_QOS_KIND_UNKNOWN) {
 		error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "type invalid: %s", type_text);
 		dbus_g_method_return_error (context, error);
+                g_error_free (error);
 		return;
 	}