diff options
author | Jeremy Allison <jra@samba.org> | 2019-10-04 13:51:09 -0700 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2019-10-10 06:09:40 +0000 |
commit | 4ce152f1c43a2eb5c96da2f24b3829e4118774e2 (patch) | |
tree | 1cf35868991d02ace4ec9903f400d293db8ba4c3 /source3/smbd | |
parent | ca5e8938ce36835b5f381379560e77fb6cf9cf90 (diff) | |
download | samba-4ce152f1c43a2eb5c96da2f24b3829e4118774e2.tar.gz |
s3: smbd: Change rmdir_internals() to call SMB_VFS_UNLINKAT() in rmdir cases.
Use conn->cwd_fsp as current fsp.
No logic change for now.
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/close.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/source3/smbd/close.c b/source3/smbd/close.c index 1de80b50007..e62480d69da 100644 --- a/source3/smbd/close.c +++ b/source3/smbd/close.c @@ -968,7 +968,10 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, files_struct *fsp) smb_dname, 0); } else { - ret = SMB_VFS_RMDIR(conn, smb_dname); + ret = SMB_VFS_UNLINKAT(conn, + conn->cwd_fsp, + smb_dname, + AT_REMOVEDIR); } if (ret == 0) { notify_fname(conn, NOTIFY_ACTION_REMOVED, @@ -1068,12 +1071,16 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, files_struct *fsp) goto err_break; } if(smb_dname_full->st.st_ex_mode & S_IFDIR) { + int retval; if(!recursive_rmdir(ctx, conn, smb_dname_full)) { goto err_break; } - if(SMB_VFS_RMDIR(conn, - smb_dname_full) != 0) { + retval = SMB_VFS_UNLINKAT(conn, + conn->cwd_fsp, + smb_dname_full, + AT_REMOVEDIR); + if(retval != 0) { goto err_break; } } else { @@ -1098,7 +1105,10 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, files_struct *fsp) } TALLOC_FREE(dir_hnd); /* Retry the rmdir */ - ret = SMB_VFS_RMDIR(conn, smb_dname); + ret = SMB_VFS_UNLINKAT(conn, + conn->cwd_fsp, + smb_dname, + AT_REMOVEDIR); } err: |