summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2007-03-08 02:51:41 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:18:28 -0500
commit1722ea20db2d531f92fb18fa5783f09258727c64 (patch)
tree4644e52dd2a2b96c293aa951a5fb2dd0d8f42814
parent16cb22d6b83c502dec1b297c544c05d89714b3d6 (diff)
downloadsamba-1722ea20db2d531f92fb18fa5783f09258727c64.tar.gz
samba-1722ea20db2d531f92fb18fa5783f09258727c64.tar.xz
samba-1722ea20db2d531f92fb18fa5783f09258727c64.zip
r21758: Fix a very specific dfs bug when passing in POSIX
pathnames. When we're working out how much we've consumed we need to backtrack by either a '/' or '\\' component, as both are valid separators. Jeremy.
-rw-r--r--source/smbd/msdfs.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/source/smbd/msdfs.c b/source/smbd/msdfs.c
index 25c9c594975..c34512493ff 100644
--- a/source/smbd/msdfs.c
+++ b/source/smbd/msdfs.c
@@ -92,7 +92,7 @@ static BOOL parse_processed_dfs_path(char* pathname, struct dfs_path *pdp, BOOL
ZERO_STRUCTP(pdp);
trim_char(temp,sepchar,sepchar);
- DEBUG(10,("temp in parse_processed_dfs_path: .%s. after trimming \\'s\n",temp));
+ DEBUG(10,("temp in parse_processed_dfs_path: .%s. after trimming /'s\n",temp));
/* now tokenize */
/* parse out hostname */
@@ -401,12 +401,15 @@ static BOOL resolve_dfs_path(TALLOC_CTX *ctx,
*/
if (consumedcntp) {
- char *q;
pstring buf;
pstrcpy(buf, dfspath);
trim_char(buf, '\0', '\\');
for (; consumed_level; consumed_level--) {
- q = strrchr_m(buf, '\\');
+ char *q, *q1, *q2;
+ /* Either '\\' or '/' may be a separator. */
+ q1 = strrchr_m(buf, '\\');
+ q2 = strrchr_m(buf, '/');
+ q = MAX(q1,q2);
if (q) {
*q = 0;
}