Fix bug #8664 - Renaming a symlink fails if the symlink target is outside of the...
authorJeremy Allison <jra@samba.org>
Fri, 16 Dec 2011 20:26:45 +0000 (12:26 -0800)
committerJeremy Allison <jra@samba.org>
Fri, 16 Dec 2011 22:32:26 +0000 (23:32 +0100)
Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Fri Dec 16 23:32:26 CET 2011 on sn-devel-104

source3/smbd/reply.c

index d9b7500707860e24b70714c45a2fcb6978d9c65b..257ce7001a9b30b121430ddcac0838fc5bef6453 100644 (file)
@@ -6649,6 +6649,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);
@@ -6691,7 +6693,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);
 
@@ -6709,7 +6711,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);