[SCM] Samba Shared Repository - branch master updated - ff7de4afe199b7e4a1b40a00bf5f817172ebbcbf

Jeremy Allison jra at samba.org
Mon Dec 1 21:33:33 GMT 2008


The branch, master has been updated
       via  ff7de4afe199b7e4a1b40a00bf5f817172ebbcbf (commit)
       via  8edd7752447e178d2e99b23997d475790efb5af2 (commit)
      from  0b7430b0541af98fe3661069d93fafca42f321ec (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit ff7de4afe199b7e4a1b40a00bf5f817172ebbcbf
Merge: 8edd7752447e178d2e99b23997d475790efb5af2 0b7430b0541af98fe3661069d93fafca42f321ec
Author: Jeremy Allison <jra at samba.org>
Date:   Mon Dec 1 13:32:35 2008 -0800

    Merge branch 'master' of ssh://jra@git.samba.org/data/git/samba

commit 8edd7752447e178d2e99b23997d475790efb5af2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Dec 1 13:31:43 2008 -0800

    s3:smbd: construct the correct newname for stream renames
    
    The Windows Explorer creates temporary streams and renames
    them later via SFILEINFO_RENAME_INFO. The newname comes
    in as ":Stream:$DATA".
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/trans2.c |   48 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 32 insertions(+), 16 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 9719d5c..8532c85 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -5353,26 +5353,42 @@ static NTSTATUS smb_file_rename_information(connection_struct *conn,
 		return NT_STATUS_NOT_SUPPORTED;
 	}
 
-	/* Create the base directory. */
-	base_name = talloc_strdup(ctx, fname);
-	if (!base_name) {
-		return NT_STATUS_NO_MEMORY;
-	}
-	p = strrchr_m(base_name, '/');
-	if (p) {
-		p[1] = '\0';
+	if (fsp && fsp->base_fsp) {
+		if (newname[0] != ':') {
+			return NT_STATUS_NOT_SUPPORTED;
+		}
+		base_name = talloc_asprintf(ctx, "%s%s",
+					   fsp->base_fsp->fsp_name,
+					   newname);
+		if (!base_name) {
+			return NT_STATUS_NO_MEMORY;
+		}
 	} else {
-		base_name = talloc_strdup(ctx, "./");
+		if (is_ntfs_stream_name(newname)) {
+			return NT_STATUS_NOT_SUPPORTED;
+		}
+
+		/* Create the base directory. */
+		base_name = talloc_strdup(ctx, fname);
+		if (!base_name) {
+			return NT_STATUS_NO_MEMORY;
+		}
+		p = strrchr_m(base_name, '/');
+		if (p) {
+			p[1] = '\0';
+		} else {
+			base_name = talloc_strdup(ctx, "./");
+			if (!base_name) {
+				return NT_STATUS_NO_MEMORY;
+			}
+		}
+		/* Append the new name. */
+		base_name = talloc_asprintf_append(base_name,
+				"%s",
+				newname);
 		if (!base_name) {
 			return NT_STATUS_NO_MEMORY;
 		}
-	}
-	/* Append the new name. */
-	base_name = talloc_asprintf_append(base_name,
-			"%s",
-			newname);
-	if (!base_name) {
-		return NT_STATUS_NO_MEMORY;
 	}
 
 	if (fsp) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list