The branch, master has been updated
       via  9377f3b s3: smbd: DFS: Pass uint32_t ucf_flags through into 
unix_convert().
       via  6156c82 s3: smbd: DFS: Pass uint32_t ucf_flags through into 
dfs_redirect().
       via  b96ae7c s3: smbd: DFS: Pass uint32_t ucf_flags through into 
resolve_dfspath_wcard().
      from  94464ed pam_winbind: Create and use a wbclient context

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


- Log -----------------------------------------------------------------
commit 9377f3bce0866e2fadeea5ba87f7ee41f7d9ba31
Author: Jeremy Allison <j...@samba.org>
Date:   Fri Mar 25 11:34:30 2016 -0700

    s3: smbd: DFS: Pass uint32_t ucf_flags through into unix_convert().
    
    This allows vendors to ensure that flags such as UCF_PREP_CREATEFILE
    are always passed to their VFS modules whilst smbd is doing pathname
    lookup - even before the create VFS call is done.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>
    
    Autobuild-User(master): Jeremy Allison <j...@samba.org>
    Autobuild-Date(master): Sat Mar 26 00:08:40 CET 2016 on sn-devel-144

commit 6156c825bbb803cb70a03b0fe22d2576d82bab30
Author: Jeremy Allison <j...@samba.org>
Date:   Fri Mar 25 11:26:39 2016 -0700

    s3: smbd: DFS: Pass uint32_t ucf_flags through into dfs_redirect().
    
    Eventually move this down to the call to unix_convert()
    inside the DFS code.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

commit b96ae7c69e48ecfc147b032d3d6e00a1ce65d226
Author: Jeremy Allison <j...@samba.org>
Date:   Fri Mar 25 11:23:29 2016 -0700

    s3: smbd: DFS: Pass uint32_t ucf_flags through into resolve_dfspath_wcard().
    
    Eventually move this down to the call to unix_convert()
    inside the DFS code.
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com>

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

Summary of changes:
 source3/smbd/filename.c |  3 +--
 source3/smbd/msdfs.c    | 17 +++++++++++------
 source3/smbd/proto.h    |  2 +-
 source3/smbd/trans2.c   |  2 +-
 4 files changed, 14 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
index 7271466..89c8bd6 100644
--- a/source3/smbd/filename.c
+++ b/source3/smbd/filename.c
@@ -1401,7 +1401,6 @@ static NTSTATUS filename_convert_internal(TALLOC_CTX *ctx,
                                struct smb_filename **pp_smb_fname)
 {
        NTSTATUS status;
-       bool allow_wcards = (ucf_flags & 
(UCF_COND_ALLOW_WCARD_LCOMP|UCF_ALWAYS_ALLOW_WCARD_LCOMP));
        char *fname = NULL;
 
        *pp_smb_fname = NULL;
@@ -1409,7 +1408,7 @@ static NTSTATUS filename_convert_internal(TALLOC_CTX *ctx,
        status = resolve_dfspath_wcard(ctx, conn,
                                dfs_path,
                                name_in,
-                               allow_wcards,
+                               ucf_flags,
                                !conn->sconn->using_smb2,
                                &fname,
                                ppath_contains_wcard);
diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c
index cab6ff3..51e3dff 100644
--- a/source3/smbd/msdfs.c
+++ b/source3/smbd/msdfs.c
@@ -669,7 +669,7 @@ static NTSTATUS dfs_path_lookup(TALLOC_CTX *ctx,
                const char *dfspath, /* Incoming complete dfs path */
                const struct dfs_path *pdp, /* Parsed out
                                               server+share+extrapath. */
-               bool search_flag, /* Called from a findfirst ? */
+               uint32_t ucf_flags,
                int *consumedcntp,
                char **pp_targetpath)
 {
@@ -691,7 +691,7 @@ static NTSTATUS dfs_path_lookup(TALLOC_CTX *ctx,
         */
 
        status = unix_convert(ctx, conn, pdp->reqpath, &smb_fname,
-                             search_flag ? UCF_ALWAYS_ALLOW_WCARD_LCOMP : 0);
+                             ucf_flags);
 
        if (!NT_STATUS_IS_OK(status)) {
                if (!NT_STATUS_EQUAL(status,
@@ -707,7 +707,10 @@ static NTSTATUS dfs_path_lookup(TALLOC_CTX *ctx,
 
        if (is_msdfs_link_internal(ctx, conn, smb_fname->base_name,
                                   pp_targetpath, NULL)) {
-               if (search_flag) {
+               /* XX_ALLOW_WCARD_XXX is called from search functions. */
+               if (ucf_flags &
+                               (UCF_COND_ALLOW_WCARD_LCOMP|
+                                UCF_ALWAYS_ALLOW_WCARD_LCOMP)) {
                        DEBUG(6,("dfs_path_lookup (FindFirst) No redirection "
                                 "for dfs link %s.\n", dfspath));
                        status = NT_STATUS_OK;
@@ -817,12 +820,14 @@ static NTSTATUS dfs_path_lookup(TALLOC_CTX *ctx,
 static NTSTATUS dfs_redirect(TALLOC_CTX *ctx,
                        connection_struct *conn,
                        const char *path_in,
-                       bool search_wcard_flag,
+                       uint32_t ucf_flags,
                        bool allow_broken_path,
                        char **pp_path_out,
                        bool *ppath_contains_wcard)
 {
        NTSTATUS status;
+       bool search_wcard_flag = (ucf_flags &
+               (UCF_COND_ALLOW_WCARD_LCOMP|UCF_ALWAYS_ALLOW_WCARD_LCOMP));
        struct dfs_path *pdp = talloc(ctx, struct dfs_path);
 
        if (!pdp) {
@@ -1666,7 +1671,7 @@ NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx,
                                connection_struct *conn,
                                bool dfs_pathnames,
                                const char *name_in,
-                               bool allow_wcards,
+                               uint32_t ucf_flags,
                                bool allow_broken_path,
                                char **pp_name_out,
                                bool *ppath_contains_wcard)
@@ -1678,7 +1683,7 @@ NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx,
                status = dfs_redirect(ctx,
                                        conn,
                                        name_in,
-                                       allow_wcards,
+                                       ucf_flags,
                                        allow_broken_path,
                                        pp_name_out,
                                        &path_contains_wcard);
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index 6f402ab..4be6521 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -488,7 +488,7 @@ NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx,
                                connection_struct *conn,
                                bool dfs_pathnames,
                                const char *name_in,
-                               bool allow_wcards,
+                               uint32_t ucf_flags,
                                bool allow_broken_path,
                                char **pp_name_out,
                                bool *ppath_contains_wcard);
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 69276f5..f351008 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -6876,7 +6876,7 @@ static NTSTATUS 
smb_file_rename_information(connection_struct *conn,
        status = resolve_dfspath_wcard(ctx, conn,
                                       req->flags2 & FLAGS2_DFS_PATHNAMES,
                                       newname,
-                                      true,
+                                      UCF_COND_ALLOW_WCARD_LCOMP,
                                       !conn->sconn->using_smb2,
                                       &newname,
                                       &dest_has_wcard);


-- 
Samba Shared Repository

Reply via email to