]> granicus.if.org Git - php/commitdiff
Fixed bug #27559 (Corrected open_basedir resolving logic).
authorIlia Alshanetsky <iliaa@php.net>
Tue, 16 Mar 2004 00:31:22 +0000 (00:31 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 16 Mar 2004 00:31:22 +0000 (00:31 +0000)
main/fopen_wrappers.c

index efa2a6dedaa24f2d7e9a45d6d5bf66ea9e863655..d29a33b5b7c2aea77c0cb6c9342ec7c272c7ca70 100644 (file)
@@ -131,11 +131,13 @@ PHPAPI int php_check_specific_open_basedir(const char *basedir, const char *path
        if ((expand_filepath(path, resolved_name TSRMLS_CC) != NULL) && (expand_filepath(local_open_basedir, resolved_basedir TSRMLS_CC) != NULL)) {
                /* Handler for basedirs that end with a / */
                resolved_basedir_len = strlen(resolved_basedir);
-               if (resolved_basedir[resolved_basedir_len -1] != PHP_DIR_SEPARATOR) {
-                       resolved_basedir[resolved_basedir_len] = PHP_DIR_SEPARATOR;
-                       resolved_basedir[++resolved_basedir_len] = '\0';
+               if (basedir[strlen(basedir) - 1] == PHP_DIR_SEPARATOR) {
+                       if (resolved_basedir[resolved_basedir_len - 1] == '/') {
+                               resolved_basedir[resolved_basedir_len - 1] = PHP_DIR_SEPARATOR;
+                               resolved_basedir[++resolved_basedir_len] = '\0';
+                       }
                }
-               
+
                if (path[strlen(path)-1] == PHP_DIR_SEPARATOR) {
                        resolved_name_len = strlen(resolved_name);
                        if (resolved_name[resolved_name_len - 1] != PHP_DIR_SEPARATOR) {