pajoye Fri, 10 Sep 2010 17:45:13 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=303260
Log:
- open_basedir symlink support for Windows
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/UPGRADING
U php/php-src/branches/PHP_5_3/main/fopen_wrappers.c
U php/php-src/trunk/main/fopen_wrappers.c
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2010-09-10 15:11:03 UTC (rev 303259)
+++ php/php-src/branches/PHP_5_3/NEWS 2010-09-10 17:45:13 UTC (rev 303260)
@@ -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)
Modified: php/php-src/branches/PHP_5_3/UPGRADING
===================================================================
--- php/php-src/branches/PHP_5_3/UPGRADING 2010-09-10 15:11:03 UTC (rev
303259)
+++ php/php-src/branches/PHP_5_3/UPGRADING 2010-09-10 17:45:13 UTC (rev
303260)
@@ -457,6 +457,14 @@
- 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:
===================
Modified: php/php-src/branches/PHP_5_3/main/fopen_wrappers.c
===================================================================
--- php/php-src/branches/PHP_5_3/main/fopen_wrappers.c 2010-09-10 15:11:03 UTC
(rev 303259)
+++ php/php-src/branches/PHP_5_3/main/fopen_wrappers.c 2010-09-10 17:45:13 UTC
(rev 303260)
@@ -173,21 +173,27 @@
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);
Modified: php/php-src/trunk/main/fopen_wrappers.c
===================================================================
--- php/php-src/trunk/main/fopen_wrappers.c 2010-09-10 15:11:03 UTC (rev
303259)
+++ php/php-src/trunk/main/fopen_wrappers.c 2010-09-10 17:45:13 UTC (rev
303260)
@@ -172,21 +172,27 @@
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);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php