X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fsession.c;h=bb3b63b3a31dc407d7dde1ba3c9680e74e221925;hb=0efb2ad7fc448283184e43d6fb0915febae45384;hp=3358648f6864323fbcd2d852bdf1296e7b01cf25;hpb=4064563ea326f6f26d2c458009beb9ebdb3ba840;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/session.c b/src/bin/lttng-sessiond/session.c index 3358648f6..bb3b63b3a 100644 --- a/src/bin/lttng-sessiond/session.c +++ b/src/bin/lttng-sessiond/session.c @@ -574,8 +574,8 @@ struct lttng_trace_chunk *session_create_new_trace_chunk( const char *base_path; struct lttng_directory_handle *session_output_directory = NULL; const struct lttng_credentials session_credentials = { - .uid = session->uid, - .gid = session->gid, + .uid = LTTNG_OPTIONAL_INIT_VALUE(session->uid), + .gid = LTTNG_OPTIONAL_INIT_VALUE(session->gid), }; uint64_t next_chunk_id; const struct consumer_output *output; @@ -954,7 +954,7 @@ void session_release(struct urcu_ref *ref) * Must notify the kernel thread here to update it's poll set in order to * remove the channel(s)' fd just destroyed. */ - ret = notify_thread_pipe(kernel_poll_pipe[1]); + ret = notify_thread_pipe(the_kernel_poll_pipe[1]); if (ret < 0) { PERROR("write kernel poll pipe"); } @@ -989,6 +989,7 @@ void session_release(struct urcu_ref *ref) * Broadcast after free-ing to ensure the memory is * reclaimed before the main thread exits. */ + ASSERT_LOCKED(ltt_session_list.lock); pthread_cond_broadcast(<t_session_list.removal_cond); } } @@ -1296,24 +1297,13 @@ error: } /* - * Check if the UID or GID match the session. Root user has access to all + * Check if the UID matches the session. Root user has access to all * sessions. */ -int session_access_ok(struct ltt_session *session, uid_t uid, gid_t gid) +bool session_access_ok(struct ltt_session *session, uid_t uid) { assert(session); - - 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; - } + return (uid == session->uid) || uid == 0; } /*