summaryrefslogtreecommitdiffstats
path: root/meta-security/recipes-core/dbus-cynara/dbus/0004-Add-own-rule-result-unavailability-handling.patch
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2018-03-27 11:05:46 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2018-04-04 21:19:22 +0200
commit1b847a21fac05e88510fe37db63d0d9e4b72e633 (patch)
tree2034b132f94888bd7c6c6263a438c3f642183489 /meta-security/recipes-core/dbus-cynara/dbus/0004-Add-own-rule-result-unavailability-handling.patch
parentea00cb6f79616987d7e3c7e83a6ee01cb73eb170 (diff)
dbus-cynara: Avoid dependency loop
The dependency loop appeared when compiling with DISTRO_FEATURE ptest. To avoid it, I restore the logic implemented before in meta-intel-iot-security. I also remove unless files. Bug-AGL: SPEC-1334 Change-Id: Ibe8b9359a65fec034df2534c5fceb4769e63aa99 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'meta-security/recipes-core/dbus-cynara/dbus/0004-Add-own-rule-result-unavailability-handling.patch')
-rw-r--r--meta-security/recipes-core/dbus-cynara/dbus/0004-Add-own-rule-result-unavailability-handling.patch1345
1 files changed, 0 insertions, 1345 deletions
diff --git a/meta-security/recipes-core/dbus-cynara/dbus/0004-Add-own-rule-result-unavailability-handling.patch b/meta-security/recipes-core/dbus-cynara/dbus/0004-Add-own-rule-result-unavailability-handling.patch
deleted file mode 100644
index 1086f5b12..000000000
--- a/meta-security/recipes-core/dbus-cynara/dbus/0004-Add-own-rule-result-unavailability-handling.patch
+++ /dev/null
@@ -1,1345 +0,0 @@
-From 5bf7f759a738a451ea70732731d9a1b3e064353b Mon Sep 17 00:00:00 2001
-From: Jacek Bukarewicz <j.bukarewicz@samsung.com>
-Date: Thu, 27 Nov 2014 11:26:21 +0100
-Subject: [PATCH 4/5] Add own rule result unavailability handling
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Own rule result unavailability is handled like send rules - dispatching
-messages from the sender is blocked and resumed when result becomes
-available.
-
-Handler of "RequestName" method needs to return BUS_RESULT_LATER when
-policy result is not known therefore its return type is modified.
-Since bus message handlers are put into function pointer array other
-message handler function singatures are also affected.
-
-Change-Id: I4c2cbd4585e41fccd8a30f825a8f0d342ab56755
-
-Cherry-picked from 35ef89cd6777ea2430077fc621d21bd01df92349 by Jose.bollo
-
-Signed-off-by: José Bollo <jose.bollo@iot.bzh>
----
- bus/dispatch.c | 11 ++-
- bus/driver.c | 259 ++++++++++++++++++++++++++++++---------------------------
- bus/driver.h | 2 +-
- bus/policy.c | 51 +++++++++---
- bus/policy.h | 6 +-
- bus/services.c | 26 ++++--
- bus/services.h | 3 +-
- bus/stats.c | 28 +++----
- bus/stats.h | 6 +-
- 9 files changed, 229 insertions(+), 163 deletions(-)
-
-diff --git a/bus/dispatch.c b/bus/dispatch.c
-index e32c9263..4d57c556 100644
---- a/bus/dispatch.c
-+++ b/bus/dispatch.c
-@@ -513,8 +513,17 @@ bus_dispatch (DBusConnection *connection,
- }
-
- _dbus_verbose ("Giving message to %s\n", DBUS_SERVICE_DBUS);
-- if (!bus_driver_handle_message (connection, transaction, message, &error))
-+ res = bus_driver_handle_message (connection, transaction, message, &error);
-+ if (res == BUS_RESULT_FALSE)
- goto out;
-+ else if (res == BUS_RESULT_LATER)
-+ {
-+ /* connection has been disabled in message handler */
-+ bus_transaction_cancel_and_free (transaction);
-+ transaction = NULL;
-+ result = DBUS_HANDLER_RESULT_LATER;
-+ goto out;
-+ }
- }
- else if (!bus_connection_is_active (connection)) /* clients must talk to bus driver first */
- {
-diff --git a/bus/driver.c b/bus/driver.c
-index 5acdd62a..bc4ce0b5 100644
---- a/bus/driver.c
-+++ b/bus/driver.c
-@@ -427,7 +427,7 @@ create_unique_client_name (BusRegistry *registry,
- return TRUE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_hello (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -435,7 +435,7 @@ bus_driver_handle_hello (DBusConnection *connection,
- {
- DBusString unique_name;
- BusService *service;
-- dbus_bool_t retval;
-+ BusResult retval;
- BusRegistry *registry;
- BusConnections *connections;
-
-@@ -446,7 +446,7 @@ bus_driver_handle_hello (DBusConnection *connection,
- /* We already handled an Hello message for this connection. */
- dbus_set_error (error, DBUS_ERROR_FAILED,
- "Already handled an Hello message");
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- /* Note that when these limits are exceeded we don't disconnect the
-@@ -460,16 +460,16 @@ bus_driver_handle_hello (DBusConnection *connection,
- error))
- {
- _DBUS_ASSERT_ERROR_IS_SET (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- if (!_dbus_string_init (&unique_name))
- {
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
-- retval = FALSE;
-+ retval = BUS_RESULT_FALSE;
-
- registry = bus_connection_get_registry (connection);
-
-@@ -502,7 +502,7 @@ bus_driver_handle_hello (DBusConnection *connection,
- goto out_0;
-
- _dbus_assert (bus_connection_is_active (connection));
-- retval = TRUE;
-+ retval = BUS_RESULT_TRUE;
-
- out_0:
- _dbus_string_free (&unique_name);
-@@ -554,7 +554,7 @@ bus_driver_send_welcome_message (DBusConnection *connection,
- }
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_list_services (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -576,14 +576,14 @@ bus_driver_handle_list_services (DBusConnection *connection,
- if (reply == NULL)
- {
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- if (!bus_registry_list_services (registry, &services, &len))
- {
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- dbus_message_iter_init_append (reply, &iter);
-@@ -595,7 +595,7 @@ bus_driver_handle_list_services (DBusConnection *connection,
- dbus_free_string_array (services);
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- {
-@@ -607,7 +607,7 @@ bus_driver_handle_list_services (DBusConnection *connection,
- dbus_free_string_array (services);
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
- }
-
-@@ -620,7 +620,7 @@ bus_driver_handle_list_services (DBusConnection *connection,
- dbus_free_string_array (services);
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
- ++i;
- }
-@@ -631,23 +631,23 @@ bus_driver_handle_list_services (DBusConnection *connection,
- {
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- if (!bus_transaction_send_from_driver (transaction, connection, reply))
- {
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
- else
- {
- dbus_message_unref (reply);
-- return TRUE;
-+ return BUS_RESULT_TRUE;
- }
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_list_activatable_services (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -669,14 +669,14 @@ bus_driver_handle_list_activatable_services (DBusConnection *connection,
- if (reply == NULL)
- {
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- if (!bus_activation_list_services (activation, &services, &len))
- {
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- dbus_message_iter_init_append (reply, &iter);
-@@ -688,7 +688,7 @@ bus_driver_handle_list_activatable_services (DBusConnection *connection,
- dbus_free_string_array (services);
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- {
-@@ -700,7 +700,7 @@ bus_driver_handle_list_activatable_services (DBusConnection *connection,
- dbus_free_string_array (services);
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
- }
-
-@@ -713,7 +713,7 @@ bus_driver_handle_list_activatable_services (DBusConnection *connection,
- dbus_free_string_array (services);
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
- ++i;
- }
-@@ -724,23 +724,23 @@ bus_driver_handle_list_activatable_services (DBusConnection *connection,
- {
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- if (!bus_transaction_send_from_driver (transaction, connection, reply))
- {
- dbus_message_unref (reply);
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
- else
- {
- dbus_message_unref (reply);
-- return TRUE;
-+ return BUS_RESULT_TRUE;
- }
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_acquire_service (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -751,7 +751,8 @@ bus_driver_handle_acquire_service (DBusConnection *connection,
- const char *name;
- dbus_uint32_t service_reply;
- dbus_uint32_t flags;
-- dbus_bool_t retval;
-+ BusResult retval;
-+ BusResult res;
- BusRegistry *registry;
-
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-@@ -762,20 +763,24 @@ bus_driver_handle_acquire_service (DBusConnection *connection,
- DBUS_TYPE_STRING, &name,
- DBUS_TYPE_UINT32, &flags,
- DBUS_TYPE_INVALID))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-
- _dbus_verbose ("Trying to own name %s with flags 0x%x\n", name, flags);
-
-- retval = FALSE;
-+ retval = BUS_RESULT_FALSE;
- reply = NULL;
-
- _dbus_string_init_const (&service_name, name);
-
-- if (!bus_registry_acquire_service (registry, connection,
-- &service_name, flags,
-- &service_reply, transaction,
-- error))
-- goto out;
-+ res = bus_registry_acquire_service (registry, connection, message,
-+ &service_name, flags,
-+ &service_reply, transaction,
-+ error);
-+ if (res != BUS_RESULT_TRUE)
-+ {
-+ retval = res;
-+ goto out;
-+ }
-
- reply = dbus_message_new_method_return (message);
- if (reply == NULL)
-@@ -796,7 +801,7 @@ bus_driver_handle_acquire_service (DBusConnection *connection,
- goto out;
- }
-
-- retval = TRUE;
-+ retval = BUS_RESULT_TRUE;
-
- out:
- if (reply)
-@@ -804,7 +809,7 @@ bus_driver_handle_acquire_service (DBusConnection *connection,
- return retval;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_release_service (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -814,7 +819,7 @@ bus_driver_handle_release_service (DBusConnection *connection,
- DBusString service_name;
- const char *name;
- dbus_uint32_t service_reply;
-- dbus_bool_t retval;
-+ BusResult retval;
- BusRegistry *registry;
-
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-@@ -824,11 +829,11 @@ bus_driver_handle_release_service (DBusConnection *connection,
- if (!dbus_message_get_args (message, error,
- DBUS_TYPE_STRING, &name,
- DBUS_TYPE_INVALID))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-
- _dbus_verbose ("Trying to release name %s\n", name);
-
-- retval = FALSE;
-+ retval = BUS_RESULT_FALSE;
- reply = NULL;
-
- _dbus_string_init_const (&service_name, name);
-@@ -857,7 +862,7 @@ bus_driver_handle_release_service (DBusConnection *connection,
- goto out;
- }
-
-- retval = TRUE;
-+ retval = BUS_RESULT_TRUE;
-
- out:
- if (reply)
-@@ -865,7 +870,7 @@ bus_driver_handle_release_service (DBusConnection *connection,
- return retval;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_service_exists (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -876,7 +881,7 @@ bus_driver_handle_service_exists (DBusConnection *connection,
- BusService *service;
- dbus_bool_t service_exists;
- const char *name;
-- dbus_bool_t retval;
-+ BusResult retval;
- BusRegistry *registry;
-
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-@@ -886,9 +891,9 @@ bus_driver_handle_service_exists (DBusConnection *connection,
- if (!dbus_message_get_args (message, error,
- DBUS_TYPE_STRING, &name,
- DBUS_TYPE_INVALID))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-
-- retval = FALSE;
-+ retval = BUS_RESULT_FALSE;
-
- if (strcmp (name, DBUS_SERVICE_DBUS) == 0)
- {
-@@ -922,7 +927,7 @@ bus_driver_handle_service_exists (DBusConnection *connection,
- goto out;
- }
-
-- retval = TRUE;
-+ retval = BUS_RESULT_TRUE;
-
- out:
- if (reply)
-@@ -931,7 +936,7 @@ bus_driver_handle_service_exists (DBusConnection *connection,
- return retval;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_activate_service (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -939,7 +944,7 @@ bus_driver_handle_activate_service (DBusConnection *connection,
- {
- dbus_uint32_t flags;
- const char *name;
-- dbus_bool_t retval;
-+ BusResult retval;
- BusActivation *activation;
-
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-@@ -953,10 +958,10 @@ bus_driver_handle_activate_service (DBusConnection *connection,
- {
- _DBUS_ASSERT_ERROR_IS_SET (error);
- _dbus_verbose ("No memory to get arguments to StartServiceByName\n");
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
-- retval = FALSE;
-+ retval = BUS_RESULT_FALSE;
-
- if (!bus_activation_activate_service (activation, connection, transaction, FALSE,
- message, name, error))
-@@ -966,7 +971,7 @@ bus_driver_handle_activate_service (DBusConnection *connection,
- goto out;
- }
-
-- retval = TRUE;
-+ retval = BUS_RESULT_TRUE;
-
- out:
- return retval;
-@@ -1068,13 +1073,13 @@ bus_driver_send_or_activate (BusTransaction *transaction,
- return TRUE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_update_activation_environment (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
- DBusError *error)
- {
-- dbus_bool_t retval;
-+ BusResult retval;
- BusActivation *activation;
- BusContext *context;
- DBusMessageIter iter;
-@@ -1090,7 +1095,7 @@ bus_driver_handle_update_activation_environment (DBusConnection *connection,
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-
- if (!bus_driver_check_message_is_for_us (message, error))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-
- #ifdef DBUS_UNIX
- {
-@@ -1100,7 +1105,7 @@ bus_driver_handle_update_activation_environment (DBusConnection *connection,
- */
- if (!bus_driver_check_caller_is_privileged (connection, transaction,
- message, error))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
- #endif
-
-@@ -1111,7 +1116,7 @@ bus_driver_handle_update_activation_environment (DBusConnection *connection,
- dbus_set_error (error, DBUS_ERROR_ACCESS_DENIED,
- "Cannot change activation environment "
- "on a system bus.");
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- activation = bus_connection_get_activation (connection);
-@@ -1125,7 +1130,7 @@ bus_driver_handle_update_activation_environment (DBusConnection *connection,
-
- dbus_message_iter_recurse (&iter, &dict_iter);
-
-- retval = FALSE;
-+ retval = BUS_RESULT_FALSE;
- systemd_message = NULL;
-
- /* Then loop through the sent dictionary, add the location of
-@@ -1291,7 +1296,7 @@ bus_driver_handle_update_activation_environment (DBusConnection *connection,
- message, error))
- goto out;
-
-- retval = TRUE;
-+ retval = BUS_RESULT_TRUE;
-
- out:
- if (systemd_message != NULL)
-@@ -1301,7 +1306,7 @@ bus_driver_handle_update_activation_environment (DBusConnection *connection,
- return retval;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_add_match (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -1367,16 +1372,16 @@ bus_driver_handle_add_match (DBusConnection *connection,
-
- bus_match_rule_unref (rule);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- failed:
- _DBUS_ASSERT_ERROR_IS_SET (error);
- if (rule)
- bus_match_rule_unref (rule);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_remove_match (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -1420,16 +1425,16 @@ bus_driver_handle_remove_match (DBusConnection *connection,
-
- bus_match_rule_unref (rule);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- failed:
- _DBUS_ASSERT_ERROR_IS_SET (error);
- if (rule)
- bus_match_rule_unref (rule);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_get_service_owner (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -1499,7 +1504,7 @@ bus_driver_handle_get_service_owner (DBusConnection *connection,
-
- dbus_message_unref (reply);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- BUS_SET_OOM (error);
-@@ -1508,10 +1513,10 @@ bus_driver_handle_get_service_owner (DBusConnection *connection,
- _DBUS_ASSERT_ERROR_IS_SET (error);
- if (reply)
- dbus_message_unref (reply);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_list_queued_owners (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -1602,7 +1607,7 @@ bus_driver_handle_list_queued_owners (DBusConnection *connection,
-
- dbus_message_unref (reply);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- BUS_SET_OOM (error);
-@@ -1615,10 +1620,10 @@ bus_driver_handle_list_queued_owners (DBusConnection *connection,
- if (base_names)
- _dbus_list_clear (&base_names);
-
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_get_connection_unix_user (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -1673,7 +1678,7 @@ bus_driver_handle_get_connection_unix_user (DBusConnection *connection,
-
- dbus_message_unref (reply);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- BUS_SET_OOM (error);
-@@ -1682,10 +1687,10 @@ bus_driver_handle_get_connection_unix_user (DBusConnection *connection,
- _DBUS_ASSERT_ERROR_IS_SET (error);
- if (reply)
- dbus_message_unref (reply);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_get_connection_unix_process_id (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -1740,7 +1745,7 @@ bus_driver_handle_get_connection_unix_process_id (DBusConnection *connection,
-
- dbus_message_unref (reply);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- BUS_SET_OOM (error);
-@@ -1749,10 +1754,10 @@ bus_driver_handle_get_connection_unix_process_id (DBusConnection *connection,
- _DBUS_ASSERT_ERROR_IS_SET (error);
- if (reply)
- dbus_message_unref (reply);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_get_adt_audit_session_data (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -1803,7 +1808,7 @@ bus_driver_handle_get_adt_audit_session_data (DBusConnection *connection,
-
- dbus_message_unref (reply);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- BUS_SET_OOM (error);
-@@ -1812,10 +1817,10 @@ bus_driver_handle_get_adt_audit_session_data (DBusConnection *connection,
- _DBUS_ASSERT_ERROR_IS_SET (error);
- if (reply)
- dbus_message_unref (reply);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_get_connection_selinux_security_context (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -1863,7 +1868,7 @@ bus_driver_handle_get_connection_selinux_security_context (DBusConnection *conne
-
- dbus_message_unref (reply);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- BUS_SET_OOM (error);
-@@ -1872,10 +1877,10 @@ bus_driver_handle_get_connection_selinux_security_context (DBusConnection *conne
- _DBUS_ASSERT_ERROR_IS_SET (error);
- if (reply)
- dbus_message_unref (reply);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_get_connection_credentials (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -1987,7 +1992,7 @@ bus_driver_handle_get_connection_credentials (DBusConnection *connection,
-
- dbus_message_unref (reply);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- BUS_SET_OOM (error);
-@@ -2001,10 +2006,10 @@ bus_driver_handle_get_connection_credentials (DBusConnection *connection,
- dbus_message_unref (reply);
- }
-
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_reload_config (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -2029,7 +2034,7 @@ bus_driver_handle_reload_config (DBusConnection *connection,
- goto oom;
-
- dbus_message_unref (reply);
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- BUS_SET_OOM (error);
-@@ -2038,11 +2043,11 @@ bus_driver_handle_reload_config (DBusConnection *connection,
- _DBUS_ASSERT_ERROR_IS_SET (error);
- if (reply)
- dbus_message_unref (reply);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- #ifdef DBUS_ENABLE_VERBOSE_MODE
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_enable_verbose (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -2062,7 +2067,7 @@ bus_driver_handle_enable_verbose (DBusConnection *connection,
- _dbus_set_verbose(TRUE);
-
- dbus_message_unref (reply);
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-@@ -2071,10 +2076,10 @@ bus_driver_handle_enable_verbose (DBusConnection *connection,
-
- if (reply)
- dbus_message_unref (reply);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_disable_verbose (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -2094,7 +2099,7 @@ bus_driver_handle_disable_verbose (DBusConnection *connection,
- _dbus_set_verbose(FALSE);
-
- dbus_message_unref (reply);
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-@@ -2103,11 +2108,11 @@ bus_driver_handle_disable_verbose (DBusConnection *connection,
-
- if (reply)
- dbus_message_unref (reply);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
- #endif
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_get_id (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -2123,7 +2128,7 @@ bus_driver_handle_get_id (DBusConnection *connection,
- if (!_dbus_string_init (&uuid))
- {
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- reply = NULL;
-@@ -2149,7 +2154,7 @@ bus_driver_handle_get_id (DBusConnection *connection,
-
- _dbus_string_free (&uuid);
- dbus_message_unref (reply);
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-@@ -2159,10 +2164,10 @@ bus_driver_handle_get_id (DBusConnection *connection,
- if (reply)
- dbus_message_unref (reply);
- _dbus_string_free (&uuid);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_become_monitor (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -2178,7 +2183,7 @@ bus_driver_handle_become_monitor (DBusConnection *connection,
- int i;
- int n_match_rules;
- dbus_uint32_t flags;
-- dbus_bool_t ret = FALSE;
-+ BusResult ret = BUS_RESULT_FALSE;
-
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-
-@@ -2258,10 +2263,10 @@ bus_driver_handle_become_monitor (DBusConnection *connection,
- if (!bus_connection_be_monitor (connection, transaction, &rules, error))
- goto out;
-
-- ret = TRUE;
-+ ret = BUS_RESULT_TRUE;
-
- out:
-- if (ret)
-+ if (ret == BUS_RESULT_TRUE)
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
- else
- _DBUS_ASSERT_ERROR_IS_SET (error);
-@@ -2282,10 +2287,10 @@ typedef struct
- const char *name;
- const char *in_args;
- const char *out_args;
-- dbus_bool_t (* handler) (DBusConnection *connection,
-- BusTransaction *transaction,
-- DBusMessage *message,
-- DBusError *error);
-+ BusResult (* handler) (DBusConnection *connection,
-+ BusTransaction *transaction,
-+ DBusMessage *message,
-+ DBusError *error);
- } MessageHandler;
-
- /* For speed it might be useful to sort this in order of
-@@ -2370,7 +2375,7 @@ static const MessageHandler dbus_message_handlers[] = {
- { NULL, NULL, NULL, NULL }
- };
-
--static dbus_bool_t bus_driver_handle_introspect (DBusConnection *,
-+static BusResult bus_driver_handle_introspect (DBusConnection *,
- BusTransaction *, DBusMessage *, DBusError *);
-
- static const MessageHandler introspectable_message_handlers[] = {
-@@ -2514,7 +2519,7 @@ bus_driver_generate_introspect_string (DBusString *xml)
- return TRUE;
- }
-
--static dbus_bool_t
-+static BusResult
- bus_driver_handle_introspect (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -2534,13 +2539,13 @@ bus_driver_handle_introspect (DBusConnection *connection,
- DBUS_TYPE_INVALID))
- {
- _DBUS_ASSERT_ERROR_IS_SET (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- if (!_dbus_string_init (&xml))
- {
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- if (!bus_driver_generate_introspect_string (&xml))
-@@ -2563,7 +2568,7 @@ bus_driver_handle_introspect (DBusConnection *connection,
- dbus_message_unref (reply);
- _dbus_string_free (&xml);
-
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- BUS_SET_OOM (error);
-@@ -2573,7 +2578,7 @@ bus_driver_handle_introspect (DBusConnection *connection,
-
- _dbus_string_free (&xml);
-
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- /*
-@@ -2608,7 +2613,7 @@ bus_driver_check_message_is_for_us (DBusMessage *message,
- return TRUE;
- }
-
--dbus_bool_t
-+BusResult
- bus_driver_handle_message (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -2618,6 +2623,7 @@ bus_driver_handle_message (DBusConnection *connection,
- const InterfaceHandler *ih;
- const MessageHandler *mh;
- dbus_bool_t found_interface = FALSE;
-+ BusResult res;
-
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-
-@@ -2633,7 +2639,7 @@ bus_driver_handle_message (DBusConnection *connection,
- transaction,
- message,
- error))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-
- context = bus_connection_get_context (connection);
- systemd = bus_driver_get_owner_of_name (connection,
-@@ -2650,7 +2656,7 @@ bus_driver_handle_message (DBusConnection *connection,
- attacker ? attacker : "(unauthenticated)",
- bus_connection_get_loginfo (connection));
- /* ignore it */
-- return TRUE;
-+ return BUS_RESULT_TRUE;
- }
-
- if (!bus_context_get_systemd_activation (context))
-@@ -2658,16 +2664,16 @@ bus_driver_handle_message (DBusConnection *connection,
- bus_context_log (context, DBUS_SYSTEM_LOG_WARNING,
- "Ignoring unexpected ActivationFailure message "
- "while not using systemd activation");
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
-- return dbus_activation_systemd_failure(bus_context_get_activation(context), message);
-+ return dbus_activation_systemd_failure(bus_context_get_activation(context), message) == TRUE ? BUS_RESULT_TRUE : BUS_RESULT_FALSE;
- }
-
- if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_METHOD_CALL)
- {
- _dbus_verbose ("Driver got a non-method-call message, ignoring\n");
-- return TRUE; /* we just ignore this */
-+ return BUS_RESULT_TRUE; /* we just ignore this */
- }
-
- /* may be NULL, which means "any interface will do" */
-@@ -2709,20 +2715,27 @@ bus_driver_handle_message (DBusConnection *connection,
- name, dbus_message_get_signature (message),
- mh->in_args);
- _DBUS_ASSERT_ERROR_IS_SET (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
-- if ((* mh->handler) (connection, transaction, message, error))
-+ res = (* mh->handler) (connection, transaction, message, error);
-+ if (res == BUS_RESULT_TRUE)
- {
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
- _dbus_verbose ("Driver handler succeeded\n");
-- return TRUE;
-+ return BUS_RESULT_TRUE;
- }
-- else
-+ else if (res == BUS_RESULT_FALSE)
- {
- _DBUS_ASSERT_ERROR_IS_SET (error);
- _dbus_verbose ("Driver handler returned failure\n");
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-+ }
-+ else if (res == BUS_RESULT_LATER)
-+ {
-+ _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-+ _dbus_verbose ("Driver handler delayed message processing due to policy check\n");
-+ return BUS_RESULT_LATER;
- }
- }
- }
-@@ -2734,7 +2747,7 @@ bus_driver_handle_message (DBusConnection *connection,
- "%s does not understand message %s",
- DBUS_SERVICE_DBUS, name);
-
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- void
-diff --git a/bus/driver.h b/bus/driver.h
-index 201709c4..3ff4ff15 100644
---- a/bus/driver.h
-+++ b/bus/driver.h
-@@ -28,7 +28,7 @@
- #include "connection.h"
-
- void bus_driver_remove_connection (DBusConnection *connection);
--dbus_bool_t bus_driver_handle_message (DBusConnection *connection,
-+BusResult bus_driver_handle_message (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
- DBusError *error);
-diff --git a/bus/policy.c b/bus/policy.c
-index 47bd1a24..7244a46f 100644
---- a/bus/policy.c
-+++ b/bus/policy.c
-@@ -1323,18 +1323,21 @@ bus_client_policy_check_can_receive (BusClientPolicy *policy,
-
-
-
--static dbus_bool_t
-+static BusResult
- bus_rules_check_can_own (DBusList *rules,
-- const DBusString *service_name)
-+ const DBusString *service_name,
-+ DBusConnection *connection,
-+ DBusMessage *message)
- {
- DBusList *link;
-- dbus_bool_t allowed;
-+ BusResult result;
-+ const char *privilege;
-
- /* rules is in the order the rules appeared
- * in the config file, i.e. last rule that applies wins
- */
-
-- allowed = FALSE;
-+ result = BUS_RESULT_FALSE;
- link = _dbus_list_get_first_link (&rules);
- while (link != NULL)
- {
-@@ -1370,17 +1373,45 @@ bus_rules_check_can_own (DBusList *rules,
- }
-
- /* Use this rule */
-- allowed = rule->access == BUS_POLICY_RULE_ACCESS_ALLOW;
-+ switch (rule->access)
-+ {
-+ case BUS_POLICY_RULE_ACCESS_ALLOW:
-+ result = BUS_RESULT_TRUE;
-+ break;
-+ case BUS_POLICY_RULE_ACCESS_DENY:
-+ result = BUS_RESULT_FALSE;
-+ break;
-+ case BUS_POLICY_RULE_ACCESS_CHECK:
-+ result = BUS_RESULT_LATER;
-+ privilege = rule->privilege;
-+ break;
-+ }
- }
-
-- return allowed;
-+ if (result == BUS_RESULT_LATER)
-+ {
-+ BusContext *context = bus_connection_get_context(connection);
-+ BusCheck *check = bus_context_get_check(context);
-+ BusDeferredMessage *deferred_message;
-+
-+ result = bus_check_privilege(check, message, connection, NULL, NULL,
-+ privilege, BUS_DEFERRED_MESSAGE_CHECK_OWN, &deferred_message);
-+ if (result == BUS_RESULT_LATER)
-+ {
-+ bus_deferred_message_disable_sender(deferred_message);
-+ }
-+ }
-+
-+ return result;
- }
-
--dbus_bool_t
-+BusResult
- bus_client_policy_check_can_own (BusClientPolicy *policy,
-- const DBusString *service_name)
-+ const DBusString *service_name,
-+ DBusConnection *connection,
-+ DBusMessage *message)
- {
-- return bus_rules_check_can_own (policy->rules, service_name);
-+ return bus_rules_check_can_own (policy->rules, service_name, connection, message);
- }
-
- #ifdef DBUS_ENABLE_EMBEDDED_TESTS
-@@ -1388,7 +1419,7 @@ dbus_bool_t
- bus_policy_check_can_own (BusPolicy *policy,
- const DBusString *service_name)
- {
-- return bus_rules_check_can_own (policy->default_rules, service_name);
-+ return bus_rules_check_can_own (policy->default_rules, service_name, NULL, NULL) == BUS_RESULT_TRUE;
- }
- #endif /* DBUS_ENABLE_EMBEDDED_TESTS */
-
-diff --git a/bus/policy.h b/bus/policy.h
-index e9f193af..1f234310 100644
---- a/bus/policy.h
-+++ b/bus/policy.h
-@@ -170,8 +170,10 @@ BusResult bus_client_policy_check_can_receive (BusClientPolicy *polic
- dbus_int32_t *toggles,
- const char **privilege_param,
- BusDeferredMessage **deferred_message);
--dbus_bool_t bus_client_policy_check_can_own (BusClientPolicy *policy,
-- const DBusString *service_name);
-+BusResult bus_client_policy_check_can_own (BusClientPolicy *policy,
-+ const DBusString *service_name,
-+ DBusConnection *connection,
-+ DBusMessage *message);
- dbus_bool_t bus_client_policy_append_rule (BusClientPolicy *policy,
- BusPolicyRule *rule);
- void bus_client_policy_optimize (BusClientPolicy *policy);
-diff --git a/bus/services.c b/bus/services.c
-index 6a4c8848..fcc2d261 100644
---- a/bus/services.c
-+++ b/bus/services.c
-@@ -376,24 +376,26 @@ bus_registry_list_services (BusRegistry *registry,
- return FALSE;
- }
-
--dbus_bool_t
-+BusResult
- bus_registry_acquire_service (BusRegistry *registry,
- DBusConnection *connection,
-+ DBusMessage *message,
- const DBusString *service_name,
- dbus_uint32_t flags,
- dbus_uint32_t *result,
- BusTransaction *transaction,
- DBusError *error)
- {
-- dbus_bool_t retval;
-+ BusResult retval;
- DBusConnection *old_owner_conn;
- BusClientPolicy *policy;
- BusService *service;
- BusActivation *activation;
- BusSELinuxID *sid;
- BusOwner *primary_owner;
-+ BusResult res;
-
-- retval = FALSE;
-+ retval = BUS_RESULT_FALSE;
-
- if (!_dbus_validate_bus_name (service_name, 0,
- _dbus_string_get_length (service_name)))
-@@ -466,7 +468,8 @@ bus_registry_acquire_service (BusRegistry *registry,
- _dbus_string_get_const_data (service_name), error))
- goto out;
-
-- if (!bus_client_policy_check_can_own (policy, service_name))
-+ res = bus_client_policy_check_can_own (policy, service_name, connection, message);
-+ if (res == BUS_RESULT_FALSE)
- {
- dbus_set_error (error, DBUS_ERROR_ACCESS_DENIED,
- "Connection \"%s\" is not allowed to own the service \"%s\" due "
-@@ -477,6 +480,11 @@ bus_registry_acquire_service (BusRegistry *registry,
- _dbus_string_get_const_data (service_name));
- goto out;
- }
-+ else if (res == BUS_RESULT_LATER)
-+ {
-+ retval = BUS_RESULT_LATER;
-+ goto out;
-+ }
-
- if (bus_connection_get_n_services_owned (connection) >=
- bus_context_get_max_services_per_connection (registry->context))
-@@ -593,11 +601,13 @@ bus_registry_acquire_service (BusRegistry *registry,
- }
-
- activation = bus_context_get_activation (registry->context);
-- retval = bus_activation_send_pending_auto_activation_messages (activation,
-+
-+ if (bus_activation_send_pending_auto_activation_messages (activation,
- service,
-- transaction);
-- if (!retval)
-- BUS_SET_OOM (error);
-+ transaction))
-+ retval = BUS_RESULT_TRUE;
-+ else
-+ BUS_SET_OOM (error);
-
- out:
- return retval;
-diff --git a/bus/services.h b/bus/services.h
-index 056dd9fa..3df3dd7d 100644
---- a/bus/services.h
-+++ b/bus/services.h
-@@ -50,8 +50,9 @@ void bus_registry_foreach (BusRegistry *registry
- dbus_bool_t bus_registry_list_services (BusRegistry *registry,
- char ***listp,
- int *array_len);
--dbus_bool_t bus_registry_acquire_service (BusRegistry *registry,
-+BusResult bus_registry_acquire_service (BusRegistry *registry,
- DBusConnection *connection,
-+ DBusMessage *message,
- const DBusString *service_name,
- dbus_uint32_t flags,
- dbus_uint32_t *result,
-diff --git a/bus/stats.c b/bus/stats.c
-index dace0e29..aab0e5c9 100644
---- a/bus/stats.c
-+++ b/bus/stats.c
-@@ -36,7 +36,7 @@
-
- #ifdef DBUS_ENABLE_STATS
-
--dbus_bool_t
-+BusResult
- bus_stats_handle_get_stats (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -52,7 +52,7 @@ bus_stats_handle_get_stats (DBusConnection *connection,
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-
- if (!bus_driver_check_message_is_for_us (message, error))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-
- context = bus_transaction_get_context (transaction);
- connections = bus_context_get_connections (context);
-@@ -107,17 +107,17 @@ bus_stats_handle_get_stats (DBusConnection *connection,
- goto oom;
-
- dbus_message_unref (reply);
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- if (reply != NULL)
- dbus_message_unref (reply);
-
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
--dbus_bool_t
-+BusResult
- bus_stats_handle_get_connection_stats (DBusConnection *caller_connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -137,14 +137,14 @@ bus_stats_handle_get_connection_stats (DBusConnection *caller_connection,
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
-
- if (!bus_driver_check_message_is_for_us (message, error))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-
- registry = bus_connection_get_registry (caller_connection);
-
- if (! dbus_message_get_args (message, error,
- DBUS_TYPE_STRING, &bus_name,
- DBUS_TYPE_INVALID))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-
- _dbus_string_init_const (&bus_name_str, bus_name);
- service = bus_registry_lookup (registry, &bus_name_str);
-@@ -153,7 +153,7 @@ bus_stats_handle_get_connection_stats (DBusConnection *caller_connection,
- {
- dbus_set_error (error, DBUS_ERROR_NAME_HAS_NO_OWNER,
- "Bus name '%s' has no owner", bus_name);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- stats_connection = bus_service_get_primary_owners_connection (service);
-@@ -215,18 +215,18 @@ bus_stats_handle_get_connection_stats (DBusConnection *caller_connection,
- goto oom;
-
- dbus_message_unref (reply);
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- if (reply != NULL)
- dbus_message_unref (reply);
-
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
-
--dbus_bool_t
-+BusResult
- bus_stats_handle_get_all_match_rules (DBusConnection *caller_connection,
- BusTransaction *transaction,
- DBusMessage *message,
-@@ -250,7 +250,7 @@ bus_stats_handle_get_all_match_rules (DBusConnection *caller_connection,
- matchmaker = bus_context_get_matchmaker (context);
-
- if (!bus_registry_list_services (registry, &services, &services_len))
-- return FALSE;
-+ return BUS_RESULT_FALSE;
-
- reply = dbus_message_new_method_return (message);
- if (reply == NULL)
-@@ -329,7 +329,7 @@ bus_stats_handle_get_all_match_rules (DBusConnection *caller_connection,
-
- dbus_message_unref (reply);
- dbus_free_string_array (services);
-- return TRUE;
-+ return BUS_RESULT_TRUE;
-
- oom:
- if (reply != NULL)
-@@ -338,7 +338,7 @@ oom:
- dbus_free_string_array (services);
-
- BUS_SET_OOM (error);
-- return FALSE;
-+ return BUS_RESULT_FALSE;
- }
-
- #endif
-diff --git a/bus/stats.h b/bus/stats.h
-index dcb022c4..683fa175 100644
---- a/bus/stats.h
-+++ b/bus/stats.h
-@@ -25,17 +25,17 @@
-
- #define BUS_INTERFACE_STATS "org.freedesktop.DBus.Debug.Stats"
-
--dbus_bool_t bus_stats_handle_get_stats (DBusConnection *connection,
-+BusResult bus_stats_handle_get_stats (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
- DBusError *error);
-
--dbus_bool_t bus_stats_handle_get_connection_stats (DBusConnection *connection,
-+BusResult bus_stats_handle_get_connection_stats (DBusConnection *connection,
- BusTransaction *transaction,
- DBusMessage *message,
- DBusError *error);
-
--dbus_bool_t bus_stats_handle_get_all_match_rules (DBusConnection *caller_connection,
-+BusResult bus_stats_handle_get_all_match_rules (DBusConnection *caller_connection,
- BusTransaction *transaction,
- DBusMessage *message,
- DBusError *error);
---
-2.14.3
-