[jboss-jira] [JBoss JIRA] (JBWEB-266) Cookie Processing of JSON Cookie destroys Cookie Header
Manuel Coenen (JIRA)
jira-events at lists.jboss.org
Wed Feb 20 04:32:57 EST 2013
Manuel Coenen created JBWEB-266:
-----------------------------------
Summary: Cookie Processing of JSON Cookie destroys Cookie Header
Key: JBWEB-266
URL: https://issues.jboss.org/browse/JBWEB-266
Project: JBoss Web
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Tomcat
Affects Versions: JBossWeb-7.0.1.GA
Environment: Windows 7 x64 and RHEL/CentOS with JBoss AS 7.0.2 Final
Reporter: Manuel Coenen
Assignee: Remy Maucherat
When sending a cookie with JSON content to JBoss the automatic cookie processing (triggered by looking for a session cookie) modifies the {{byte[]}} buffer which is also used for the HTTP headers.
This is due to multiple objects depending on the same {{byte[]}} buffer instance. The following hierarchy should demonstrate this dependency:
{noformat}
Http11Processor.request (Request)
└> cookies (Cookies)
| └> scookies[] (ServerCookie)
| └> scookies[x] (where x is the index referencing the JSON cookie)
| └> value (MessageByte)
| └>byteC (ByteChunk)
| \
| |-> buff (byte[])
| /
| ┌> byteC (ByteChunk)
| ┌> valueB (MessageByte)
| ┌> headers[y] (where y is the index referencing the JSON cookie header)
| ┌> headers[] (MimeHeaderField)
└> headers (MimeHeader)
{noformat}
The method {{Cookies.unescapeDoubleQuotes(ByteChunk)}} modifies this buffer by overwriting its contents when removing the escaped double-quotes. This in return destroys the reference for the header as it will still maintain the {{start}} and {{end}} reference inside this buffer. If the value for this header is read later it will be the unescaped content trailed by the surplus escaped region (see reproduction instructions for a more detailed example).
In my opinion the method {{Cookies.unescapeDoubleQuotes(ByteChunk)}} should copy the {{byte[]}} first to avoid side effects to other parts referencing this {{byte[]}} as it could be (and is in our case) that the headers (including cookie) need to be forwarded unmodified to another server.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list