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 <[email protected]> --- 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 _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
