diff options
author | Jeremy Allison <jra@samba.org> | 2003-05-09 01:06:27 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-05-09 01:06:27 +0000 |
commit | f359b4bdf6134dbd6542a66cecd311cf91d9a074 (patch) | |
tree | fd8af61460ab0166969cf80d9beefdb199288fab /source3/smbd | |
parent | 417d0e9afc321612a55928d5aa7ec6ead8dfcc0c (diff) | |
download | samba-f359b4bdf6134dbd6542a66cecd311cf91d9a074.tar.gz samba-f359b4bdf6134dbd6542a66cecd311cf91d9a074.tar.bz2 samba-f359b4bdf6134dbd6542a66cecd311cf91d9a074.zip |
Fix nasty bug pointed out by samba-technical poster. If name is mangled
then we weren't always correctly detecting that it had a valid stat struct
and so might now return a 'file existed'. Finally realized this when installing
the W2K resource kit as a test case.
Jeremy.
(This used to be commit d48069ccd8351e4bff097a7f7500c738870a413d)
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/filename.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c index ad707a2b9d..9dd1523c73 100644 --- a/source3/smbd/filename.c +++ b/source3/smbd/filename.c @@ -248,6 +248,16 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen return(False); } + if (!end) { + /* + * We just scanned for, and found the end of the path. + * We must return the valid stat struct. + * JRA. + */ + + *pst = st; + } + } else { pstring rest; @@ -373,7 +383,8 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen /* * If we ended up resolving the entire path then return a valid - * stat struct if we got one. + * stat struct if we got one. Note this doesn't catch mangled paths, + * but the check in the for loop above will do that. JRA. */ if (VALID_STAT(st) && (strlen(orig_path) == strlen(name))) |