1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-08 13:49:29 +03:00

r6044: Ensure the old search calls always ask mask_match to translate

patterns like ????????.??? - even if using an NT1 protocol.
Matches W2K3 behavior.
Jeremy.
This commit is contained in:
Jeremy Allison
2005-03-24 19:33:02 +00:00
committed by Gerald (Jerry) Carter
parent 7f02ba6646
commit 67f6473f50
3 changed files with 21 additions and 5 deletions

View File

@ -146,7 +146,7 @@ static int ms_fnmatch_core(const smb_ucs2_t *p, const smb_ucs2_t *n,
return -1;
}
int ms_fnmatch(const char *pattern, const char *string, enum protocol_types protocol,
int ms_fnmatch(const char *pattern, const char *string, BOOL translate_pattern,
BOOL is_case_sensitive)
{
wpstring p, s;
@ -179,7 +179,7 @@ int ms_fnmatch(const char *pattern, const char *string, enum protocol_types prot
return -1;
}
if (protocol <= PROTOCOL_LANMAN2) {
if (translate_pattern) {
/*
for older negotiated protocols it is possible to
translate the pattern to produce a "new style"

View File

@ -2475,7 +2475,23 @@ BOOL mask_match(const char *string, char *pattern, BOOL is_case_sensitive)
if (strcmp(pattern,".") == 0)
return False;
return ms_fnmatch(pattern, string, Protocol, is_case_sensitive) == 0;
return ms_fnmatch(pattern, string, Protocol <= PROTOCOL_LANMAN2, is_case_sensitive) == 0;
}
/*******************************************************************
A wrapper that handles case sensitivity and the special handling
of the ".." name. Varient that is only called by old search code which requires
pattern translation.
*******************************************************************/
BOOL mask_match_search(const char *string, char *pattern, BOOL is_case_sensitive)
{
if (strcmp(string,"..") == 0)
string = ".";
if (strcmp(pattern,".") == 0)
return False;
return ms_fnmatch(pattern, string, True, is_case_sensitive) == 0;
}
/*******************************************************************

View File

@ -698,7 +698,7 @@ BOOL dir_check_ftype(connection_struct *conn,int mode,int dirtype)
static BOOL mangle_mask_match(connection_struct *conn, fstring filename, char *mask)
{
mangle_map(filename,True,False,SNUM(conn));
return mask_match(filename,mask,False);
return mask_match_search(filename,mask,False);
}
/****************************************************************************
@ -740,7 +740,7 @@ BOOL get_dir_entry(connection_struct *conn,char *mask,int dirtype, pstring fname
see masktest for a demo
*/
if ((strcmp(mask,"*.*") == 0) ||
mask_match(filename,mask,False) ||
mask_match_search(filename,mask,False) ||
mangle_mask_match(conn,filename,mask)) {
if (!mangle_is_8_3(filename, False))