[jboss-jira] [JBoss JIRA] (AS7-5106) org.apache.coyote.http11.InternalOutputBuffer is not safe
Ste Gr (JIRA)
jira-events at lists.jboss.org
Tue Jul 3 07:04:12 EDT 2012
[ https://issues.jboss.org/browse/AS7-5106?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ste Gr updated AS7-5106:
------------------------
Description:
As soon as the http response should be send, there might be the problem, where the headers exceed the size of the internal output buffer. (see https://issues.jboss.org/browse/ARQ-982)
* No boundary check on the array 'buf' of InternalOutputBuffer
* problem: The whole sendHeader-routine is not able to split the send of http headers.
Example stack trace (arquillian warp is adds the big header):
{noformat}
ArrayIndexOutOfBoundsException
InternalOutputBuffer.write(String) line: 698
InternalOutputBuffer.write(MessageBytes) line: 607
InternalOutputBuffer.sendHeader(MessageBytes, MessageBytes) line: 479
Http11Processor.prepareResponse() line: 1648
Http11Processor.action(ActionCode, Object) line: 998
Response.action(ActionCode, Object) line: 188
InternalOutputBuffer.doWrite(ByteChunk, Response) line: 552
Response.doWrite(ByteChunk) line: 594
OutputBuffer.realWriteBytes(byte[], int, int) line: 398
ByteChunk.flushBuffer() line: 449
ByteChunk.append(byte[], int, int) line: 349
OutputBuffer.writeBytes(byte[], int, int) line: 426
OutputBuffer.write(byte[], int, int) line: 415
CoyoteOutputStream.write(byte[], int, int) line: 89
CoyoteOutputStream.write(byte[]) line: 83
NonWritingPrintWriter.finallyWriteAndClose(ServletOutputStream) line: 58
WarpFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 189
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 280
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 248
TransactionWebFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 38
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 280
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 248
NTLMFakeFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 33
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 280
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 248
StandardWrapperValve.invoke(Request, Response) line: 275
StandardContextValve.invoke(Request, Response) line: 161
WebNonTxEmCloserValve.invoke(Request, Response) line: 50
SecurityContextAssociationValve.invoke(Request, Response) line: 153
StandardHostValve.invoke(Request, Response) line: 155
ErrorReportValve.invoke(Request, Response) line: 102
StandardEngineValve.invoke(Request, Response) line: 109
CoyoteAdapter.service(Request, Response) line: 368
Http11Processor.process(Socket) line: 877
Http11Protocol$Http11ConnectionHandler.process(Socket) line: 671
JIoEndpoint$Worker.run() line: 930
Thread.run() line: not available
{noformat}
was:
As soon as the http response should be send, there might be the problem, where the headers exceed the size of the internal output buffer. (see https://issues.jboss.org/browse/ARQ-982)
1. problem: No boundary check on the array 'buf' of InternalOutputBuffer
2. problem: The whole sendHeader-routine is not able to split the split the send of headers.
Example stack trace (arquillian warp is adds the big header):
InternalOutputBuffer.write(String) line: 698
InternalOutputBuffer.write(MessageBytes) line: 607
InternalOutputBuffer.sendHeader(MessageBytes, MessageBytes) line: 479
Http11Processor.prepareResponse() line: 1648
Http11Processor.action(ActionCode, Object) line: 998
Response.action(ActionCode, Object) line: 188
InternalOutputBuffer.doWrite(ByteChunk, Response) line: 552
Response.doWrite(ByteChunk) line: 594
OutputBuffer.realWriteBytes(byte[], int, int) line: 398
ByteChunk.flushBuffer() line: 449
ByteChunk.append(byte[], int, int) line: 349
OutputBuffer.writeBytes(byte[], int, int) line: 426
OutputBuffer.write(byte[], int, int) line: 415
CoyoteOutputStream.write(byte[], int, int) line: 89
CoyoteOutputStream.write(byte[]) line: 83
NonWritingPrintWriter.finallyWriteAndClose(ServletOutputStream) line: 58
WarpFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 189
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 280
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 248
TransactionWebFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 38
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 280
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 248
NTLMFakeFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 33
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 280
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 248
StandardWrapperValve.invoke(Request, Response) line: 275
StandardContextValve.invoke(Request, Response) line: 161
WebNonTxEmCloserValve.invoke(Request, Response) line: 50
SecurityContextAssociationValve.invoke(Request, Response) line: 153
StandardHostValve.invoke(Request, Response) line: 155
ErrorReportValve.invoke(Request, Response) line: 102
StandardEngineValve.invoke(Request, Response) line: 109
CoyoteAdapter.service(Request, Response) line: 368
Http11Processor.process(Socket) line: 877
Http11Protocol$Http11ConnectionHandler.process(Socket) line: 671
JIoEndpoint$Worker.run() line: 930
Thread.run() line: not available
> org.apache.coyote.http11.InternalOutputBuffer is not safe
> ---------------------------------------------------------
>
> Key: AS7-5106
> URL: https://issues.jboss.org/browse/AS7-5106
> Project: Application Server 7
> Issue Type: Bug
> Components: Web
> Affects Versions: 7.1.1.Final
> Reporter: Ste Gr
> Assignee: Remy Maucherat
>
> As soon as the http response should be send, there might be the problem, where the headers exceed the size of the internal output buffer. (see https://issues.jboss.org/browse/ARQ-982)
> * No boundary check on the array 'buf' of InternalOutputBuffer
> * problem: The whole sendHeader-routine is not able to split the send of http headers.
> Example stack trace (arquillian warp is adds the big header):
> {noformat}
> ArrayIndexOutOfBoundsException
> InternalOutputBuffer.write(String) line: 698
> InternalOutputBuffer.write(MessageBytes) line: 607
> InternalOutputBuffer.sendHeader(MessageBytes, MessageBytes) line: 479
> Http11Processor.prepareResponse() line: 1648
> Http11Processor.action(ActionCode, Object) line: 998
> Response.action(ActionCode, Object) line: 188
> InternalOutputBuffer.doWrite(ByteChunk, Response) line: 552
> Response.doWrite(ByteChunk) line: 594
> OutputBuffer.realWriteBytes(byte[], int, int) line: 398
> ByteChunk.flushBuffer() line: 449
> ByteChunk.append(byte[], int, int) line: 349
> OutputBuffer.writeBytes(byte[], int, int) line: 426
> OutputBuffer.write(byte[], int, int) line: 415
> CoyoteOutputStream.write(byte[], int, int) line: 89
> CoyoteOutputStream.write(byte[]) line: 83
> NonWritingPrintWriter.finallyWriteAndClose(ServletOutputStream) line: 58
> WarpFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 189
> ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 280
> ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 248
> TransactionWebFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 38
> ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 280
> ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 248
> NTLMFakeFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 33
> ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 280
> ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 248
> StandardWrapperValve.invoke(Request, Response) line: 275
> StandardContextValve.invoke(Request, Response) line: 161
> WebNonTxEmCloserValve.invoke(Request, Response) line: 50
> SecurityContextAssociationValve.invoke(Request, Response) line: 153
> StandardHostValve.invoke(Request, Response) line: 155
> ErrorReportValve.invoke(Request, Response) line: 102
> StandardEngineValve.invoke(Request, Response) line: 109
> CoyoteAdapter.service(Request, Response) line: 368
> Http11Processor.process(Socket) line: 877
> Http11Protocol$Http11ConnectionHandler.process(Socket) line: 671
> JIoEndpoint$Worker.run() line: 930
> Thread.run() line: not available
> {noformat}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list