author | Petr Sumbera <petr.sumbera@oracle.com> |
Fri, 02 Sep 2011 06:01:11 -0700 | |
changeset 509 | 07ee58881cb3 |
permissions | -rw-r--r-- |
509
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
1 |
--- trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java 2011/08/29 19:45:13 1162958 |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
2 |
+++ trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java 2011/08/29 19:45:42 1162959 |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
3 |
@@ -405,11 +405,13 @@ |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
4 |
} |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
5 |
continue; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
6 |
} else if(type != Constants.JK_AJP13_FORWARD_REQUEST) { |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
7 |
- // Usually the servlet didn't read the previous request body |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
8 |
- if(log.isDebugEnabled()) { |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
9 |
- log.debug("Unexpected message: "+type); |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
10 |
+ // Unexpected packet type. Unread body packets should have |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
11 |
+ // been swallowed in finish(). |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
12 |
+ if (log.isDebugEnabled()) { |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
13 |
+ log.debug("Unexpected message: " + type); |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
14 |
} |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
15 |
- continue; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
16 |
+ error = true; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
17 |
+ break; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
18 |
} |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
19 |
|
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
20 |
keptAlive = true; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
21 |
@@ -1056,6 +1058,11 @@ |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
22 |
|
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
23 |
finished = true; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
24 |
|
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
25 |
+ // Swallow the unread body packet if present |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
26 |
+ if (first && request.getContentLengthLong() > 0) { |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
27 |
+ receive(); |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
28 |
+ } |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
29 |
+ |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
30 |
// Add the end message |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
31 |
if (outputBuffer.position() + endMessageArray.length > outputBuffer.capacity()) { |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
32 |
flush(); |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
33 |
--- trunk/java/org/apache/coyote/ajp/AjpProcessor.java 2011/08/29 19:45:13 1162958 |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
34 |
+++ trunk/java/org/apache/coyote/ajp/AjpProcessor.java 2011/08/29 19:45:42 1162959 |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
35 |
@@ -423,11 +423,13 @@ |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
36 |
} |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
37 |
continue; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
38 |
} else if(type != Constants.JK_AJP13_FORWARD_REQUEST) { |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
39 |
- // Usually the servlet didn't read the previous request body |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
40 |
- if(log.isDebugEnabled()) { |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
41 |
- log.debug("Unexpected message: "+type); |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
42 |
+ // Unexpected packet type. Unread body packets should have |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
43 |
+ // been swallowed in finish(). |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
44 |
+ if (log.isDebugEnabled()) { |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
45 |
+ log.debug("Unexpected message: " + type); |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
46 |
} |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
47 |
- continue; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
48 |
+ error = true; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
49 |
+ break; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
50 |
} |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
51 |
|
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
52 |
request.setStartTime(System.currentTimeMillis()); |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
53 |
@@ -1061,6 +1063,11 @@ |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
54 |
|
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
55 |
finished = true; |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
56 |
|
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
57 |
+ // Swallow the unread body packet if present |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
58 |
+ if (first && request.getContentLengthLong() > 0) { |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
59 |
+ receive(); |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
60 |
+ } |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
61 |
+ |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
62 |
// Add the end message |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
63 |
output.write(endMessageArray); |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
64 |
|
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
65 |
--- trunk/webapps/docs/changelog.xml 2011/08/29 19:45:13 1162958 |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
66 |
+++ trunk/webapps/docs/changelog.xml 2011/08/29 19:45:42 1162959 |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
67 |
@@ -52,6 +52,14 @@ |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
68 |
</fix> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
69 |
</changelog> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
70 |
</subsection> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
71 |
+ <subsection name="Coyote"> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
72 |
+ <changelog> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
73 |
+ <fix> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
74 |
+ <bug>51698</bug>: Fix CVE-2011-3190. Prevent AJP message injection. |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
75 |
+ (markt) |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
76 |
+ </fix> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
77 |
+ </changelog> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
78 |
+ </subsection> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
79 |
</section> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
80 |
<section name="Tomcat 6.0.33 (jfclere)" rtext="released 2011-08-18"> |
07ee58881cb3
7086335 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
81 |
<subsection name="Catalina"> |