DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=29777>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=29777 getParameterNames problem Summary: getParameterNames problem Product: Tomcat 4 Version: 4.1.30 Platform: All OS/Version: Solaris Status: NEW Severity: Normal Priority: Other Component: Catalina AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Version : tomcat 4.1.30 Tomcat component : org.apache.catalina.util.RequestUtil Platform : Sparc OS : Solaris 8 JVM - JDK 1.4.2_04 Web Server : Apache 2.0.49 request(GET) http[s]://hostname/context/servlet?test% [Exception] java.lang.ArrayIndexOutOfBoundsException: 8 at org.apache.catalina.util.RequestUtil.parseParameters(RequestUtil. java:539) at org.apache.catalina.util.RequestUtil.parseParameters(RequestUtil. java:348) at org.apache.catalina.connector.HttpRequestBase. parseParameters(HttpRequestBase.java:632) at org.apache.catalina.connector.HttpRequestBase. getParameterNames(HttpRequestBase.java:748) at org.apache.catalina.connector.RequestFacade. getParameterNames(RequestFacade.java:176) at javax.servlet.ServletRequestWrapper. getParameterNames(ServletRequestWrapper.java:223) at jp.co.test.testServlet.doGet(testServlet.java:38) [patch] # diff -u RequestUtil.java.orig RequestUtil.java --- RequestUtil.java.orig 2004-06-24 13:11:11.363180000 +0900 +++ RequestUtil.java 2004-06-24 13:11:10.653172000 +0900 @@ -432,8 +432,17 @@ if (b == '+') { b = (byte)' '; } else if (b == '%') { - b = (byte) ((convertHexDigit(bytes[ix++]) << 4) - + convertHexDigit(bytes[ix++])); + switch(len - ix) { + case 0: + b = (byte) 0; + break; + case 1: + b = (byte) convertHexDigit(bytes[ix++]); + break; + default: + b = (byte) ((convertHexDigit(bytes[ix++]) << 4) + + convertHexDigit(bytes[ix++])); + }; } bytes[ox++] = b; } @@ -536,8 +545,17 @@ data[ox++] = (byte)' '; break; case '%': - data[ox++] = (byte)((convertHexDigit(data[ix++]) << 4) - + convertHexDigit(data[ix++])); + switch(data.length - ix) { + case 0: + data[ox++] = (byte)0; + break; + case 1: + data[ox++] = (byte)convertHexDigit(data[ix++]); + break; + default: + data[ox++] = (byte)((convertHexDigit(data[ix++]) << 4) + + convertHexDigit(data[ix++])); + }; break; default: data[ox++] = c; # --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]