]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:utils: let connections_forall_read() report if the session was authenticated
authorStefan Metzmacher <metze@samba.org>
Mon, 3 Jul 2023 13:10:08 +0000 (15:10 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 23 May 2024 12:35:37 +0000 (12:35 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15412

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
source3/utils/conn_tdb.c
source3/utils/conn_tdb.h

index 8f2c803a3dff8e0a458e84ae57adf6b5ebbdc1f2..7d31ae5759f94589bd717f81264f504f6c4954f7 100644 (file)
@@ -28,6 +28,7 @@
 #include "conn_tdb.h"
 #include "util_tdb.h"
 #include "lib/util/string_wrappers.h"
+#include "../libcli/security/session.h"
 
 struct connections_forall_state {
        struct db_context *session_by_pid;
@@ -45,6 +46,7 @@ struct connections_forall_session {
        uint16_t cipher;
        uint16_t dialect;
        uint16_t signing;
+       bool authenticated;
 };
 
 static int collect_sessions_fn(struct smbXsrv_session_global0 *global,
@@ -56,6 +58,7 @@ static int collect_sessions_fn(struct smbXsrv_session_global0 *global,
 
        uint32_t id = global->session_global_id;
        struct connections_forall_session sess;
+       enum security_user_level ul;
 
        if (global->auth_session_info == NULL) {
                sess.uid = -1;
@@ -69,6 +72,12 @@ static int collect_sessions_fn(struct smbXsrv_session_global0 *global,
        sess.cipher = global->channels[0].encryption_cipher;
        sess.signing = global->channels[0].signing_algo;
        sess.dialect = global->connection_dialect;
+       ul = security_session_user_level(global->auth_session_info, NULL);
+       if (ul >= SECURITY_USER) {
+               sess.authenticated = true;
+       } else {
+               sess.authenticated = false;
+       }
 
        status = dbwrap_store(state->session_by_pid,
                              make_tdb_data((void*)&id, sizeof(id)),
@@ -133,6 +142,7 @@ static int traverse_tcon_fn(struct smbXsrv_tcon_global0 *global,
        data.dialect = sess.dialect;
        data.signing = sess.signing;
        data.signing_flags = global->signing_flags;
+       data.authenticated = sess.authenticated;
 
        state->count++;
 
index 2a6e04e0a820fc167514873c485f5bfc76a98287..23a5e214ff2b28ab3162bccf1d5c27ea388a67b9 100644 (file)
@@ -36,6 +36,7 @@ struct connections_data {
        uint16_t dialect;
        uint8_t signing_flags;
        uint16_t signing;
+       bool authenticated;
 };
 
 /* The following definitions come from lib/conn_tdb.c  */