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]