The branch, master has been updated
       via  7f10bf980edef3ace1522d0c9c082b35e225c950 (commit)
       via  f8f68703da58cf7f61b655b48bbbc45cda647748 (commit)
      from  f930f504e1d5e78d2f6f36cab9ce36dbeb34e955 (commit)

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


- Log -----------------------------------------------------------------
commit 7f10bf980edef3ace1522d0c9c082b35e225c950
Merge: f8f68703da58cf7f61b655b48bbbc45cda647748 
f930f504e1d5e78d2f6f36cab9ce36dbeb34e955
Author: Jeremy Allison <[email protected]>
Date:   Thu Apr 9 22:46:59 2009 -0700

    Merge branch 'master' of ssh://[email protected]/data/git/samba

commit f8f68703da58cf7f61b655b48bbbc45cda647748
Author: Jeremy Allison <[email protected]>
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 52df4fa..4514617 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -3355,6 +3355,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.
         */
@@ -3410,24 +3433,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

Reply via email to