The branch, master has been updated
       via  6b5041c0212 smbd: close_file() should never see an internal dirfsp.
      from  a77de71ced0 vfs_acl_tdb: avoid deleting the NT ACL from the tdb

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 6b5041c0212a16d2f250b75b324e64b4c015462b
Author: Jeremy Allison <j...@samba.org>
Date:   Thu Dec 17 12:31:35 2020 -0800

    smbd: close_file() should never see an internal dirfsp.
    
    Assert this is the case.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>
    
    Autobuild-User(master): Ralph Böhme <s...@samba.org>
    Autobuild-Date(master): Fri Dec 18 16:27:38 UTC 2020 on sn-devel-184

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/close.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/close.c b/source3/smbd/close.c
index e53faf98007..20f2ed8a172 100644
--- a/source3/smbd/close.c
+++ b/source3/smbd/close.c
@@ -1291,13 +1291,11 @@ NTSTATUS close_file(struct smb_request *req, 
files_struct *fsp,
        NTSTATUS status;
        struct files_struct *base_fsp = fsp->base_fsp;
 
-       if (fsp->fsp_flags.is_dirfsp) {
-               /*
-                * The typical way to get here is via file_close_[conn|user]()
-                * and this is taken care of below.
-                */
-               return NT_STATUS_OK;
-       }
+       /*
+        * This fsp can never be an internal dirfsp. They must
+        * be explicitly closed by TALLOC_FREE of the dir handle.
+        */
+       SMB_ASSERT(!fsp->fsp_flags.is_dirfsp);
 
        if (fsp->fsp_flags.is_directory) {
                status = close_directory(req, fsp, close_type);


-- 
Samba Shared Repository

Reply via email to