From e5262e2804b6cef2fc2560fff84a1b07f8507e03 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Fri, 22 Jan 2021 14:51:33 +0100 Subject: [PATCH] smbd: use real dirfsp for SMB_VFS_UNLINKAT() in remove_msdfs_link() Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- source3/smbd/msdfs.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c index dbdca66a530..6f7707dbc9b 100644 --- a/source3/smbd/msdfs.c +++ b/source3/smbd/msdfs.c @@ -1464,6 +1464,9 @@ bool remove_msdfs_link(const struct junction_map *jucn, connection_struct *conn; bool ret = False; struct smb_filename *smb_fname; + struct smb_filename *parent_fname = NULL; + struct smb_filename *at_fname = NULL; + NTSTATUS status; bool ok; int retval; @@ -1496,9 +1499,19 @@ bool remove_msdfs_link(const struct junction_map *jucn, return false; } + status = parent_pathref(frame, + conn->cwd_fsp, + smb_fname, + &parent_fname, + &at_fname); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return false; + } + retval = SMB_VFS_UNLINKAT(conn, - conn->cwd_fsp, - smb_fname, + parent_fname->fsp, + at_fname, 0); if (retval == 0) { ret = True; -- 2.11.4.GIT