Author: mturk
Date: Wed Nov 14 00:38:55 2007
New Revision: 594798

URL: http://svn.apache.org/viewvc?rev=594798&view=rev
Log:
Fix Bz 42003 by dynamically allocating memory

Modified:
    tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c

Modified: tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c?rev=594798&r1=594797&r2=594798&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c (original)
+++ tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c Wed Nov 14 00:38:55 
2007
@@ -112,6 +112,7 @@
 #define BAD_REQUEST     -1
 #define BAD_PATH        -2
 #define MAX_SERVERNAME  128
+#define MAX_PACKET_SIZE 65536
 
 char HTML_ERROR_400[] =         "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 
Transitional//EN\">\n"
                                 "<HTML><HEAD><TITLE>Bad 
request!</TITLE></HEAD>\n"
@@ -145,7 +146,7 @@
 #define GET_SERVER_VARIABLE_VALUE(name, place)          \
   do {                                                  \
     (place) = NULL;                                     \
-    huge_buf_sz = sizeof(huge_buf);                     \
+    huge_buf_sz = MAX_PACKET_SIZE;                      \
     if (get_server_value(private_data->lpEcb,           \
                         (name),                         \
                         huge_buf,                       \
@@ -156,7 +157,7 @@
 
 #define GET_SERVER_VARIABLE_VALUE_INT(name, place, def)     \
   do {                                                      \
-    huge_buf_sz = sizeof(huge_buf);                         \
+    huge_buf_sz = MAX_PACKET_SIZE;                          \
     if (get_server_value(private_data->lpEcb,               \
                         (name),                             \
                         huge_buf,                           \
@@ -1963,7 +1964,7 @@
 static int init_ws_service(isapi_private_data_t * private_data,
                            jk_ws_service_t *s, char **worker_name)
 {
-    char huge_buf[16 * 1024];   /* should be enough for all */
+    char *huge_buf = NULL;   /* should be enough for all */
 
     DWORD huge_buf_sz;
 
@@ -1983,6 +1984,11 @@
     /* Clear RECO status */
     s->reco_status = RECO_NONE;
 
+    if (!(huge_buf = jk_pool_alloc(&private_data->p, MAX_PACKET_SIZE))) {
+
+        return JK_FALSE;    
+    }
+    huge_buf_sz = MAX_PACKET_SIZE;
     GET_SERVER_VARIABLE_VALUE(HTTP_WORKER_HEADER_NAME, (*worker_name));
     GET_SERVER_VARIABLE_VALUE(HTTP_URI_HEADER_NAME, s->req_uri);
     GET_SERVER_VARIABLE_VALUE(HTTP_QUERY_HEADER_NAME, s->query_string);
@@ -2073,7 +2079,7 @@
             s->num_attributes = num_of_vars;
             if (ssl_env_values[4] && ssl_env_values[4][0] == '1') {
                 CERT_CONTEXT_EX cc;
-                cc.cbAllocated = sizeof(huge_buf);
+                cc.cbAllocated = MAX_PACKET_SIZE;
                 cc.CertContext.pbCertEncoded = (BYTE *) huge_buf;
                 cc.CertContext.cbCertEncoded = 0;
 
@@ -2102,7 +2108,7 @@
         }
     }
 
-    huge_buf_sz = sizeof(huge_buf);
+    huge_buf_sz = MAX_PACKET_SIZE;
     if (get_server_value(private_data->lpEcb,
                          "ALL_HTTP", huge_buf, huge_buf_sz)) {
         unsigned int cnt = 0;
@@ -2115,7 +2121,7 @@
         }
 
         if (cnt) {
-            char *headers_buf = jk_pool_strdup(&private_data->p, huge_buf);
+            char *headers_buf = huge_buf;
             unsigned int i;
             size_t len_of_http_prefix = strlen("HTTP_");
             BOOL need_content_length_header = (s->content_length == 0);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to