diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/include/msdfs.h | 8 | ||||
-rw-r--r-- | source/smbd/trans2.c | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/source/include/msdfs.h b/source/include/msdfs.h index 8b365d02ea6..afbbe738fe1 100644 --- a/source/include/msdfs.h +++ b/source/include/msdfs.h @@ -72,6 +72,14 @@ struct dfs_path return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, \ ERRSRV, ERRbadpath);; } +#define RESOLVE_FINDFIRST_DFSPATH(name, conn, inbuf, outbuf) \ +{ if ((SVAL(inbuf,smb_flg2) & FLAGS2_DFS_PATHNAMES) && \ + lp_host_msdfs() && lp_msdfs_root(SNUM(conn)) && \ + dfs_redirect(name,conn,True)) \ + return ERROR_BOTH(NT_STATUS_PATH_NOT_COVERED, \ + ERRSRV, ERRbadpath);; } + + #define init_dfsroot(conn, inbuf, outbuf) \ { if (lp_msdfs_root(SNUM(conn)) && lp_host_msdfs()) { \ DEBUG(2,("Serving %s as a Dfs root\n", \ diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c index 05ff7d6785d..daa458f3a97 100644 --- a/source/smbd/trans2.c +++ b/source/smbd/trans2.c @@ -1378,7 +1378,7 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n", return ERROR_NT(ntstatus); } - RESOLVE_DFSPATH(directory, conn, inbuf, outbuf); + RESOLVE_FINDFIRST_DFSPATH(directory, conn, inbuf, outbuf); unix_convert(directory,conn,0,&bad_path,&sbuf); if (bad_path) { |