[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