]> granicus.if.org Git - php/commitdiff
Better fix for bug #41655
authorDmitry Stogov <dmitry@php.net>
Mon, 25 Jun 2007 08:40:36 +0000 (08:40 +0000)
committerDmitry Stogov <dmitry@php.net>
Mon, 25 Jun 2007 08:40:36 +0000 (08:40 +0000)
ext/standard/dir.c
ext/standard/tests/file/bug41655_1.phpt

index a26e0c644040678d0c8e5284cf4ec47aabfa0732..8c0f0fb3dc45ab6eb867a48123d5f96668ddbcaf 100644 (file)
@@ -423,16 +423,15 @@ PHP_FUNCTION(glob)
 #endif
 
        if (PG(open_basedir) && *PG(open_basedir)) {
-               size_t base_len = php_dirname(pattern, strlen(pattern));
-               char pos = pattern[base_len];
-
-               pattern[base_len] = '\0';
-
+               int pattern_len = strlen(pattern);
+               char *basename = estrndup(pattern, pattern_len);
+               
+               php_dirname(basename, pattern_len);
                if (php_check_open_basedir(pattern TSRMLS_CC)) {
+                       efree(basename);
                        RETURN_FALSE;
                }
-
-               pattern[base_len] = pos;
+               efree(basename);
        }
 
        globbuf.gl_offs = 0;
index 9b047bcace5081096c8ba5ad1c4218e9d20eddf7..9338ebd817d0b9137c1359fa39aefb80bca3d2ae 100644 (file)
@@ -7,4 +7,4 @@ open_basedir=/tmp
        $a=glob("./*.jpeg");
 ?>
 --EXPECTF--
-Warning: glob() [%s]: open_basedir restriction in effect. File(.) is not within the allowed path(s): (/tmp) in %s on line %d
+Warning: glob(): open_basedir restriction in effect. File(.) is not within the allowed path(s): (/tmp) in %s on line %d