From 6b0f88e82859fb69421ea71b773d87cd56290275 Mon Sep 17 00:00:00 2001 From: David Hedbor Date: Fri, 8 Jun 2001 16:31:22 +0000 Subject: Fix segfault when env vars are missing. --- sapi/caudium/caudium.c | 68 +++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 31 deletions(-) (limited to 'sapi/caudium') diff --git a/sapi/caudium/caudium.c b/sapi/caudium/caudium.c index 1f6768af84..44e296b51c 100644 --- a/sapi/caudium/caudium.c +++ b/sapi/caudium/caudium.c @@ -474,50 +474,56 @@ static zend_module_entry php_caudium_module = { }; -static void sapi_caudium_register_variables(zval *track_vars_array ELS_DC SLS_DC PLS_DC) +INLINE static void low_sapi_caudium_register_variables(zval *track_vars_array ELS_DC SLS_DC PLS_DC) { + char *tmp; php_register_variable("PHP_SELF", SG(request_info).request_uri, track_vars_array ELS_CC PLS_CC); php_register_variable("GATEWAY_INTERFACE", "CGI/1.1", track_vars_array ELS_CC PLS_CC); - php_register_variable("REQUEST_METHOD", (char *) SG(request_info).request_method, + php_register_variable("REQUEST_METHOD", + (char *) SG(request_info).request_method, track_vars_array ELS_CC PLS_CC); php_register_variable("REQUEST_URI", SG(request_info).request_uri, track_vars_array ELS_CC PLS_CC); php_register_variable("PATH_TRANSLATED", SG(request_info).path_translated, track_vars_array ELS_CC PLS_CC); - php_register_variable("SERVER_NAME", lookup_string_header("SERVER_NAME", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("SERVER_PORT", lookup_string_header("SERVER_PORT", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("SERVER_PROTOCOL", lookup_string_header("SERVER_PROTOCOL", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("SCRIPT_NAME", lookup_string_header("SCRIPT_NAME", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("SCRIPT_FILENAME", lookup_string_header("SCRIPT_FILENAME", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("REMOTE_ADDR", lookup_string_header("REMOTE_ADDR", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("REMOTE_PORT", lookup_string_header("REMOTE_PORT", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("DOCUMENT_ROOT", lookup_string_header("DOCUMENT_ROOT", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("HTTP_CONNECTION", lookup_string_header("HTTP_CONNECTION", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("HTTP_USER_AGENT", lookup_string_header("HTTP_USER_AGENT", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("DOCUMENT_ROOT", lookup_string_header("DOCUMENT_ROOT", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("QUERY_STRING", lookup_string_header("QUERY_STRING", ""), - track_vars_array ELS_CC PLS_CC); - php_register_variable("REMOTE_USER", lookup_string_header("REMOTE_USER", NULL), - track_vars_array ELS_CC PLS_CC); - php_register_variable("REMOTE_PASSWORD", lookup_string_header("REMOTE_PASSWORD", NULL), - track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("SERVER_NAME", NULL)) != NULL) + php_register_variable("SERVER_NAME", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("SERVER_PORT", NULL)) != NULL) + php_register_variable("SERVER_PORT", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("SERVER_PROTOCOL", NULL)) != NULL) + php_register_variable("SERVER_PROTOCOL", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("SCRIPT_NAME", NULL)) != NULL) + php_register_variable("SCRIPT_NAME", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("SCRIPT_FILENAME", NULL)) != NULL) + php_register_variable("SCRIPT_FILENAME", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("REMOTE_ADDR", NULL)) != NULL) + php_register_variable("REMOTE_ADDR", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("REMOTE_PORT", NULL)) != NULL) + php_register_variable("REMOTE_PORT", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("DOCUMENT_ROOT", NULL)) != NULL) + php_register_variable("DOCUMENT_ROOT", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("HTTP_CONNECTION", NULL)) != NULL) + php_register_variable("HTTP_CONNECTION", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("HTTP_USER_AGENT", NULL)) != NULL) + php_register_variable("HTTP_USER_AGENT", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("DOCUMENT_ROOT", NULL)) != NULL) + php_register_variable("DOCUMENT_ROOT", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("QUERY_STRING", "")) != NULL) + php_register_variable("QUERY_STRING", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("REMOTE_USER", NULL)) != NULL) + php_register_variable("REMOTE_USER", tmp, track_vars_array ELS_CC PLS_CC); + if( (tmp = lookup_string_header("REMOTE_PASSWORD", NULL)) != NULL) + php_register_variable("REMOTE_PASSWORD", tmp, track_vars_array ELS_CC PLS_CC); + } - +static void sapi_caudium_register_variables(zval *track_vars_array ELS_DC SLS_DC PLS_DC) +{ + THREAD_SAFE_RUN(low_sapi_caudium_register_variables(track_vars_array ELS_CC SLS_CC PLS_CC), "register_variables"); +} /* this structure is static (as in "it does not change") */ static sapi_module_struct caudium_sapi_module = { -- cgit v1.2.1