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