thetaphi                Tue Mar  6 18:15:25 2007 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/sapi/nsapi nsapi.c 
  Log:
  remove (large) static buffers for header names and request uri
  
http://cvs.php.net/viewvc.cgi/php-src/sapi/nsapi/nsapi.c?r1=1.69.2.3.2.4&r2=1.69.2.3.2.5&diff_format=u
Index: php-src/sapi/nsapi/nsapi.c
diff -u php-src/sapi/nsapi/nsapi.c:1.69.2.3.2.4 
php-src/sapi/nsapi/nsapi.c:1.69.2.3.2.5
--- php-src/sapi/nsapi/nsapi.c:1.69.2.3.2.4     Tue Mar  6 15:43:49 2007
+++ php-src/sapi/nsapi/nsapi.c  Tue Mar  6 18:15:25 2007
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: nsapi.c,v 1.69.2.3.2.4 2007/03/06 15:43:49 thetaphi Exp $ */
+/* $Id: nsapi.c,v 1.69.2.3.2.5 2007/03/06 18:15:25 thetaphi Exp $ */
 
 /*
  * PHP includes
@@ -308,7 +308,7 @@
 PHP_MINFO_FUNCTION(nsapi)
 {
        php_info_print_table_start();
-       php_info_print_table_row(2, "NSAPI Module Revision", "$Revision: 
1.69.2.3.2.4 $");
+       php_info_print_table_row(2, "NSAPI Module Revision", "$Revision: 
1.69.2.3.2.5 $");
        php_info_print_table_row(2, "Server Software", system_version());
        php_info_print_table_row(2, "Sub-requests with nsapi_virtual()",
         (nsapi_servact_service)?((zend_ini_long("zlib.output_compression", 
sizeof("zlib.output_compression"), 0))?"not supported with 
zlib.output_compression":"enabled"):"not supported on this platform" );
@@ -587,7 +587,7 @@
        register size_t i;
        int pos;
        char *value,*p;
-       char buf[2048];
+       char buf[32];
        struct pb_entry *entry;
 
        for (i = 0; i < nsapi_reqpb_size; i++) {
@@ -602,19 +602,22 @@
                while (entry) {
                        if (!PG(safe_mode) || strncasecmp(entry->param->name, 
"authorization", 13)) {
                                if (strcasecmp(entry->param->name, 
"content-length")==0 || strcasecmp(entry->param->name, "content-type")==0) {
-                                       strlcpy(buf, entry->param->name, 
sizeof(buf));
+                                       value=estrdup(entry->param->name);
                                        pos = 0;
                                } else {
-                                       slprintf(buf, sizeof(buf), "HTTP_%s", 
entry->param->name);
+                                       spprintf(&value, 0, "HTTP_%s", 
entry->param->name);
                                        pos = 5;
                                }
-                               for(p = buf + pos; *p; p++) {
-                                       *p = toupper(*p);
-                                       if (*p < 'A' || *p > 'Z') {
-                                               *p = '_';
+                               if (value) {
+                                       for(p = value + pos; *p; p++) {
+                                               *p = toupper(*p);
+                                               if (*p < 'A' || *p > 'Z') {
+                                                       *p = '_';
+                                               }
                                        }
+                                       php_register_variable(value, 
entry->param->value, track_vars_array TSRMLS_CC);
+                                       efree(value);
                                }
-                               php_register_variable(buf, entry->param->value, 
track_vars_array TSRMLS_CC);
                        }
                        entry=entry->next;
                }
@@ -670,22 +673,27 @@
        /* Create full Request-URI & Script-Name */
        if (SG(request_info).request_uri) {
                if (SG(request_info).query_string) {
-                       slprintf(buf, sizeof(buf), "%s?%s", 
SG(request_info).request_uri, SG(request_info).query_string);
+                       spprintf(&value, 0, "%s?%s", 
SG(request_info).request_uri, SG(request_info).query_string);
+                       if (value) {
+                               php_register_variable("REQUEST_URI", value, 
track_vars_array TSRMLS_CC);
+                               efree(value);
+                       }
                } else {
-                       strlcpy(buf, SG(request_info).request_uri, sizeof(buf));
+                       php_register_variable("REQUEST_URI", 
SG(request_info).request_uri, track_vars_array TSRMLS_CC);
                }
-               php_register_variable("REQUEST_URI", buf, track_vars_array 
TSRMLS_CC);
 
-               strlcpy(buf, SG(request_info).request_uri, sizeof(buf));
-               if (rc->path_info) {
-                       pos = strlen(SG(request_info).request_uri) - 
strlen(rc->path_info);
-                       if (pos>=0 && pos<sizeof(buf)) {
-                               buf[pos] = '\0';
-                       } else {
-                               buf[0]='\0';
+               if (value = nsapi_strdup(SG(request_info).request_uri)) {
+                       if (rc->path_info) {
+                               pos = strlen(SG(request_info).request_uri) - 
strlen(rc->path_info);
+                               if (pos>=0) {
+                                       value[pos] = '\0';
+                               } else {
+                                       value[0]='\0';
+                               }
                        }
+                       php_register_variable("SCRIPT_NAME", value, 
track_vars_array TSRMLS_CC);
+                       nsapi_free(value);
                }
-               php_register_variable("SCRIPT_NAME", buf, track_vars_array 
TSRMLS_CC);
        }
        php_register_variable("SCRIPT_FILENAME", 
SG(request_info).path_translated, track_vars_array TSRMLS_CC);
 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to