msdfs broken in some code paths

Jeremy Allison jra at samba.org
Wed May 26 22:14:28 GMT 2004


On Mon, May 24, 2004 at 09:37:16PM -0700, Eric Horst wrote:
> 
> I'm not an expert on the internal protocol workings of CIFS/SMB so forgive
> me if my wording is wrong. I'll try to explain clearly and maybe it'll
> click with somebody.
> 
> Simple explanation: Samba 3.0.4 and a Dfs root. One link. Windows XP
> client. The Dfs link redirects fine when connecting to the server in a way
> that uses NTLM auth.  The Dfs link does not redirect and gives error when
> connecting to the server in a way that uses Kerberos auth.
> 
> Here is the critical point of the failure in the logfile for the Kerberos
> case (audioj is the name of the symlink):
> 
> [2004/05/24 17:54:07, 3, pid=27889]
> smbd/trans2.c:call_trans2qfilepathinfo(2353)
>   call_trans2qfilepathinfo: SMB_VFS_STAT of audioj failed (No such file or directory)
> [2004/05/24 17:54:07, 10, pid=27889] smbd/trans2.c:set_bad_path_error(2213)
>   set_bad_path_error: err = 2 bad_path = 0
> [2004/05/24 17:54:07, 3, pid=27889] smbd/error.c:error_packet(94)
>   error string = No such file or directory
> 
> Maybe everything above gives somebody a clue what's up. Beyond here I'm
> speculating...
> 
> I studied smbd/trans2.c and see differences between
> get_lanman2_dir_entry() and call_trans2qfilepathinfo(). I assume these
> have similar functions for different protocol versions.
> 
> 
> In get_lanman2_dir_entry(): (Success case)
> 
>    } else if (SMB_VFS_STAT(conn,pathreal,&sbuf) != 0) {
>              /* Needed to show the msdfs symlinks as directories */
>                  if(lp_host_msdfs() &&
>                     lp_msdfs_root(SNUM(conn)) &&
>                     is_msdfs_link(conn, pathreal, NULL, NULL, &sbuf)) {
>                            DEBUG(5,("get_lanman2_dir_entry:
>                  Masquerading msdfs link %s as a directory\n", pathreal));
>    }
> 
> 
> In call_trans2qfilepathinfo(): (Failure case)
>     } else if (!VALID_STAT(sbuf) && SMB_VFS_STAT(conn,fname, &sbuf)) {
>         DEBUG(3,("call_trans2qfilepathinfo: SMB_VFS_STAT
>                   of %s failed (%s)\n",fname,strerror(errno)));
>         return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRbadpath);
>     }
> 
> 
> The the call_trans2qfilepathinfo() case, that's the error I get. On the
> surface it seems that it just needs some of the msdfs tests that the
> get_lanman2_dir_entry() function has. Am I close? Maybe I'm way off.

Yes please, can you send in complete debug level 10 logs of success
and failure and create a bugzilla entry. I'm not convinced your idea
is correct here as the checks you mention should already be done in
the RESOLVE_DFSPATH macro at line 2337.

Jeremy.


More information about the samba-technical mailing list