mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Fixed bug #51860 (Include fails with toplevel symlink to /)
This commit is contained in:
parent
c5bb1710bd
commit
ce9f1a4313
2 changed files with 16 additions and 3 deletions
1
NEWS
1
NEWS
|
@ -12,6 +12,7 @@ PHP NEWS
|
|||
(Dmitry, Laruence)
|
||||
. Fix bug #60895 (Possible invalid handler usage in windows random
|
||||
functions). (Pierre)
|
||||
. Fixed bug #51860 (Include fails with toplevel symlink to /). (Dmitry)
|
||||
|
||||
- Firebird Database extension (ibase):
|
||||
. Fixed bug #60802 (ibase_trans() gives segfault when passing params).
|
||||
|
|
|
@ -773,6 +773,9 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
|||
|
||||
while (1) {
|
||||
if (len <= start) {
|
||||
if (link_is_dir) {
|
||||
*link_is_dir = 1;
|
||||
}
|
||||
return start;
|
||||
}
|
||||
|
||||
|
@ -789,6 +792,10 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
|||
continue;
|
||||
} else if (i == len - 2 && path[i] == '.' && path[i+1] == '.') {
|
||||
/* remove '..' and previous directory */
|
||||
is_dir = 1;
|
||||
if (link_is_dir) {
|
||||
*link_is_dir = 1;
|
||||
}
|
||||
if (i - 1 <= start) {
|
||||
return start ? start : len;
|
||||
}
|
||||
|
@ -1214,9 +1221,14 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
|
|||
return 1;
|
||||
}
|
||||
memcpy(resolved_path, state->cwd, state_cwd_length);
|
||||
resolved_path[state_cwd_length] = DEFAULT_SLASH;
|
||||
memcpy(resolved_path + state_cwd_length + 1, path, path_length + 1);
|
||||
path_length += state_cwd_length + 1;
|
||||
if (resolved_path[state_cwd_length-1] == DEFAULT_SLASH) {
|
||||
memcpy(resolved_path + state_cwd_length, path, path_length + 1);
|
||||
path_length += state_cwd_length;
|
||||
} else {
|
||||
resolved_path[state_cwd_length] = DEFAULT_SLASH;
|
||||
memcpy(resolved_path + state_cwd_length + 1, path, path_length + 1);
|
||||
path_length += state_cwd_length + 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
#ifdef TSRM_WIN32
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue