mirror of
https://github.com/php/php-src.git
synced 2024-11-25 02:44:58 +08:00
- open_basedir symlink support for Windows
This commit is contained in:
parent
2b04364852
commit
77d307ccbf
1
NEWS
1
NEWS
@ -10,6 +10,7 @@
|
||||
(Andrey)
|
||||
- Improved support for is_link and related functions on Windows. (Pierre)
|
||||
|
||||
- Implemented symbolic links support for open_basedir checks. (Pierre)
|
||||
- Implemented FR #51804, SplFileInfo::getLinkTarget on Windows. (Pierre)
|
||||
|
||||
- Fixed symbolic resolution support when the target is a DFS share. (Pierre)
|
||||
|
@ -457,6 +457,14 @@ UPGRADE NOTES - PHP 5.3
|
||||
- Firebird and SNMP support are no longer available on Windows. Firebird support
|
||||
may be reintroduced in the future.
|
||||
|
||||
=====================
|
||||
11.1 New in PHP 5.3.4
|
||||
=====================
|
||||
|
||||
- open_basedir supports now symbolic links (checks the target).
|
||||
- is_link and SplFileInfo symbolic links related method are now fully supported
|
||||
(on Windows Vista or later).
|
||||
|
||||
===================
|
||||
12. New in PHP 5.3:
|
||||
===================
|
||||
|
@ -173,21 +173,27 @@ PHPAPI int php_check_specific_open_basedir(const char *basedir, const char *path
|
||||
memcpy(path_tmp, resolved_name, path_len + 1); /* safe */
|
||||
|
||||
while (VCWD_REALPATH(path_tmp, resolved_name) == NULL) {
|
||||
#ifdef HAVE_SYMLINK
|
||||
if (nesting_level == 0) {
|
||||
int ret;
|
||||
char buf[MAXPATHLEN];
|
||||
#if defined(PHP_WIN32) || defined(HAVE_SYMLINK)
|
||||
#if defined(PHP_WIN32)
|
||||
if (EG(windows_version_info).dwMajorVersion > 5) {
|
||||
#endif
|
||||
if (nesting_level == 0) {
|
||||
int ret;
|
||||
char buf[MAXPATHLEN];
|
||||
|
||||
ret = readlink(path_tmp, buf, MAXPATHLEN - 1);
|
||||
if (ret < 0) {
|
||||
/* not a broken symlink, move along.. */
|
||||
} else {
|
||||
/* put the real path into the path buffer */
|
||||
memcpy(path_tmp, buf, ret);
|
||||
path_tmp[ret] = '\0';
|
||||
ret = php_sys_readlink(path_tmp, buf, MAXPATHLEN - 1);
|
||||
if (ret < 0) {
|
||||
/* not a broken symlink, move along.. */
|
||||
} else {
|
||||
/* put the real path into the path buffer */
|
||||
memcpy(path_tmp, buf, ret);
|
||||
path_tmp[ret] = '\0';
|
||||
}
|
||||
}
|
||||
#if defined(PHP_WIN32)
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(PHP_WIN32) || defined(NETWARE)
|
||||
path_file = strrchr(path_tmp, DEFAULT_SLASH);
|
||||
|
Loading…
Reference in New Issue
Block a user