From: Jeremy Allison Date: Fri, 4 Oct 2019 20:51:09 +0000 (-0700) Subject: s3: smbd: Change rmdir_internals() to call SMB_VFS_UNLINKAT() in rmdir cases. X-Git-Tag: talloc-2.3.1~416 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4ce152f1c43a2eb5c96da2f24b3829e4118774e2;p=thirdparty%2Fsamba.git 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 Reviewed-by: Ralph Boehme --- 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: