mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
r21759: Fix the same bug in a more elegant way, strrchr_m
is an expensive call....
Jeremy.
(This used to be commit 321a136dbc
)
This commit is contained in:
parent
c4ea95fd30
commit
db32963181
@ -331,6 +331,7 @@ static BOOL resolve_dfs_path(TALLOC_CTX *ctx,
|
||||
SMB_STRUCT_STAT sbuf;
|
||||
NTSTATUS status;
|
||||
pstring reqpath;
|
||||
pstring local_dfspath;
|
||||
|
||||
if (!dp || !conn) {
|
||||
DEBUG(1,("resolve_dfs_path: NULL dfs_path* or NULL connection_struct*!\n"));
|
||||
@ -385,6 +386,12 @@ static BOOL resolve_dfs_path(TALLOC_CTX *ctx,
|
||||
return True;
|
||||
}
|
||||
|
||||
/* Prepare to test only for '/' components in the given path,
|
||||
* so replace all '\\' characters with '/'. */
|
||||
|
||||
pstrcpy(local_dfspath, dfspath);
|
||||
string_replace(local_dfspath, '\\', '/');
|
||||
|
||||
/* redirect if any component in the path is a link */
|
||||
pstrcpy(reqpath, localpath);
|
||||
p = strrchr_m(reqpath, '/');
|
||||
@ -402,14 +409,12 @@ static BOOL resolve_dfs_path(TALLOC_CTX *ctx,
|
||||
|
||||
if (consumedcntp) {
|
||||
pstring buf;
|
||||
pstrcpy(buf, dfspath);
|
||||
trim_char(buf, '\0', '\\');
|
||||
pstrcpy(buf, local_dfspath);
|
||||
trim_char(buf, '\0', '/');
|
||||
for (; consumed_level; consumed_level--) {
|
||||
char *q, *q1, *q2;
|
||||
/* Either '\\' or '/' may be a separator. */
|
||||
q1 = strrchr_m(buf, '\\');
|
||||
q2 = strrchr_m(buf, '/');
|
||||
q = MAX(q1,q2);
|
||||
char *q;
|
||||
/* We made sure only '/' may be a separator above. */
|
||||
q = strrchr_m(buf, '/');
|
||||
if (q) {
|
||||
*q = 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user