DBG("Destroying session %s", session->name);
del_session_list(session);
pthread_mutex_destroy(&session->lock);
+
+ rcu_read_lock();
+ consumer_destroy_output(session->consumer);
+ rcu_read_unlock();
free(session);
return LTTCOMM_OK;
error_malloc:
return ret;
}
+
+/*
+ * Check if the UID or GID match the session. Root user has access to all
+ * sessions.
+ */
+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) {
+ return 0;
+ } else {
+ return 1;
+ }
+}