diff options
author | Andrew Tridgell <tridge@samba.org> | 1998-09-05 15:31:10 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1998-09-05 15:31:10 +0000 |
commit | c96b5fde5ae12bd0d4d6bcff095cf090738c92a4 (patch) | |
tree | 9eb921c447001d24b1901e820fd3b37c04a3bf60 | |
parent | 5c7717f033f670f587b4a250d0a663cad30824e5 (diff) | |
download | samba-c96b5fde5ae12bd0d4d6bcff095cf090738c92a4.tar.gz |
fixed a stat cache bug (the one found by Matthew Geier).
The fix I used is a very conservative fix. I'll leave it up to Jeremy
to put in a better fix. The problem was the detection of mangled
names.
-rw-r--r-- | source/smbd/filename.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/source/smbd/filename.c b/source/smbd/filename.c index 8b81d6df2a0..ee9ce3f8350 100644 --- a/source/smbd/filename.c +++ b/source/smbd/filename.c @@ -331,6 +331,7 @@ BOOL unix_convert(char *name,connection_struct *conn,char *saved_last_component, int saved_errno; BOOL component_was_mangled = False; BOOL name_has_wildcard = False; + extern char magic_char; *dirpath = 0; *bad_path = False; @@ -432,6 +433,10 @@ BOOL unix_convert(char *name,connection_struct *conn,char *saved_last_component, if(strchr(start,'?') || strchr(start,'*')) name_has_wildcard = True; + /* this is an extremely conservative test for mangled names. */ + if (strchr(start,magic_char)) + component_was_mangled = True; + /* * Now we need to recursively match the name against the real * directory structure. @@ -528,7 +533,6 @@ BOOL unix_convert(char *name,connection_struct *conn,char *saved_last_component, */ if (is_mangled(start)) { - component_was_mangled = True; check_mangled_cache( start ); } |