tony2001                Fri Jun  1 13:33:48 2007 UTC

  Added files:                 
    /php-src/ext/standard/tests/general_functions       bug41518.phpt 

  Modified files:              
    /php-src/main       fopen_wrappers.c 
  Log:
  fix #41518 (file_exists() warns of open_basedir restriction on non-existent 
file)
  
  
http://cvs.php.net/viewvc.cgi/php-src/main/fopen_wrappers.c?r1=1.193&r2=1.194&diff_format=u
Index: php-src/main/fopen_wrappers.c
diff -u php-src/main/fopen_wrappers.c:1.193 php-src/main/fopen_wrappers.c:1.194
--- php-src/main/fopen_wrappers.c:1.193 Wed Apr 18 11:59:03 2007
+++ php-src/main/fopen_wrappers.c       Fri Jun  1 13:33:48 2007
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: fopen_wrappers.c,v 1.193 2007/04/18 11:59:03 dmitry Exp $ */
+/* $Id: fopen_wrappers.c,v 1.194 2007/06/01 13:33:48 tony2001 Exp $ */
 
 /* {{{ includes
  */
@@ -229,8 +229,8 @@
                        }
                }
 
+               resolved_name_len = strlen(resolved_name);
                if (path_tmp[path_len - 1] == PHP_DIR_SEPARATOR) {
-                       resolved_name_len = strlen(resolved_name);
                        if (resolved_name[resolved_name_len - 1] != 
PHP_DIR_SEPARATOR) {
                                resolved_name[resolved_name_len] = 
PHP_DIR_SEPARATOR;
                                resolved_name[++resolved_name_len] = '\0';
@@ -246,6 +246,16 @@
                        /* File is in the right directory */
                        return 0;
                } else {
+                       /* /openbasedir/ and /openbasedir are the same 
directory */
+                       if (resolved_basedir_len == (resolved_name_len + 1) && 
resolved_basedir[resolved_basedir_len - 1] == PHP_DIR_SEPARATOR) {
+#if defined(PHP_WIN32) || defined(NETWARE)
+                               if (strncasecmp(resolved_basedir, 
resolved_name, resolved_name_len) == 0) {
+#else
+                               if (strncmp(resolved_basedir, resolved_name, 
resolved_name_len) == 0) {
+#endif
+                                       return 0;
+                               }
+                       }
                        return -1;
                }
        } else {

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/general_functions/bug41518.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/general_functions/bug41518.phpt
+++ php-src/ext/standard/tests/general_functions/bug41518.phpt
--TEST--
Bug #41518 (file_exists() warns of open_basedir restriction on non-existent 
file)
--SKIPIF--
<?php
/* let's use /tmp here */
$tmp_dir = "/tmp";
if (!is_dir($tmp_dir) || realpath($tmp_dir) !== $tmp_dir) {
        die("skip");
}
?>
--INI--
open_basedir=/tmp/
--FILE--
<?php

$tmp_dir = "/tmp";
$tmp_file = $tmp_dir."/bug41418.tmp";

touch($tmp_file);
var_dump(file_exists($tmp_file)); //exists
var_dump(file_exists($tmp_file."nosuchfile")); //doesn't exist

echo "Done\n";
?>
--EXPECTF--     
bool(true)
bool(false)
Done

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to