You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Steve Jones (Created) (JIRA)" <ji...@apache.org> on 2011/12/04 02:04:39 UTC
[jira] [Created] (HTTPCORE-285) Handle invalid HTTP traffic
Handle invalid HTTP traffic
---------------------------
Key: HTTPCORE-285
URL: https://issues.apache.org/jira/browse/HTTPCORE-285
Project: HttpComponents HttpCore
Issue Type: Bug
Components: HttpCore
Affects Versions: 4.1.2
Reporter: Steve Jones
Invalid HTTP responses are not handled well and can cause OutOfMemoryError errors.
Most errors can probably be addressed by limiting the length when reading a line.
For example:
cat /dev/zero | nc -l 1234 # run a server that spews invalid data
java org.apache.http.examples.client.ClientWithResponseHandler # modified example to connect to above server
Result:
executing request http://localhost:1234/
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at org.apache.http.util.ByteArrayBuffer.expand(ByteArrayBuffer.java:59)
at org.apache.http.util.ByteArrayBuffer.append(ByteArrayBuffer.java:89)
at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:261)
at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:98)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:941)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:919)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:910)
at org.apache.http.examples.client.ClientWithResponseHandler.main(ClientWithResponseHandler.java:52)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org
[jira] [Resolved] (HTTPCORE-285) Handle invalid HTTP traffic
Posted by "Oleg Kalnichevski (Resolved) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HTTPCORE-285?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Oleg Kalnichevski resolved HTTPCORE-285.
----------------------------------------
Resolution: Invalid
Steve
One can use CoreConnectionPNames#MAX_LINE_LENGTH and CoreConnectionPNames#MAX_HEADER_COUNT parameters in order to set a limit on allowed line length and number of lines in an HTTP message and avoid DoS type of conditions.
http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/impl/io/AbstractMessageParser.html
Oleg
> Handle invalid HTTP traffic
> ---------------------------
>
> Key: HTTPCORE-285
> URL: https://issues.apache.org/jira/browse/HTTPCORE-285
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Components: HttpCore
> Affects Versions: 4.1.2
> Reporter: Steve Jones
>
> Invalid HTTP responses are not handled well and can cause OutOfMemoryError errors.
> Most errors can probably be addressed by limiting the length when reading a line.
> For example:
> cat /dev/zero | nc -l 1234 # run a server that spews invalid data
> java org.apache.http.examples.client.ClientWithResponseHandler # modified example to connect to above server
> Result:
> executing request http://localhost:1234/
> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
> at org.apache.http.util.ByteArrayBuffer.expand(ByteArrayBuffer.java:59)
> at org.apache.http.util.ByteArrayBuffer.append(ByteArrayBuffer.java:89)
> at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:261)
> at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:98)
> at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
> at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
> at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
> at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
> at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
> at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
> at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
> at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:941)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:919)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:910)
> at org.apache.http.examples.client.ClientWithResponseHandler.main(ClientWithResponseHandler.java:52)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org
[jira] [Commented] (HTTPCORE-285) Handle invalid HTTP traffic
Posted by "Steve Jones (Commented) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HTTPCORE-285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13166732#comment-13166732 ]
Steve Jones commented on HTTPCORE-285:
--------------------------------------
Thanks Oleg, that does address the issue. Is there a reason why the default setting is for unlimited line length? (it seems better to have a safe default value)
> Handle invalid HTTP traffic
> ---------------------------
>
> Key: HTTPCORE-285
> URL: https://issues.apache.org/jira/browse/HTTPCORE-285
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Components: HttpCore
> Affects Versions: 4.1.2
> Reporter: Steve Jones
>
> Invalid HTTP responses are not handled well and can cause OutOfMemoryError errors.
> Most errors can probably be addressed by limiting the length when reading a line.
> For example:
> cat /dev/zero | nc -l 1234 # run a server that spews invalid data
> java org.apache.http.examples.client.ClientWithResponseHandler # modified example to connect to above server
> Result:
> executing request http://localhost:1234/
> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
> at org.apache.http.util.ByteArrayBuffer.expand(ByteArrayBuffer.java:59)
> at org.apache.http.util.ByteArrayBuffer.append(ByteArrayBuffer.java:89)
> at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:261)
> at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:98)
> at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
> at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
> at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
> at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
> at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
> at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
> at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
> at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:941)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:919)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:910)
> at org.apache.http.examples.client.ClientWithResponseHandler.main(ClientWithResponseHandler.java:52)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org
[jira] [Commented] (HTTPCORE-285) Handle invalid HTTP traffic
Posted by "Oleg Kalnichevski (Commented) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/HTTPCORE-285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13166822#comment-13166822 ]
Oleg Kalnichevski commented on HTTPCORE-285:
--------------------------------------------
It is difficult to say what default settings would fit all types of applications. Applications that rely on HttpClient are too diverse.
Feel free to propose better default values, though.
Oleg
> Handle invalid HTTP traffic
> ---------------------------
>
> Key: HTTPCORE-285
> URL: https://issues.apache.org/jira/browse/HTTPCORE-285
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Components: HttpCore
> Affects Versions: 4.1.2
> Reporter: Steve Jones
>
> Invalid HTTP responses are not handled well and can cause OutOfMemoryError errors.
> Most errors can probably be addressed by limiting the length when reading a line.
> For example:
> cat /dev/zero | nc -l 1234 # run a server that spews invalid data
> java org.apache.http.examples.client.ClientWithResponseHandler # modified example to connect to above server
> Result:
> executing request http://localhost:1234/
> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
> at org.apache.http.util.ByteArrayBuffer.expand(ByteArrayBuffer.java:59)
> at org.apache.http.util.ByteArrayBuffer.append(ByteArrayBuffer.java:89)
> at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:261)
> at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:98)
> at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
> at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
> at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
> at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
> at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
> at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
> at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
> at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:941)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:919)
> at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:910)
> at org.apache.http.examples.client.ClientWithResponseHandler.main(ClientWithResponseHandler.java:52)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org