bus_driver_handle_update_activation_environment: Error on system buses
authorJan Alexander Steffens (heftig) <jan.steffens@gmail.com>
Sat, 14 Nov 2015 15:32:37 +0000 (16:32 +0100)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Tue, 17 Nov 2015 18:21:10 +0000 (18:21 +0000)
The default policy already disallows calls on system buses. Since any
bus with a service helper cleans the environment anyway, there's no
point in allowing this to be called.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=92857
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
bus/driver.c

index 852ac53..a59d532 100644 (file)
@@ -986,6 +986,7 @@ bus_driver_handle_update_activation_environment (DBusConnection *connection,
 {
   dbus_bool_t retval;
   BusActivation *activation;
+  BusContext *context;
   DBusMessageIter iter;
   DBusMessageIter dict_iter;
   DBusMessageIter dict_entry_iter;
@@ -1011,6 +1012,16 @@ bus_driver_handle_update_activation_environment (DBusConnection *connection,
     }
 #endif
 
+  context = bus_connection_get_context (connection);
+
+  if (bus_context_get_servicehelper (context) != NULL)
+    {
+      dbus_set_error (error, DBUS_ERROR_ACCESS_DENIED,
+                      "Cannot change activation environment "
+                      "on a system bus.");
+      return FALSE;
+    }
+
   activation = bus_connection_get_activation (connection);
 
   dbus_message_iter_init (message, &iter);