This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 117bbdab820d9be87bff80a773e77c738fb9502c Author: Mark Thomas <ma...@apache.org> AuthorDate: Tue Sep 17 20:23:35 2019 +0100 Revert "Only decode in standard mode." This reverts commit 9fd972c931cf3ce8829a69437b7340f9b0e1e731. The original commit broke parsing of HTTP upgrade to h2c --- java/org/apache/tomcat/util/codec/binary/Base64.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/java/org/apache/tomcat/util/codec/binary/Base64.java b/java/org/apache/tomcat/util/codec/binary/Base64.java index 059ff66..99a501c 100644 --- a/java/org/apache/tomcat/util/codec/binary/Base64.java +++ b/java/org/apache/tomcat/util/codec/binary/Base64.java @@ -35,7 +35,7 @@ import java.math.BigInteger; * <li>Line separator: Default is CRLF ("\r\n")</li> * </ul> * <p> - * The URL-safe parameter is only applied to encode operations. Decoding only handles standard mode. + * The URL-safe parameter is only applied to encode operations. Decoding seamlessly handles both modes. * </p> * <p> * Since this class operates directly on byte streams, and not character streams, it is hard-coded to only @@ -104,7 +104,8 @@ public class Base64 extends BaseNCodec { * in Table 1 of RFC 2045) into their 6-bit positive integer equivalents. Characters that are not in the Base64 * alphabet but fall within the bounds of the array are translated to -1. * - * Note: The seamless decoding of URL safe values has been disabled because Tomcat doesn't use it. + * Note: '+' and '-' both decode to 62. '/' and '_' both decode to 63. This means decoder seamlessly handles both + * URL_SAFE and STANDARD base64. (The encoder, on the other hand, needs to know ahead of time what to emit). * * Thanks to "commons" project in ws.apache.org for this code. * https://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/ @@ -113,10 +114,10 @@ public class Base64 extends BaseNCodec { // 0 1 2 3 4 5 6 7 8 9 A B C D E F -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 00-0f -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 10-1f - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, // 20-2f + / + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63, // 20-2f + - / 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, // 30-3f 0-9 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, // 40-4f A-O - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, // 50-5f P-Z + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63, // 50-5f P-Z _ -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, // 60-6f a-o 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 // 70-7a p-z }; @@ -262,7 +263,7 @@ public class Base64 extends BaseNCodec { * Each line of encoded data will end with this sequence of bytes. * @param urlSafe * Instead of emitting '+' and '/' we emit '-' and '_' respectively. urlSafe is only applied to encode - * operations. Decoding only handles standard mode. + * operations. Decoding seamlessly handles both modes. * <b>Note: no padding is added when using the URL-safe alphabet.</b> * @throws IllegalArgumentException * The provided lineSeparator included some base64 characters. That's not going to work! @@ -665,7 +666,7 @@ public class Base64 extends BaseNCodec { /** * Decodes a Base64 String into octets. * <p> - * <b>Note:</b> this method only handles data encoded in standard mode. + * <b>Note:</b> this method seamlessly handles data encoded in URL-safe or normal mode. * </p> * * @param base64String @@ -680,7 +681,7 @@ public class Base64 extends BaseNCodec { /** * Decodes Base64 data into octets. * <p> - * <b>Note:</b> this method only handles data encoded in standard mode. + * <b>Note:</b> this method seamlessly handles data encoded in URL-safe or normal mode. * </p> * * @param base64Data --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org