From 7c022a80c9b8c5b085514ea49f983c0489e945ab Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Thu, 17 Apr 2003 00:46:36 +0000 Subject: 2003-04-15 Havoc Pennington * bus/bus.c: create and keep around a shared DBusUserDatabase object. * bus/connection.c (bus_connection_get_groups): don't cache groups for user in the connection object, since user database object now does that. --- bus/policy.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'bus/policy.c') diff --git a/bus/policy.c b/bus/policy.c index ad0cfaef..7d9b4b76 100644 --- a/bus/policy.c +++ b/bus/policy.c @@ -253,7 +253,7 @@ bus_policy_create_client_policy (BusPolicy *policy, */ if (_dbus_hash_table_get_n_entries (policy->rules_by_gid) > 0) { - const unsigned long *groups; + unsigned long *groups; int n_groups; int i; @@ -271,11 +271,16 @@ bus_policy_create_client_policy (BusPolicy *policy, if (list != NULL) { if (!add_list_to_client (list, client)) - goto failed; + { + dbus_free (groups); + goto failed; + } } ++i; } + + dbus_free (groups); } if (!dbus_connection_get_unix_user (connection, &uid)) @@ -369,15 +374,17 @@ list_allows_user (dbus_bool_t def, } dbus_bool_t -bus_policy_allow_user (BusPolicy *policy, - unsigned long uid) +bus_policy_allow_user (BusPolicy *policy, + DBusUserDatabase *user_database, + unsigned long uid) { dbus_bool_t allowed; unsigned long *group_ids; int n_group_ids; /* On OOM or error we always reject the user */ - if (!_dbus_get_groups (uid, &group_ids, &n_group_ids, NULL)) + if (!_dbus_user_database_get_groups (user_database, + uid, &group_ids, &n_group_ids, NULL)) { _dbus_verbose ("Did not get any groups for UID %lu\n", uid); -- cgit