summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1997-08-28 18:59:52 +0000
committerJeremy Allison <jra@samba.org>1997-08-28 18:59:52 +0000
commit45f998293034f399ebf8c76ff41c8b9b55b86776 (patch)
tree1ad1c8b8e8a14f585591e9019ee79a62e0d190cc /source3/smbd
parent22e4d4e9d44577593d53ad84e77c9c078774d2e9 (diff)
downloadsamba-45f998293034f399ebf8c76ff41c8b9b55b86776.tar.gz
samba-45f998293034f399ebf8c76ff41c8b9b55b86776.tar.bz2
samba-45f998293034f399ebf8c76ff41c8b9b55b86776.zip
mangle.c: Fixed bug that caused string to run off the end of the mangled map.
server.c: Changed comparison from dname to name2 - seems correct - don't know why I changed it originally. hmmmmm. trans2.c: Made lanman2 code more similar to scan_directory(). I should make the trans2 code call scan_dir as they are so similar. Jeremy(jallison@whistle.com). (This used to be commit 3909576849025ed21e5282abc892ae7582ee0275)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/mangle.c2
-rw-r--r--source3/smbd/server.c2
-rw-r--r--source3/smbd/trans2.c9
3 files changed, 5 insertions, 8 deletions
diff --git a/source3/smbd/mangle.c b/source3/smbd/mangle.c
index 96e787b07f..a08402a85e 100644
--- a/source3/smbd/mangle.c
+++ b/source3/smbd/mangle.c
@@ -414,9 +414,9 @@ static void do_fwd_mangled_map(char *s, char *MangledMap)
while (*start) {
while ((*start) && (*start != '('))
start++;
- start++; /* Skip the ( */
if (!*start)
continue; /* Always check for the end. */
+ start++; /* Skip the ( */
end = start; /* Search for the ' ' or a ')' */
DEBUG(5,("Start of first in pair '%s'\n", start));
while ((*end) && !((*end == ' ') || (*end == ')')))
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 4259bda958..93724a9861 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -397,7 +397,7 @@ static BOOL scan_directory(char *path, char *name,int cnum,BOOL docache)
if (!name_map_mangle(name2,False,SNUM(cnum))) continue;
if ((mangled && mangled_equal(name,name2))
- || fname_equal(name, dname))
+ || fname_equal(name, name2)) /* name2 here was changed to dname - since 1.9.16p2 - not sure of reason (jra) */
{
/* we've found the file, change it's name and return */
if (docache) DirCacheAdd(path,name,dname,SNUM(cnum));
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 8052924059..28bff08843 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -329,7 +329,8 @@ static int get_lanman2_dir_entry(int cnum,char *path_mask,int dirtype,int info_l
strcpy(fname,dname);
- if(mask_match(fname, mask, case_sensitive, True))
+ if(name_map_mangle(fname,False,SNUM(cnum)) &&
+ mask_match(fname, mask, case_sensitive, True))
{
BOOL isdots = (strequal(fname,"..") || strequal(fname,"."));
if (dont_descend && !isdots)
@@ -341,7 +342,7 @@ static int get_lanman2_dir_entry(int cnum,char *path_mask,int dirtype,int info_l
strcpy(pathreal,Connections[cnum].dirpath);
if(needslash)
strcat(pathreal,"/");
- strcat(pathreal,fname);
+ strcat(pathreal,dname);
if (sys_stat(pathreal,&sbuf) != 0)
{
DEBUG(5,("get_lanman2_dir_entry:Couldn't stat [%s] (%s)\n",pathreal,strerror(errno)));
@@ -368,13 +369,9 @@ static int get_lanman2_dir_entry(int cnum,char *path_mask,int dirtype,int info_l
}
}
-
-
p = pdata;
nameptr = p;
- name_map_mangle(fname,False,SNUM(cnum));
-
nt_extmode = mode ? mode : NT_FILE_ATTRIBUTE_NORMAL;
switch (info_level)