]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: use fsp->conn->session_info for the initial delete-on-close token
authorRalph Boehme <slow@samba.org>
Sat, 23 Jan 2021 17:36:23 +0000 (18:36 +0100)
committerJeremy Allison <jra@samba.org>
Tue, 26 Jan 2021 04:04:14 +0000 (04:04 +0000)
There's a correctly set up session_info at fsp->conn->session_info, we can just
use that.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14617

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Tue Jan 26 04:04:14 UTC 2021 on sn-devel-184

selftest/knownfail.d/samba3.blackbox.force-user-unlink [deleted file]
source3/smbd/close.c

diff --git a/selftest/knownfail.d/samba3.blackbox.force-user-unlink b/selftest/knownfail.d/samba3.blackbox.force-user-unlink
deleted file mode 100644 (file)
index 6761bd8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-^samba3.blackbox.force-user-unlink.test_forced_user_can_delete\(maptoguest:local\)
index 97d1347308245cda3d7042747779ecb39ed2262e..f05619d1886ea3cd8aef3d41fb777a979fb08504 100644 (file)
@@ -342,21 +342,13 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
 
        if (fsp->fsp_flags.initial_delete_on_close &&
                        !is_delete_on_close_set(lck, fsp->name_hash)) {
-               struct auth_session_info *session_info = NULL;
-
                /* Initial delete on close was set and no one else
                 * wrote a real delete on close. */
 
-               status = smbXsrv_session_info_lookup(conn->sconn->client,
-                                                    fsp->vuid,
-                                                    &session_info);
-               if (!NT_STATUS_IS_OK(status)) {
-                       return NT_STATUS_INTERNAL_ERROR;
-               }
                fsp->fsp_flags.delete_on_close = true;
                set_delete_on_close_lck(fsp, lck,
-                                       session_info->security_token,
-                                       session_info->unix_token);
+                                       fsp->conn->session_info->security_token,
+                                       fsp->conn->session_info->unix_token);
        }
 
        delete_file = is_delete_on_close_set(lck, fsp->name_hash) &&
@@ -1175,24 +1167,15 @@ static NTSTATUS close_directory(struct smb_request *req, files_struct *fsp,
        }
 
        if (fsp->fsp_flags.initial_delete_on_close) {
-               struct auth_session_info *session_info = NULL;
-
                /* Initial delete on close was set - for
                 * directories we don't care if anyone else
                 * wrote a real delete on close. */
 
-               status = smbXsrv_session_info_lookup(fsp->conn->sconn->client,
-                                                    fsp->vuid,
-                                                    &session_info);
-               if (!NT_STATUS_IS_OK(status)) {
-                       return NT_STATUS_INTERNAL_ERROR;
-               }
-
                send_stat_cache_delete_message(fsp->conn->sconn->msg_ctx,
                                               fsp->fsp_name->base_name);
                set_delete_on_close_lck(fsp, lck,
-                                       session_info->security_token,
-                                       session_info->unix_token);
+                                       fsp->conn->session_info->security_token,
+                                       fsp->conn->session_info->unix_token);
                fsp->fsp_flags.delete_on_close = true;
        }