You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2003/12/11 22:35:24 UTC
cvs commit: jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4 CoyoteAdapter.java
markt 2003/12/11 13:35:24
Modified: coyote/src/java/org/apache/coyote/tomcat4 CoyoteAdapter.java
Log:
- Fix bug 24283. Process uri as characters not bytes to ensure correct handling of unicode characters.
Revision Changes Path
1.24 +36 -24 jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteAdapter.java
Index: CoyoteAdapter.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteAdapter.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- CoyoteAdapter.java 19 Nov 2003 23:23:18 -0000 1.23
+++ CoyoteAdapter.java 11 Dec 2003 21:35:24 -0000 1.24
@@ -69,6 +69,7 @@
import javax.servlet.http.HttpServletRequest;
import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.buf.CharChunk;
import org.apache.tomcat.util.buf.MessageBytes;
import org.apache.tomcat.util.http.Cookies;
import org.apache.tomcat.util.http.ServerCookie;
@@ -299,14 +300,14 @@
parseCookies(req, request);
// Set the SSL properties
- if( request.isSecure() ) {
- res.action(ActionCode.ACTION_REQ_SSL_ATTRIBUTE,
+ if( request.isSecure() ) {
+ res.action(ActionCode.ACTION_REQ_SSL_ATTRIBUTE,
request.getCoyoteRequest());
- //Set up for getAttributeNames
- request.getAttribute(Globals.CERTIFICATES_ATTR);
- request.getAttribute(Globals.CIPHER_SUITE_ATTR);
- request.getAttribute(Globals.KEY_SIZE_ATTR);
- }
+ //Set up for getAttributeNames
+ request.getAttribute(Globals.CERTIFICATES_ATTR);
+ request.getAttribute(Globals.CIPHER_SUITE_ATTR);
+ request.getAttribute(Globals.KEY_SIZE_ATTR);
+ }
// Set the remote principal
String principal = req.getRemoteUser().toString();
@@ -322,31 +323,42 @@
*/
protected void parseSessionId(Request req, CoyoteRequest request) {
- ByteChunk uriBC = req.decodedURI().getByteChunk();
- int semicolon = uriBC.indexOf(match, 0, match.length(), 0);
+ req.decodedURI().toChars();
+ CharChunk uriCC = req.decodedURI().getCharChunk();
+ int semicolon = uriCC.indexOf(match, 0, match.length(), 0);
if (semicolon > 0) {
// Parse session ID, and extract it from the decoded request URI
- String uri = uriBC.toString();
- String rest = uri.substring(semicolon + match.length());
- int semicolon2 = rest.indexOf(';');
+ int start = uriCC.getStart();
+ int end = uriCC.getEnd();
+
+ int sessionIdStart = start + semicolon + match.length();
+ int semicolon2 = uriCC.indexOf(';', sessionIdStart);
if (semicolon2 >= 0) {
- request.setRequestedSessionId(rest.substring(0, semicolon2));
- rest = rest.substring(semicolon2);
+ request.setRequestedSessionId
+ (new String(uriCC.getBuffer(), sessionIdStart,
+ semicolon2 - semicolon - match.length()));
+ req.decodedURI().setString
+ (new String(uriCC.getBuffer(), start, semicolon) +
+ new String(uriCC.getBuffer(),
+ semicolon2,
+ end-semicolon2));
} else {
- request.setRequestedSessionId(rest);
- rest = "";
+ request.setRequestedSessionId
+ (new String(uriCC.getBuffer(), sessionIdStart,
+ end - sessionIdStart));
+ req.decodedURI().setString
+ (new String(uriCC.getBuffer(), start, semicolon));
}
request.setRequestedSessionURL(true);
- req.decodedURI().setString(uri.substring(0, semicolon) + rest);
// Extract session ID from request URI
- uri = req.requestURI().toString();
+ String uri = req.requestURI().toString();
semicolon = uri.indexOf(match);
if (semicolon > 0) {
- rest = uri.substring(semicolon + match.length());
+ String rest = uri.substring(semicolon + match.length());
semicolon2 = rest.indexOf(';');
if (semicolon2 >= 0) {
rest = rest.substring(semicolon2);
@@ -376,7 +388,7 @@
Cookie[] cookies = new Cookie[count];
- int idx=0;
+ int idx=0;
for (int i = 0; i < count; i++) {
ServerCookie scookie = serverCookies.getCookie(i);
if (scookie.getName().equals(Globals.SESSION_COOKIE_NAME)) {
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4
CoyoteAdapter.java
Posted by Remy Maucherat <re...@apache.org>.
Remy Maucherat wrote:
> markt@apache.org wrote:
>
>> markt 2003/12/11 13:35:24
>>
>> Modified: coyote/src/java/org/apache/coyote/tomcat4
>> CoyoteAdapter.java
>> Log:
>> - Fix bug 24283. Process uri as characters not bytes to ensure
>> correct handling of unicode characters.
>
>
> -1 for this patch. Character decoding should occur afterwards. Mapping
> should be done as bytes.
Oops, forget it, I thought this was in the TC 5 branch.
I need to think before pressing send.
Rémy
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4
CoyoteAdapter.java
Posted by Remy Maucherat <re...@apache.org>.
markt@apache.org wrote:
> markt 2003/12/11 13:35:24
>
> Modified: coyote/src/java/org/apache/coyote/tomcat4 CoyoteAdapter.java
> Log:
> - Fix bug 24283. Process uri as characters not bytes to ensure correct handling of unicode characters.
-1 for this patch. Character decoding should occur afterwards. Mapping
should be done as bytes.
Rémy
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org