diff options
author | Andi Gutmans <andi@php.net> | 2000-06-15 22:40:52 +0000 |
---|---|---|
committer | Andi Gutmans <andi@php.net> | 2000-06-15 22:40:52 +0000 |
commit | fcefeee914756eb4b96011c75fa6a12d5c8e1b5b (patch) | |
tree | 7a8777226b10dfd371ef19e3b0bb1b7f1fe3868e /sapi/cgi | |
parent | e48192fbb52d844b501d3017541f6349dbcfb672 (diff) | |
download | php-git-fcefeee914756eb4b96011c75fa6a12d5c8e1b5b.tar.gz |
- Try and fix crash with CGI.
- Please check out the comment I wrote in init_request_info(). There was a
- lot of code there which was running for no apparent reason. Should it be
- removed or should it actually run?
Diffstat (limited to 'sapi/cgi')
-rw-r--r-- | sapi/cgi/cgi_main.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index 3c9612f90b..b2e1cea31a 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -265,6 +265,10 @@ static void php_cgi_usage(char *argv0) static void init_request_info(SLS_D) { char *content_length = getenv("CONTENT_LENGTH"); + +#if 0 +/* SG(request_info).path_translated is always set to NULL at the end of this function + call so why the hell did this code exist in the first place? Am I missing something? */ char *script_filename; @@ -299,6 +303,8 @@ static void init_request_info(SLS_D) } #endif +#endif /* 0 */ + SG(request_info).request_method = getenv("REQUEST_METHOD"); SG(request_info).query_string = getenv("QUERY_STRING"); SG(request_info).request_uri = getenv("PATH_INFO"); @@ -359,7 +365,6 @@ int main(int argc, char *argv[]) int cgi_started=0; int behavior=PHP_MODE_STANDARD; int no_headers=0; - int free_path_translated=0; int orig_optind=ap_php_optind; char *orig_optarg=ap_php_optarg; char *argv0=NULL; @@ -498,7 +503,6 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine } cgi_started=1; SG(request_info).path_translated = estrdup(ap_php_optarg); - free_path_translated=1; /* break missing intentionally */ case 'q': no_headers = 1; @@ -550,8 +554,8 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine CG(extended_info) = 1; break; case 'h': - case '?': - no_headers = 1; + case '?': + no_headers = 1; php_output_startup(); SG(headers_sent) = 1; php_cgi_usage(argv[0]); @@ -561,7 +565,8 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine case 'd': define_command_line_ini_entry(ap_php_optarg); break; - case 'g': { + case 'g': + { char *arg = estrdup(ap_php_optarg); zend_llist_add_element(&global_vars, &arg); @@ -612,16 +617,15 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine SG(request_info).query_string = s; } if (!SG(request_info).path_translated && argc > ap_php_optind) - SG(request_info).path_translated = argv[ap_php_optind]; - } + SG(request_info).path_translated = estrdup(argv[ap_php_optind]); + } else if (cgi) { /* If for some reason the CGI interface is not setting the PATH_TRANSLATED correctly, SG(request_info).path_translated is NULL. We still call php_fopen_primary_script, because if you set doc_root or user_dir configuration directives, PATH_INFO is used to construct the filename as a side effect of php_fopen_primary_script. */ - if(cgi) { - SG(request_info).path_translated = getenv("PATH_TRANSLATED"); + SG(request_info).path_translated = estrdup(getenv("PATH_TRANSLATED")); } if (cgi || SG(request_info).path_translated) { file_handle.handle.fp = php_fopen_primary_script(); @@ -681,8 +685,9 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine } php_header(); /* Make sure headers have been sent */ - if (free_path_translated) - efree(SG(request_info).path_translated); + + STR_FREE(SG(request_info).path_translated); + php_request_shutdown((void *) 0); php_module_shutdown(); #ifdef ZTS |