[SCM] Samba Shared Repository - branch v3-4-test updated - release-4-0-0alpha7-718-gb8251a7

Jeremy Allison jra at samba.org
Fri Apr 10 05:48:51 GMT 2009


The branch, v3-4-test has been updated
       via  b8251a7e01304afce96cb0bee15a1fee2bd57490 (commit)
      from  cd4c88dbe6a292d9244165748b9121eae30d93d0 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test


- Log -----------------------------------------------------------------
commit b8251a7e01304afce96cb0bee15a1fee2bd57490
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Apr 9 22:44:56 2009 -0700

    Fix bug #6254 - PUT/GET produces an error in IPv6 to a smb-server(3.3) has parameter "msdfs root = yes"
    This was broken by the refactoring around create_file().
    MSDFS pathname processing must be done FIRST.
    MSDFS pathnames containing IPv6 addresses can
    be confused with NTFS stream names (they contain
    ":" characters.
    Jeremy.

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

Summary of changes:
 source3/smbd/open.c |   41 +++++++++++++++++++++++------------------
 1 files changed, 23 insertions(+), 18 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index d529b00..eae6e18 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -3364,6 +3364,29 @@ NTSTATUS create_file_default(connection_struct *conn,
 		  (unsigned int)root_dir_fid,
 		  ea_list, sd, create_file_flags, fname));
 
+	/* MSDFS pathname processing must be done FIRST.
+	   MSDFS pathnames containing IPv6 addresses can
+	   be confused with NTFS stream names (they contain
+	   ":" characters. JRA. */
+
+	if ((req != NULL) && (req->flags2 & FLAGS2_DFS_PATHNAMES)) {
+		char *resolved_fname;
+
+		status = resolve_dfspath(talloc_tos(), conn, true, fname,
+					 &resolved_fname);
+
+		if (!NT_STATUS_IS_OK(status)) {
+			/*
+			 * For PATH_NOT_COVERED we had
+			 * reply_botherror(req, NT_STATUS_PATH_NOT_COVERED,
+			 *		   ERRSRV, ERRbadpath);
+			 * Need to fix in callers
+			 */
+			goto fail;
+		}
+		fname = resolved_fname;
+	}
+
 	/*
 	 * Calculate the filename from the root_dir_if if necessary.
 	 */
@@ -3419,24 +3442,6 @@ NTSTATUS create_file_default(connection_struct *conn,
 		}
 	}
 
-	if ((req != NULL) && (req->flags2 & FLAGS2_DFS_PATHNAMES)) {
-		char *resolved_fname;
-
-		status = resolve_dfspath(talloc_tos(), conn, true, fname,
-					 &resolved_fname);
-
-		if (!NT_STATUS_IS_OK(status)) {
-			/*
-			 * For PATH_NOT_COVERED we had
-			 * reply_botherror(req, NT_STATUS_PATH_NOT_COVERED,
-			 *		   ERRSRV, ERRbadpath);
-			 * Need to fix in callers
-			 */
-			goto fail;
-		}
-		fname = resolved_fname;
-	}
-
 	/*
 	 * Check if POSIX semantics are wanted.
 	 */


-- 
Samba Shared Repository


More information about the samba-cvs mailing list