diff options
author | Jeremy Allison <jra@samba.org> | 2007-03-08 02:51:41 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:18:28 -0500 |
commit | 1722ea20db2d531f92fb18fa5783f09258727c64 (patch) | |
tree | 4644e52dd2a2b96c293aa951a5fb2dd0d8f42814 | |
parent | 16cb22d6b83c502dec1b297c544c05d89714b3d6 (diff) | |
download | samba-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.c | 9 |
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; } |