Fix bug #7339 - MSDFS is non-functional in 3.5.x
commit358781559526f962c96c1af88cd104946c507d05
authorJeremy Allison <jra@samba.org>
Fri, 9 Apr 2010 03:32:36 +0000 (8 20:32 -0700)
committerJeremy Allison <jra@samba.org>
Fri, 9 Apr 2010 03:32:36 +0000 (8 20:32 -0700)
tree1bb2624951e6efd8e035b3c19933b676a271ca43
parent8126c78c76965fe6158fb8ef426abf256551e725
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.
source3/include/proto.h
source3/smbd/filename.c
source3/smbd/msdfs.c
source3/smbd/trans2.c