summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-12-16 15:53:46 -0800
committerKarolin Seeger <kseeger@samba.org>2012-01-23 21:30:10 +0100
commit2dcf2267cb21e79380b8fc7f32b44463b3173cec (patch)
tree6f3286760e5ae0055c6f68ca8f1e28ded7e99526
parent9f700b8c346380bfe5080a49bf568cd1d6cf24d3 (diff)
downloadsamba-2dcf2267cb21e79380b8fc7f32b44463b3173cec.tar.gz
Fix bug #8664 - Renaming a symlink fails if the symlink target is outside of the share.
(cherry picked from commit 6e77eac8f21925460e3b1946c2c22f6eff296322)
-rw-r--r--source3/smbd/reply.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index b86ccd3699b..c0e8a98e9af 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -6603,6 +6603,8 @@ void reply_mv(struct smb_request *req)
TALLOC_CTX *ctx = talloc_tos();
struct smb_filename *smb_fname_src = NULL;
struct smb_filename *smb_fname_dst = NULL;
+ uint32_t src_ucf_flags = lp_posix_pathnames() ? UCF_UNIX_NAME_LOOKUP : UCF_COND_ALLOW_WCARD_LCOMP;
+ uint32_t dst_ucf_flags = UCF_SAVE_LCOMP | (lp_posix_pathnames() ? 0 : UCF_COND_ALLOW_WCARD_LCOMP);
bool stream_rename = false;
START_PROFILE(SMBmv);
@@ -6645,7 +6647,7 @@ void reply_mv(struct smb_request *req)
conn,
req->flags2 & FLAGS2_DFS_PATHNAMES,
name,
- UCF_COND_ALLOW_WCARD_LCOMP,
+ src_ucf_flags,
&src_has_wcard,
&smb_fname_src);
@@ -6663,7 +6665,7 @@ void reply_mv(struct smb_request *req)
conn,
req->flags2 & FLAGS2_DFS_PATHNAMES,
newname,
- UCF_COND_ALLOW_WCARD_LCOMP | UCF_SAVE_LCOMP,
+ dst_ucf_flags,
&dest_has_wcard,
&smb_fname_dst);