]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:lib: let sessionid_traverse_read() report if the session was authenticated
authorStefan Metzmacher <metze@samba.org>
Mon, 3 Jul 2023 13:08:31 +0000 (15:08 +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/include/session.h
source3/lib/sessionid_tdb.c

index 40c25e514bb43343c99d7b2ec002b2262686a3a5..903208e9b0b70f0ccbf4491742015bd57892a9ac 100644 (file)
@@ -39,6 +39,7 @@ struct sessionid {
        fstring ip_addr_str;
        time_t connect_start;
        uint16_t connection_dialect;
+       bool authenticated;
        uint8_t encryption_flags;
        uint16_t cipher;
        uint16_t signing;
index 53bb9aeebbca065febb541e2e3dae42e55b2739f..6af2ad9b9e92dca27a1e3e6b366e907147b11f7a 100644 (file)
@@ -25,6 +25,7 @@
 #include "util_tdb.h"
 #include "smbd/globals.h"
 #include "source3/smbd/smbXsrv_session.h"
+#include "../libcli/security/session.h"
 
 struct sessionid_traverse_read_state {
        int (*fn)(const char *key, struct sessionid *session,
@@ -49,11 +50,18 @@ static int sessionid_traverse_read_fn(struct smbXsrv_session_global0 *global,
        };
 
        if (session_info != NULL) {
+               enum security_user_level ul;
+
                session.uid = session_info->unix_token->uid;
                session.gid = session_info->unix_token->gid;
                strncpy(session.username,
                        session_info->unix_info->unix_name,
                        sizeof(fstring)-1);
+
+               ul = security_session_user_level(session_info, NULL);
+               if (ul >= SECURITY_USER) {
+                       session.authenticated = true;
+               }
        }
 
        strncpy(session.remote_machine,