mirror of
https://github.com/samba-team/samba.git
synced 2025-08-02 00:22:11 +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:
@ -150,7 +150,8 @@ static void stat_cache_add( char *full_orig_name, char *orig_translated_path)
|
|||||||
/*
|
/*
|
||||||
* Don't cache trivial valid directory entries.
|
* 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;
|
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.
|
* 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++;
|
global_stat_cache_misses++;
|
||||||
return False;
|
return False;
|
||||||
}
|
}
|
||||||
@ -365,6 +366,17 @@ BOOL unix_convert(char *name,connection_struct *conn,char *saved_last_component,
|
|||||||
|
|
||||||
trim_string(name,"/","/");
|
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.
|
* Ensure saved_last_component is valid even if file exists.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user