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]