[SCM] Samba Shared Repository - branch v3-5-test updated
Karolin Seeger
kseeger at samba.org
Mon Apr 12 01:18:14 MDT 2010
The branch, v3-5-test has been updated
via d614655... Fix bug #7339 - MSDFS is non-functional in 3.5.x
from 827084b... WHATSNEW: Start release notes for Samba 3.5.3.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-test
- Log -----------------------------------------------------------------
commit d614655f918fdbafe4520e9cc4d5de82e15b7d7d
Author: Jeremy Allison <jra at samba.org>
Date: Thu Apr 8 20:32:36 2010 -0700
Fix bug #7339 - MSDFS is non-functional in 3.5.x
In the refactoring around filename_convert, the split between the functions
resolve_dfspath() and resolve_dfspath_wcard() was lost, leaving us only with
resolve_dfspath_wcard().
Internally resolve_dfspath_wcard() calls dfs_redirect() only with a
"allow_wcards" flag of true, wheras the old resolve_dfspath() would call with a
value of false. The loss of this case causes dfs_redirect to always masquerade
DFS links as directories, even when they are being queried directly by a trans2
QPATHINFO call. We should only masquerade DFS links as directories when called
from a SMBsearch or trans2 findfirst/findnext - which was the intent of the
"allow_wcards" flag.
This patch adds back an allow_wcards bool parameter to
resolve_dfspath_wcard(). This bool is set from the state of the ucf_flags when
filename_convert() is called.
I will follow this up with a new smbclient-based torture test that will prevent
us from ever regressing our DFS support again.
Jeremy.
(cherry picked from commit 358781559526f962c96c1af88cd104946c507d05)
-----------------------------------------------------------------------
Summary of changes:
source3/include/proto.h | 1 +
source3/smbd/filename.c | 2 ++
source3/smbd/msdfs.c | 3 ++-
source3/smbd/trans2.c | 1 +
4 files changed, 6 insertions(+), 1 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 28b7f7c..31d0aa6 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -6481,6 +6481,7 @@ NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx,
connection_struct *conn,
bool dfs_pathnames,
const char *name_in,
+ bool allow_wcards,
char **pp_name_out,
bool *ppath_contains_wcard);
NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
index ab79dfd..154d34a 100644
--- a/source3/smbd/filename.c
+++ b/source3/smbd/filename.c
@@ -1125,6 +1125,7 @@ NTSTATUS filename_convert(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;
@@ -1132,6 +1133,7 @@ NTSTATUS filename_convert(TALLOC_CTX *ctx,
status = resolve_dfspath_wcard(ctx, conn,
dfs_path,
name_in,
+ allow_wcards,
&fname,
ppath_contains_wcard);
if (!NT_STATUS_IS_OK(status)) {
diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c
index dcef75e..6dfa886 100644
--- a/source3/smbd/msdfs.c
+++ b/source3/smbd/msdfs.c
@@ -1738,6 +1738,7 @@ NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx,
connection_struct *conn,
bool dfs_pathnames,
const char *name_in,
+ bool allow_wcards,
char **pp_name_out,
bool *ppath_contains_wcard)
{
@@ -1748,7 +1749,7 @@ NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx,
status = dfs_redirect(ctx,
conn,
name_in,
- True,
+ allow_wcards,
pp_name_out,
&path_contains_wcard);
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 5620a2f..36b2749 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -5933,6 +5933,7 @@ static NTSTATUS smb_file_rename_information(connection_struct *conn,
status = resolve_dfspath_wcard(ctx, conn,
req->flags2 & FLAGS2_DFS_PATHNAMES,
newname,
+ true,
&newname,
&dest_has_wcard);
if (!NT_STATUS_IS_OK(status)) {
--
Samba Shared Repository
More information about the samba-cvs
mailing list