]> granicus.if.org Git - php/commitdiff
MFH: add missing open_basedir checks to CGI
authorAntony Dovgal <tony2001@php.net>
Mon, 4 Jun 2007 15:38:12 +0000 (15:38 +0000)
committerAntony Dovgal <tony2001@php.net>
Mon, 4 Jun 2007 15:38:12 +0000 (15:38 +0000)
sapi/cgi/cgi_main.c

index 404641fc4c765c244c8a919e9be759f5d8b1e5fd..3e70e45523ed53210e7f5ee5e8a7d6fa0a9311ad 100644 (file)
@@ -1682,7 +1682,9 @@ consult the installation file that came with this distribution, or visit \n\
                */
                retval = FAILURE;
                if (cgi || SG(request_info).path_translated) {
-                       retval = php_fopen_primary_script(&file_handle TSRMLS_CC);
+                       if (!php_check_open_basedir(SG(request_info).path_translated TSRMLS_CC)) {
+                               retval = php_fopen_primary_script(&file_handle TSRMLS_CC);
+                       }
                }
                /* 
                        if we are unable to open path_translated and we are not
@@ -1704,9 +1706,21 @@ consult the installation file that came with this distribution, or visit \n\
                                goto fastcgi_request_done;
                        }
 #endif
+
+                       STR_FREE(SG(request_info).path_translated);
+
+                       if (free_query_string && SG(request_info).query_string) {
+                               free(SG(request_info).query_string);
+                               SG(request_info).query_string = NULL;
+                       }
+
                        php_request_shutdown((void *) 0);
                        SG(server_context) = NULL;
                        php_module_shutdown(TSRMLS_C);
+                       sapi_shutdown();
+#ifdef ZTS
+                       tsrm_shutdown();
+#endif
                        return FAILURE;
                }