mirror of
https://github.com/samba-team/samba.git
synced 2025-02-16 09:57:47 +03:00
Small bit of paranioa. Ensure that if the incoming name to
unix_convert() was a single '\' (the base directory of the service) that it gets translated to a '.', not a '\0'. Jeremy.
This commit is contained in:
parent
b55f93b213
commit
f74f39f45f
@ -150,7 +150,8 @@ static void stat_cache_add( char *full_orig_name, char *orig_translated_path)
|
||||
/*
|
||||
* Don't cache trivial valid directory entries.
|
||||
*/
|
||||
if((strcmp(full_orig_name, ".") == 0) || (strcmp(full_orig_name, "..") == 0))
|
||||
if((*full_orig_name == '\0') || (strcmp(full_orig_name, ".") == 0) ||
|
||||
(strcmp(full_orig_name, "..") == 0))
|
||||
return;
|
||||
|
||||
/*
|
||||
@ -245,7 +246,7 @@ static BOOL stat_cache_lookup( char *name, char *dirpath, char **start, SMB_STRU
|
||||
/*
|
||||
* Don't lookup trivial valid directory entries.
|
||||
*/
|
||||
if((strcmp(name, ".") == 0) || (strcmp(name, "..") == 0)) {
|
||||
if((*name == '\0') || (strcmp(name, ".") == 0) || (strcmp(name, "..") == 0)) {
|
||||
global_stat_cache_misses++;
|
||||
return False;
|
||||
}
|
||||
@ -365,6 +366,17 @@ BOOL unix_convert(char *name,connection_struct *conn,char *saved_last_component,
|
||||
|
||||
trim_string(name,"/","/");
|
||||
|
||||
/*
|
||||
* If we trimmed down to a single '\0' character
|
||||
* then we should use the "." directory to avoid
|
||||
* searching the cache.
|
||||
*/
|
||||
|
||||
if(!*name) {
|
||||
name[0] = '.';
|
||||
name[1] = '\0';
|
||||
}
|
||||
|
||||
/*
|
||||
* Ensure saved_last_component is valid even if file exists.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user