s3: smbd: Add a dst_original_lcomp parameter to rename_internals_fsp().
authorJeremy Allison <jra@samba.org>
Wed, 25 Mar 2020 23:20:23 +0000 (16:20 -0700)
committerRalph Boehme <slow@samba.org>
Mon, 30 Mar 2020 14:45:30 +0000 (14:45 +0000)
Currently passed in as dst_fname->original_lcomp in all callers
but will eventually be converted to allow original_lcomp to be
removed from struct smb_filename.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/smbd/proto.h
source3/smbd/reply.c
source3/smbd/trans2.c

index 12d0753ae5ffbfbb97892e9a77c1fc473ff0e567..d6d85e12a612670cc7dddb304dbebe89387b3608 100644 (file)
@@ -1018,6 +1018,7 @@ void reply_rmdir(struct smb_request *req);
 NTSTATUS rename_internals_fsp(connection_struct *conn,
                        files_struct *fsp,
                        const struct smb_filename *smb_fname_dst_in,
+                       const char *dst_original_lcomp,
                        uint32_t attrs,
                        bool replace_if_exists);
 NTSTATUS rename_internals(TALLOC_CTX *ctx,
index cea2334ca73cd61ec652b5458d99b58ed6a85e58..31ef904d65b44a178434bfa3c3665bce7c397490 100644 (file)
@@ -7575,6 +7575,7 @@ static NTSTATUS parent_dirname_compatible_open(connection_struct *conn,
 NTSTATUS rename_internals_fsp(connection_struct *conn,
                        files_struct *fsp,
                        const struct smb_filename *smb_fname_dst_in,
+                       const char *dst_original_lcomp,
                        uint32_t attrs,
                        bool replace_if_exists)
 {
@@ -7627,7 +7628,7 @@ NTSTATUS rename_internals_fsp(connection_struct *conn,
                /*
                 * Split off the last component of the processed
                 * destination name. We will compare this to
-                * the split components of smb_fname_dst->original_lcomp.
+                * the split components of dst_original_lcomp.
                 */
                if (!parent_dirname(ctx,
                                smb_fname_dst->base_name,
@@ -7638,7 +7639,7 @@ NTSTATUS rename_internals_fsp(connection_struct *conn,
                }
 
                /*
-                * The original_lcomp component contains
+                * The dst_original_lcomp component contains
                 * the last_component of the path + stream
                 * name (if a stream exists).
                 *
@@ -7649,13 +7650,13 @@ NTSTATUS rename_internals_fsp(connection_struct *conn,
                if (fsp->posix_flags & FSP_POSIX_FLAGS_PATHNAMES) {
                        /* POSIX - no stream component. */
                        orig_lcomp_path = talloc_strdup(ctx,
-                                               smb_fname_dst->original_lcomp);
+                                               dst_original_lcomp);
                        if (orig_lcomp_path == NULL) {
                                ok = false;
                        }
                } else {
                        ok = split_stream_filename(ctx,
-                                       smb_fname_dst->original_lcomp,
+                                       dst_original_lcomp,
                                        &orig_lcomp_path,
                                        &orig_lcomp_stream);
                }
@@ -8064,6 +8065,7 @@ NTSTATUS rename_internals(TALLOC_CTX *ctx,
                status = rename_internals_fsp(conn,
                                        fsp,
                                        smb_fname_dst,
+                                       smb_fname_dst->original_lcomp,
                                        attrs,
                                        replace_if_exists);
 
@@ -8235,6 +8237,7 @@ NTSTATUS rename_internals(TALLOC_CTX *ctx,
                status = rename_internals_fsp(conn,
                                        fsp,
                                        smb_fname_dst,
+                                       smb_fname_dst->original_lcomp,
                                        attrs,
                                        replace_if_exists);
 
index 0fb2284be36380dd2d15dc2c889db9b3d8591c10..70d45bf7654afacb7ee7356b81d3468256255628 100644 (file)
@@ -7177,6 +7177,7 @@ static NTSTATUS smb2_file_rename_information(connection_struct *conn,
        status = rename_internals_fsp(conn,
                                fsp,
                                smb_fname_dst,
+                               smb_fname_dst->original_lcomp,
                                (FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM),
                                overwrite);
 
@@ -7449,6 +7450,7 @@ static NTSTATUS smb_file_rename_information(connection_struct *conn,
                status = rename_internals_fsp(conn,
                                        fsp,
                                        smb_fname_dst,
+                                       smb_fname_dst->original_lcomp,
                                        0,
                                        overwrite);
        } else {