]> granicus.if.org Git - php/commitdiff
Fix segfault when env vars are missing.
authorDavid Hedbor <neotron@php.net>
Fri, 8 Jun 2001 16:31:22 +0000 (16:31 +0000)
committerDavid Hedbor <neotron@php.net>
Fri, 8 Jun 2001 16:31:22 +0000 (16:31 +0000)
sapi/caudium/caudium.c

index 1f6768af840e46741d4689bf8990e4a2ee48f565..44e296b51ccf51279eae7b62aec2a7719939fec1 100644 (file)
@@ -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 = {