[systemd-devel] [PATCH 11/12] policy: kdbus_policy_check_own_access() returns 0 on success not true
Djalal Harouni
tixxdz at opendz.org
Fri Jun 20 09:50:05 PDT 2014
kdbus_policy_check_own_access() returns 0 if access is granted,
otherwise a negative errno.
So fix this by returning 0. We did not hit this since callers were
checking negative values for errors.
Signed-off-by: Djalal Harouni <tixxdz at opendz.org>
---
policy.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/policy.c b/policy.c
index d75c2ef..58ab6a5 100644
--- a/policy.c
+++ b/policy.c
@@ -231,7 +231,7 @@ static int kdbus_policy_check_access(const struct kdbus_policy_db_entry *e,
* @conn: The connection to check
* @name: The name to check
*
- * Return: t0 if the connection is allowed to own the name, -EPERM otherwise
+ * Return: 0 if the connection is allowed to own the name, -EPERM otherwise
*/
int kdbus_policy_check_own_access(struct kdbus_policy_db *db,
const struct kdbus_conn *conn,
@@ -307,8 +307,17 @@ int kdbus_policy_check_talk_access(struct kdbus_policy_db *db,
unsigned int hash = 0;
int ret;
+ /*
+ * user->uid maps to a fsuid at the time of a KDBUS_CMD_HELLO
+ * cmd, if they equal allow the TALK access, otherwise we
+ * proceed and perform checks against current's cred.
+ *
+ * By using the user->uid check first we reduce the exposure to
+ * creds changes. Privileged processes should be careful about
+ * what to do with a file descriptor.
+ */
if (uid_eq(conn_src->user->uid, conn_dst->user->uid))
- return true;
+ return 0;
/*
* If there was a positive match for these two connections before,
--
1.9.0
More information about the systemd-devel
mailing list