-*- coding: utf-8 -*-
Changes with Apache 2.2.12
+ *) SECURITY: CVE-2009-1891 (cve.mitre.org)
+ Fix a potential Denial-of-Service attack against mod_deflate or other
+ modules, by forcing the server to consume CPU time in compressing a
+ large file after a client disconnects. [Joe Orton, Ruediger Pluem]
+
*) SECURITY: CVE-2009-1195 (cve.mitre.org)
Prevent the "Includes" Option from being enabled in an .htaccess
file if the AllowOverride restrictions do not permit it.
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- * SECURITY: CVE-2009-1891 (cve.mitre.org)
- Fix a potential Denial-of-Service attack against mod_deflate or
- other modules, by forcing the server to consume CPU time in
- compressing a large file after a client disconnects.
- 2.2.x patches:
- http://people.apache.org/~jorton/CVE-2009-1891.1.diff
- http://people.apache.org/~jorton/CVE-2009-1891.2.diff
- Trunk version of patch:
- #1 folded in during core output filter refactoring
- #2 http://svn.apache.org/viewvc?view=rev&revision=521681
- +1: jorton, jim, rpluem
- rpluem asks: Are we sure that b is never NULL?
- Otherwise we would need to add
- http://svn.apache.org/viewvc?view=rev&revision=568202
- as on trunk to avoid segfaults.
- trawick responds: if b were NULL, we would have segfaulted earlier
- when ap_pass_brigade "calls" APR_BRIGADE_LAST(bb)
- rpluem: Ahh good point. Meanwhile I had a look at trunk and the
- event MPM is calling the core output filter directly without
- ap_pass_brigade. So I am +1.
-
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
[ New proposals should be added at the end of the list ]
apr_read_type_e eblock = APR_NONBLOCK_READ;
apr_pool_t *input_pool = b->p;
+ /* Fail quickly if the connection has already been aborted. */
+ if (c->aborted) {
+ apr_brigade_cleanup(b);
+ return APR_ECONNABORTED;
+ }
+
if (ctx == NULL) {
ctx = apr_pcalloc(c->pool, sizeof(*ctx));
net->out_ctx = ctx;
/* No need to check for SUCCESS, we did that above. */
if (!APR_STATUS_IS_EAGAIN(rv)) {
c->aborted = 1;
+ return APR_ECONNABORTED;
}
- /* The client has aborted, but the request was successful. We
- * will report success, and leave it to the access and error
- * logs to note that the connection was aborted.
- */
return APR_SUCCESS;
}