diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/client/client.c | 3 | ||||
-rw-r--r-- | source3/include/proto.h | 3 | ||||
-rw-r--r-- | source3/lib/util.c | 12 | ||||
-rw-r--r-- | source3/smbd/reply.c | 7 | ||||
-rw-r--r-- | source3/smbd/trans2.c | 3 |
5 files changed, 18 insertions, 10 deletions
diff --git a/source3/client/client.c b/source3/client/client.c index 6773e6d90a..7cbaa81d52 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -472,7 +472,8 @@ static bool do_this_one(file_info *finfo) } if (*client_get_fileselection() && - !mask_match(finfo->name,client_get_fileselection(),false)) { + !mask_match(finfo->name, client_get_fileselection(), + get_Protocol(), false)) { DEBUG(3,("mask_match %s failed\n", finfo->name)); return false; } diff --git a/source3/include/proto.h b/source3/include/proto.h index 92cb99744b..3399965043 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1188,7 +1188,8 @@ bool parent_dirname(TALLOC_CTX *mem_ctx, const char *dir, char **parent, const char **name); bool ms_has_wild(const char *s); bool ms_has_wild_w(const smb_ucs2_t *s); -bool mask_match(const char *string, const char *pattern, bool is_case_sensitive); +bool mask_match(const char *string, const char *pattern, + enum protocol_types proto, bool is_case_sensitive); bool mask_match_search(const char *string, const char *pattern, bool is_case_sensitive); bool mask_match_list(const char *string, char **list, int listLen, bool is_case_sensitive); bool unix_wild_match(const char *pattern, const char *string); diff --git a/source3/lib/util.c b/source3/lib/util.c index e0b09c4f1f..e3ceea4951 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -1687,7 +1687,8 @@ bool is_in_path(const char *name, name_compare_entry *namelist, bool case_sensit for(; namelist->name != NULL; namelist++) { if(namelist->is_wild) { - if (mask_match(last_component, namelist->name, case_sensitive)) { + if (mask_match(last_component, namelist->name, + get_Protocol(), case_sensitive)) { DEBUG(8,("is_in_path: mask match succeeded\n")); return True; } @@ -2384,14 +2385,16 @@ bool ms_has_wild_w(const smb_ucs2_t *s) of the ".." name. *******************************************************************/ -bool mask_match(const char *string, const char *pattern, bool is_case_sensitive) +bool mask_match(const char *string, const char *pattern, + enum protocol_types proto, bool is_case_sensitive) { if (ISDOTDOT(string)) string = "."; if (ISDOT(pattern)) return False; - return ms_fnmatch(pattern, string, Protocol <= PROTOCOL_LANMAN2, is_case_sensitive) == 0; + return ms_fnmatch(pattern, string, proto <= PROTOCOL_LANMAN2, + is_case_sensitive) == 0; } /******************************************************************* @@ -2418,7 +2421,8 @@ bool mask_match_search(const char *string, const char *pattern, bool is_case_sen bool mask_match_list(const char *string, char **list, int listLen, bool is_case_sensitive) { while (listLen-- > 0) { - if (mask_match(string, *list++, is_case_sensitive)) + if (mask_match(string, *list++, get_Protocol(), + is_case_sensitive)) return True; } return False; diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 682f56ff33..a113a9d982 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -2638,7 +2638,7 @@ NTSTATUS unlink_internals(connection_struct *conn, struct smb_request *req, continue; } - if(!mask_match(dname, fname_mask, + if(!mask_match(dname, fname_mask, get_Protocol(), conn->case_sensitive)) { TALLOC_FREE(frame); TALLOC_FREE(talloced); @@ -6337,7 +6337,8 @@ NTSTATUS rename_internals(TALLOC_CTX *ctx, continue; } - if(!mask_match(dname, fname_src_mask, conn->case_sensitive)) { + if(!mask_match(dname, fname_src_mask, get_Protocol(), + conn->case_sensitive)) { TALLOC_FREE(talloced); continue; } @@ -6968,7 +6969,7 @@ void reply_copy(struct smb_request *req) continue; } - if(!mask_match(dname, fname_src_mask, + if(!mask_match(dname, fname_src_mask, get_Protocol(), conn->case_sensitive)) { TALLOC_FREE(talloced); continue; diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 17ebd81313..8226b6c428 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -1368,7 +1368,7 @@ static bool smbd_dirptr_lanman2_match_fn(TALLOC_CTX *ctx, fname, mask); state->got_exact_match = got_match; if (!got_match) { - got_match = mask_match(fname, mask, + got_match = mask_match(fname, mask, get_Protocol(), state->conn->case_sensitive); } @@ -1393,6 +1393,7 @@ static bool smbd_dirptr_lanman2_match_fn(TALLOC_CTX *ctx, state->got_exact_match = got_match; if (!got_match) { got_match = mask_match(mangled_name, mask, + get_Protocol(), state->conn->case_sensitive); } } |