From: Jérémie Galarneau Date: Fri, 14 Aug 2020 20:59:18 +0000 (-0400) Subject: Fix: sessiond: erroneous user check logic in session_access_ok X-Git-Tag: v2.13.0-rc1~497 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=4064563ea326f6f26d2c458009beb9ebdb3ba840;ds=sidebyside Fix: sessiond: erroneous user check logic in session_access_ok The current session_access_ok logic disallows the access to a session when: uid != session->uid && gid != session->gid && uid != 0 This means that any user that is part of the same primary group as the session's owner can access the session. The primary group is not necessarily (and most likely) not the `tracing` group. For instance: - the session has uid = 1000, gid = 100 - the current user has uid = 1001, gid = 100 access to the session is granted. Signed-off-by: Jérémie Galarneau Change-Id: I2e9208286e5508315dae90cb25d34133ca5edcc0 --- diff --git a/src/bin/lttng-sessiond/session.c b/src/bin/lttng-sessiond/session.c index 95395c282..3358648f6 100644 --- a/src/bin/lttng-sessiond/session.c +++ b/src/bin/lttng-sessiond/session.c @@ -1303,7 +1303,13 @@ int session_access_ok(struct ltt_session *session, uid_t uid, gid_t gid) { assert(session); - if (uid != session->uid && gid != session->gid && uid != 0) { + if (uid == 0) { + return 1; + } + + return uid == session->uid && gid == session->gid; + + if ((uid != session->uid || gid != session->gid) && uid != 0) { return 0; } else { return 1;