From 45f998293034f399ebf8c76ff41c8b9b55b86776 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 28 Aug 1997 18:59:52 +0000 Subject: 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) --- source3/smbd/mangle.c | 2 +- source3/smbd/server.c | 2 +- source3/smbd/trans2.c | 9 +++------ 3 files changed, 5 insertions(+), 8 deletions(-) (limited to 'source3') diff --git a/source3/smbd/mangle.c b/source3/smbd/mangle.c index 96e787b07fb..a08402a85ea 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 4259bda958b..93724a98612 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 80529240590..28bff088437 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) -- cgit