summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>1998-09-05 15:31:10 +0000
committerAndrew Tridgell <tridge@samba.org>1998-09-05 15:31:10 +0000
commitc96b5fde5ae12bd0d4d6bcff095cf090738c92a4 (patch)
tree9eb921c447001d24b1901e820fd3b37c04a3bf60
parent5c7717f033f670f587b4a250d0a663cad30824e5 (diff)
downloadsamba-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.c6
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 );
}