From f9ad0f1051a7d5ebbea4601149d90a07ca3b8340 Mon Sep 17 00:00:00 2001 From: markt Date: Sun, 31 Jan 2010 17:07:26 +0000 Subject: [PATCH] Align implementation with comments. Unit test now passes. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@905073 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/util/LocalStrings.properties | 2 ++ java/org/apache/catalina/util/RequestUtil.java | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/java/org/apache/catalina/util/LocalStrings.properties b/java/org/apache/catalina/util/LocalStrings.properties index 85f80e44c..d101e52ad 100644 --- a/java/org/apache/catalina/util/LocalStrings.properties +++ b/java/org/apache/catalina/util/LocalStrings.properties @@ -22,7 +22,9 @@ extensionValidator.web-application-manifest=Web Application Manifest extensionValidator.extension-not-found-error=ExtensionValidator[{0}][{1}]: Required extension "{2}" not found. extensionValidator.extension-validation-error=ExtensionValidator[{0}]: Failure to find {1} required extension(s). extensionValidator.failload=Failure loading extension {0} +requestUtil.convertHexDigit.notHex=[{0}] is not a hexadecimal digit requestUtil.parseParameters.uee=Unable to parse the parameters since the encoding [{0}] is not supported. +requestUtil.urlDecode.missingDigit=The % character must be followed by two hexademical digits requestUtil.urlDecode.uee=Unable to URL decode the specified input since the encoding [{0}] is not supported. SecurityUtil.doAsPrivilege=An exception occurs when running the PrivilegedExceptionAction block. diff --git a/java/org/apache/catalina/util/RequestUtil.java b/java/org/apache/catalina/util/RequestUtil.java index 150f6ec21..b1357e80f 100644 --- a/java/org/apache/catalina/util/RequestUtil.java +++ b/java/org/apache/catalina/util/RequestUtil.java @@ -326,6 +326,10 @@ public final class RequestUtil { if (b == '+' && isQuery) { b = (byte)' '; } else if (b == '%') { + if (ix + 2 >= len) { + throw new IllegalArgumentException( + sm.getString("requestUtil.urlDecode.missingDigit")); + } b = (byte) ((convertHexDigit(bytes[ix++]) << 4) + convertHexDigit(bytes[ix++])); } @@ -353,7 +357,9 @@ public final class RequestUtil { if ((b >= '0') && (b <= '9')) return (byte)(b - '0'); if ((b >= 'a') && (b <= 'f')) return (byte)(b - 'a' + 10); if ((b >= 'A') && (b <= 'F')) return (byte)(b - 'A' + 10); - return 0; + throw new IllegalArgumentException( + sm.getString("requestUtil.convertHexDigit.notHex", + Character.valueOf((char)b))); } -- 2.11.0