1
0
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:
Jeremy Allison -
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.
*/