Author: rjung
Date: Thu Aug 30 09:15:39 2007
New Revision: 571226

URL: http://svn.apache.org/viewvc?rev=571226&view=rev
Log:
Redo the patch from r571175 (exact comparison of header names).
Keep using memcmp, but add \0-termination byte to comparison.
This works, because we know the header variable array is long enough
and already \0-terminated.

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c

Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?rev=571226&r1=571225&r2=571226&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Thu Aug 30 
09:15:39 2007
@@ -246,7 +246,7 @@
     const char *p = header_name;
     int i = 0;
 
-    /* ACCEPT-LANGUAGE is the longest headeer
+    /* ACCEPT-LANGUAGE is the longest header
      * that is of interest.
      */
     if (len < 4 || len > 15)
@@ -260,18 +260,20 @@
     header[i] = '\0';
     p = &header[1];
 
+/* Always do memcmp including the final \0-termination character.
+ */ 
     switch (header[0]) {
         case 'A':
-            if (memcmp(p, "CCEPT", 5) == 0) {
+            if (memcmp(p, "CCEPT", 6) == 0) {
                 if (!header[6])
                     return SC_ACCEPT;
                 else if (header[6] == '-') {
                     p += 6;
-                    if (memcmp(p, "CHARSET", 7) == 0)
+                    if (memcmp(p, "CHARSET", 8) == 0)
                         return SC_ACCEPT_CHARSET;
-                    else if (memcmp(p,  "ENCODING", 8) == 0)
+                    else if (memcmp(p,  "ENCODING", 9) == 0)
                         return SC_ACCEPT_ENCODING;
-                    else if (memcmp(p, "LANGUAGE", 8) == 0)
+                    else if (memcmp(p, "LANGUAGE", 9) == 0)
                         return SC_ACCEPT_LANGUAGE;
                     else
                         return UNKNOWN_METHOD;
@@ -279,45 +281,45 @@
                 else
                     return UNKNOWN_METHOD;
             }
-            else if (memcmp(p, "UTHORIZATION", 12) == 0)
+            else if (memcmp(p, "UTHORIZATION", 13) == 0)
                 return SC_AUTHORIZATION;
             else
                 return UNKNOWN_METHOD;
         break;
         case 'C':
-            if(memcmp(p, "OOKIE2", 6) == 0)
+            if(memcmp(p, "OOKIE2", 7) == 0)
                 return SC_COOKIE2;
-            else if (memcmp(p, "OOKIE", 5) == 0)
+            else if (memcmp(p, "OOKIE", 6) == 0)
                 return SC_COOKIE;
-            else if(memcmp(p, "ONNECTION", 9) == 0)
+            else if(memcmp(p, "ONNECTION", 10) == 0)
                 return SC_CONNECTION;
-            else if(memcmp(p, "ONTENT-TYPE", 11) == 0)
+            else if(memcmp(p, "ONTENT-TYPE", 12) == 0)
                 return SC_CONTENT_TYPE;
-            else if(memcmp(p, "ONTENT-LENGTH", 13) == 0)
+            else if(memcmp(p, "ONTENT-LENGTH", 14) == 0)
                 return SC_CONTENT_LENGTH;
             else
                 return UNKNOWN_METHOD;
         break;
         case 'H':
-            if(memcmp(p, "OST", 3) == 0)
+            if(memcmp(p, "OST", 4) == 0)
                 return SC_HOST;
             else
                 return UNKNOWN_METHOD;
         break;
         case 'P':
-            if(memcmp(p, "RAGMA", 5) == 0)
+            if(memcmp(p, "RAGMA", 6) == 0)
                 return SC_PRAGMA;
             else
                 return UNKNOWN_METHOD;
         break;
         case 'R':
-            if(memcmp(p, "EFERER", 6) == 0)
+            if(memcmp(p, "EFERER", 7) == 0)
                 return SC_REFERER;
             else
                 return UNKNOWN_METHOD;
         break;
         case 'U':
-            if(memcmp(p, "SER-AGENT", 9) == 0)
+            if(memcmp(p, "SER-AGENT", 10) == 0)
                 return SC_USER_AGENT;
             else
                 return UNKNOWN_METHOD;



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

Reply via email to