From c96b5fde5ae12bd0d4d6bcff095cf090738c92a4 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 5 Sep 1998 15:31:10 +0000 Subject: 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. --- source/smbd/filename.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 ); } -- cgit