]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: VFS: full_audit. Use system session_info if called from a temporary share definition.
authorJeremy Allison <jra@samba.org>
Wed, 19 Feb 2020 21:20:14 +0000 (13:20 -0800)
committerKarolin Seeger <kseeger@samba.org>
Thu, 20 Feb 2020 15:31:20 +0000 (15:31 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14283

Signed-off-by: Jeremy Allison <jra@samba.org>
Autobuild-User(v4-10-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-10-test): Thu Feb 20 15:31:20 UTC 2020 on sn-devel-144

source3/modules/vfs_full_audit.c

index 8b04e55444e5abd985d02b2935293229a4b47449..14d4e1fbe6de9011336067ccdaee388db9ceaaf1 100644 (file)
@@ -478,6 +478,7 @@ static char *audit_prefix(TALLOC_CTX *ctx, connection_struct *conn)
 {
        char *prefix = NULL;
        char *result;
+       const struct auth_session_info *session_info = conn->session_info;
 
        prefix = talloc_strdup(ctx,
                        lp_parm_const_string(SNUM(conn), "full_audit",
@@ -485,13 +486,24 @@ static char *audit_prefix(TALLOC_CTX *ctx, connection_struct *conn)
        if (!prefix) {
                return NULL;
        }
+
+       if (session_info == NULL) {
+               /*
+                * conn->session_info can be NULL if we're
+                * called from a temporary conn created in
+                * the MSDFS and other code. It's been created
+                * by root so just use the system session.
+                */
+               session_info = get_session_info_system();
+       }
+
        result = talloc_sub_full(ctx,
                        lp_servicename(talloc_tos(), SNUM(conn)),
-                       conn->session_info->unix_info->unix_name,
+                       session_info->unix_info->unix_name,
                        conn->connectpath,
-                       conn->session_info->unix_token->gid,
-                       conn->session_info->unix_info->sanitized_username,
-                       conn->session_info->info->domain_name,
+                       session_info->unix_token->gid,
+                       session_info->unix_info->sanitized_username,
+                       session_info->info->domain_name,
                        prefix);
        TALLOC_FREE(prefix);
        return result;