summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2017-02-12 20:12:10 +0100
committerVolker Lendecke <vl@samba.org>2017-02-15 11:40:32 +0100
commit129015d1a664e97410fa5fe2aef6bd8c494ffb5b (patch)
treef25bf9868a5a2383ea5f24362061a95a08f84a9e /source4
parente08110ece699eeb1b9ef688c92bf84c69a6fa5fc (diff)
downloadsamba-129015d1a664e97410fa5fe2aef6bd8c494ffb5b.tar.gz
lib: Fix "is_case_sensitive" in "ms_fnmatch_protocol"' callers
In the optimization in f969be54417 I got the boolean flag "is_case_sensitive" wrong. The behaviour was case *insensitive*, so all the flags should have been "false", keeping the old behaviour. While there, simplify "mask_match" in source4 client.c Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org> Autobuild-User(master): Volker Lendecke <vl@samba.org> Autobuild-Date(master): Wed Feb 15 11:40:32 CET 2017 on sn-devel-144
Diffstat (limited to 'source4')
-rw-r--r--source4/client/client.c22
-rw-r--r--source4/ntvfs/cifs_posix_cli/svfs_util.c2
-rw-r--r--source4/ntvfs/posix/pvfs_dirlist.c8
-rw-r--r--source4/ntvfs/simple/svfs_util.c2
-rw-r--r--source4/torture/masktest.c2
5 files changed, 13 insertions, 23 deletions
diff --git a/source4/client/client.c b/source4/client/client.c
index 10d027b5e0b..1182e5be013 100644
--- a/source4/client/client.c
+++ b/source4/client/client.c
@@ -302,27 +302,17 @@ static int cmd_cd(struct smbclient_context *ctx, const char **args)
static bool mask_match(struct smbcli_state *c, const char *string,
const char *pattern, bool is_case_sensitive)
{
- char *p2, *s2;
- bool ret;
+ int ret;
if (ISDOTDOT(string))
string = ".";
if (ISDOT(pattern))
return false;
-
- if (is_case_sensitive)
- return ms_fnmatch_protocol(
- pattern, string, c->transport->negotiate.protocol,
- true) == 0;
-
- p2 = strlower_talloc(NULL, pattern);
- s2 = strlower_talloc(NULL, string);
- ret = ms_fnmatch_protocol(p2, s2, c->transport->negotiate.protocol,
- true) == 0;
- talloc_free(p2);
- talloc_free(s2);
-
- return ret;
+
+ ret = ms_fnmatch_protocol(pattern, string,
+ c->transport->negotiate.protocol,
+ is_case_sensitive);
+ return (ret == 0);
}
diff --git a/source4/ntvfs/cifs_posix_cli/svfs_util.c b/source4/ntvfs/cifs_posix_cli/svfs_util.c
index ec2e9330806..0efab832199 100644
--- a/source4/ntvfs/cifs_posix_cli/svfs_util.c
+++ b/source4/ntvfs/cifs_posix_cli/svfs_util.c
@@ -106,7 +106,7 @@ struct cifspsx_dir *cifspsx_list_unix(TALLOC_CTX *mem_ctx, struct ntvfs_request
/* check it matches the wildcard pattern */
if (ms_fnmatch_protocol(low_mask, low_name, PROTOCOL_NT1,
- true) != 0) {
+ false) != 0) {
continue;
}
diff --git a/source4/ntvfs/posix/pvfs_dirlist.c b/source4/ntvfs/posix/pvfs_dirlist.c
index d86fce4e852..a5034040154 100644
--- a/source4/ntvfs/posix/pvfs_dirlist.c
+++ b/source4/ntvfs/posix/pvfs_dirlist.c
@@ -200,7 +200,7 @@ const char *pvfs_list_next(struct pvfs_dir *dir, off_t *ofs)
(*ofs) = DIR_OFFSET_DOTDOT;
dir->offset = *ofs;
if (ms_fnmatch_protocol(dir->pattern, ".", protocol,
- true) == 0) {
+ false) == 0) {
dcache_add(dir, ".");
return ".";
}
@@ -210,7 +210,7 @@ const char *pvfs_list_next(struct pvfs_dir *dir, off_t *ofs)
(*ofs) = DIR_OFFSET_BASE;
dir->offset = *ofs;
if (ms_fnmatch_protocol(dir->pattern, "..", protocol,
- true) == 0) {
+ false) == 0) {
dcache_add(dir, "..");
return "..";
}
@@ -231,11 +231,11 @@ const char *pvfs_list_next(struct pvfs_dir *dir, off_t *ofs)
}
if (ms_fnmatch_protocol(dir->pattern, dname, protocol,
- true) != 0) {
+ false) != 0) {
char *short_name = pvfs_short_name_component(dir->pvfs, dname);
if (short_name == NULL ||
ms_fnmatch_protocol(dir->pattern, short_name,
- protocol, true) != 0) {
+ protocol, false) != 0) {
talloc_free(short_name);
continue;
}
diff --git a/source4/ntvfs/simple/svfs_util.c b/source4/ntvfs/simple/svfs_util.c
index 21f20c58ac8..d1901ae0199 100644
--- a/source4/ntvfs/simple/svfs_util.c
+++ b/source4/ntvfs/simple/svfs_util.c
@@ -102,7 +102,7 @@ struct svfs_dir *svfs_list_unix(TALLOC_CTX *mem_ctx, struct ntvfs_request *req,
/* check it matches the wildcard pattern */
if (ms_fnmatch_protocol(low_mask, low_name, PROTOCOL_NT1,
- true) != 0) {
+ false) != 0) {
continue;
}
diff --git a/source4/torture/masktest.c b/source4/torture/masktest.c
index e6e7f4e4245..2097de4e5fe 100644
--- a/source4/torture/masktest.c
+++ b/source4/torture/masktest.c
@@ -50,7 +50,7 @@ static bool reg_match_one(struct smbcli_state *cli, const char *pattern, const c
if (ISDOTDOT(file)) file = ".";
return ms_fnmatch_protocol(
- pattern, file, cli->transport->negotiate.protocol, true)==0;
+ pattern, file, cli->transport->negotiate.protocol, false)==0;
}
static char *reg_test(struct smbcli_state *cli, TALLOC_CTX *mem_ctx, const char *pattern, const char *long_name, const char *short_name)