Author: mturk
Date: Sat Feb 27 08:42:34 2010
New Revision: 916928

URL: http://svn.apache.org/viewvc?rev=916928&view=rev
Log:
Fix BZ48826. We did not set Content-Lenght header name, only value which causes 
core caused by unset pointer

Modified:
    tomcat/jk/trunk/native/iis/jk_isapi_plugin.c
    tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml

Modified: tomcat/jk/trunk/native/iis/jk_isapi_plugin.c
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/iis/jk_isapi_plugin.c?rev=916928&r1=916927&r2=916928&view=diff
==============================================================================
--- tomcat/jk/trunk/native/iis/jk_isapi_plugin.c (original)
+++ tomcat/jk/trunk/native/iis/jk_isapi_plugin.c Sat Feb 27 08:42:34 2010
@@ -2974,9 +2974,10 @@
                 need_content_length_header = TRUE;
             }
 
-            cnt -= 2;           /* For our two special headers:
+            cnt -= 3;           /* For our three special headers:
                                  * HTTP_TOMCATURI_XXXXXXXX
                                  * HTTP_TOMCATWORKER_XXXXXXXX
+                                 * HTTP_TOMCATWORKERIDX_XXXXXXXX
                                  */
             /* allocate an extra header slot in case we need to add a 
content-length header */
             s->headers_names =
@@ -2997,14 +2998,14 @@
                 tmp += HTTP_HEADER_PREFIX_LEN;
 #endif
 
-                if (!strnicmp(tmp, URI_HEADER_NAME, sizeof(URI_HEADER_NAME) - 
1)
-                    || !strnicmp(tmp, WORKER_HEADER_NAME,
-                                 sizeof(WORKER_HEADER_NAME) - 1)) {
+                if (!strnicmp(tmp, URI_HEADER_NAME, strlen(URI_HEADER_NAME))
+                    || !strnicmp(tmp, WORKER_HEADER_NAME, 
strlen(WORKER_HEADER_NAME))
+                    || !strnicmp(tmp, WORKER_HEADER_INDEX, 
strlen(WORKER_HEADER_INDEX))) {
                     /* Skip redirector headers */
                     real_header = JK_FALSE;
                 }
                 else if (!strnicmp(tmp, QUERY_HEADER_NAME,
-                                   sizeof(QUERY_HEADER_NAME) - 1)) {
+                                   strlen(QUERY_HEADER_NAME))) {
                     /* HTTP_TOMCATQUERY_XXXXXXXX was supplied,
                      * remove it from the count and skip
                      */
@@ -3021,17 +3022,17 @@
                         if (unknown_content_length || s->is_chunked) {
                             if (JK_IS_DEBUG_LEVEL(logger)) {
                                 jk_log(logger, JK_LOG_DEBUG,
-                                       "Header %s is %s", tmp,
+                                       "Header Content-Length is %s",
                                        s->is_chunked ? "chunked" : "unknown");
                             }
-                        }
-                        else {
-                            s->headers_names[i] = tmp;
+                            real_header = JK_FALSE;
                         }
                     }
+                    if (real_header)
+                        s->headers_names[i] = tmp;
                 }
                 else if (!strnicmp(tmp, TOMCAT_TRANSLATE_HEADER_NAME,
-                                   sizeof(TOMCAT_TRANSLATE_HEADER_NAME) - 1)) {
+                                   strlen(TOMCAT_TRANSLATE_HEADER_NAME))) {
                     s->headers_names[i] = TRANSLATE_HEADER_NAME_LC;
                 }
                 else {
@@ -3040,11 +3041,13 @@
 
                 while (':' != *tmp && *tmp) {
 #ifndef USE_RAW_HEADERS
-                    if ('_' == *tmp) {
-                        *tmp = '-';
-                    }
-                    else {
-                        *tmp = JK_TOLOWER(*tmp);
+                    if (real_header) {
+                        if ('_' == *tmp) {
+                            *tmp = '-';
+                        }
+                        else {
+                            *tmp = JK_TOLOWER(*tmp);
+                        }
                     }
 #endif
                     tmp++;
@@ -3061,7 +3064,7 @@
                     s->headers_values[i] = tmp;
                 }
 
-                while (*tmp != '\n' && *tmp != '\r') {
+                while (*tmp && *tmp != '\n' && *tmp != '\r') {
                     tmp++;
                 }
                 *tmp = '\0';

Modified: tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml?rev=916928&r1=916927&r2=916928&view=diff
==============================================================================
--- tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml Sat Feb 27 08:42:34 2010
@@ -39,6 +39,16 @@
   new documentation project for JK was started.
   </p>
 </section>
+<section name="Changes between 1.2.29 and 1.2.30">
+  <br />
+  <subsection name="Native">
+    <changelog>
+      <fix>
+        <bug>48826</bug>: IIS: Fix core on POST. (mturk)
+      </fix>
+    </changelog>
+  </subsection>
+</section>
 <section name="Changes between 1.2.28 and 1.2.29">
   <br />
   <subsection name="Native">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to