summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2019-10-04 13:51:09 -0700
committerRalph Boehme <slow@samba.org>2019-10-10 06:09:40 +0000
commit4ce152f1c43a2eb5c96da2f24b3829e4118774e2 (patch)
tree1cf35868991d02ace4ec9903f400d293db8ba4c3 /source3/smbd
parentca5e8938ce36835b5f381379560e77fb6cf9cf90 (diff)
downloadsamba-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.c18
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: