This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/9.0.x by this push:
     new dd777642d6 Update internal fork of Commons Codec to 1.16.1
dd777642d6 is described below

commit dd777642d673ca50e385324a3df478398402817d
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Tue Apr 2 19:44:49 2024 +0100

    Update internal fork of Commons Codec to 1.16.1
---
 MERGE.txt                                          |  2 +-
 .../apache/tomcat/util/codec/binary/Base64.java    | 44 ++++++++++++----------
 .../tomcat/util/codec/binary/BaseNCodec.java       | 15 +++++---
 .../tomcat/util/codec/binary/StringUtils.java      |  9 ++++-
 .../tomcat/util/codec/binary/package-info.java     | 21 +++++++++++
 .../apache/tomcat/util/codec/binary/package.html   | 21 -----------
 webapps/docs/changelog.xml                         |  3 ++
 7 files changed, 65 insertions(+), 50 deletions(-)

diff --git a/MERGE.txt b/MERGE.txt
index b4678e08a1..c63cb30d62 100644
--- a/MERGE.txt
+++ b/MERGE.txt
@@ -43,7 +43,7 @@ Codec
 Sub-tree:
 src/main/java/org/apache/commons/codec
 The SHA1 ID / tag for the most recent commit to be merged to Tomcat is:
-f03cbd3ba741758ead9f59bc07e6688a739a4813 (2023-01-03)
+rel/commons-codec-1.16,.1 (2024-02-09)
 Note: Only classes required for Base64 encoding/decoding. The rest are removed.
 
 FileUpload
diff --git a/java/org/apache/tomcat/util/codec/binary/Base64.java 
b/java/org/apache/tomcat/util/codec/binary/Base64.java
index 884c3190d0..a733df9937 100644
--- a/java/org/apache/tomcat/util/codec/binary/Base64.java
+++ b/java/org/apache/tomcat/util/codec/binary/Base64.java
@@ -53,7 +53,7 @@ import java.util.Objects;
 public class Base64 extends BaseNCodec {
 
     /**
-     * BASE32 characters are 6 bits in length.
+     * BASE64 characters are 6 bits in length.
      * They are formed by taking a block of 3 octets to form a 24-bit string,
      * which is converted into 4 BASE64 characters.
      */
@@ -64,9 +64,10 @@ public class Base64 extends BaseNCodec {
     /**
      * This array is a lookup table that translates 6-bit positive integer 
index values into their "Base64 Alphabet"
      * equivalents as specified in Table 1 of RFC 2045.
-     *
+     * <p>
      * Thanks to "commons" project in ws.apache.org for this code.
      * https://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
+     * </p>
      */
     private static final byte[] STANDARD_ENCODE_TABLE = {
             'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
@@ -93,12 +94,14 @@ public class Base64 extends BaseNCodec {
      * This array is a lookup table that translates Unicode characters drawn 
from the "Base64 Alphabet" (as specified
      * 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.
-     *
+     * <p>
      * 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).
-     *
+     * </p>
+     * <p>
      * Thanks to "commons" project in ws.apache.org for this code.
      * https://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
+     * </p>
      */
     private static final byte[] STANDARD_DECODE_TABLE = {
         //   0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
@@ -415,9 +418,10 @@ public class Base64 extends BaseNCodec {
     /**
      * Validates whether decoding the final trailing character is possible in 
the context
      * of the set of possible base 64 values.
-     *
-     * <p>The character is valid if the lower bits within the provided mask 
are zero. This
+     * <p>
+     * The character is valid if the lower bits within the provided mask are 
zero. This
      * is used to test the final trailing base-64 digit is zero in the bits 
that will be discarded.
+     * </p>
      *
      * @param emptyBitsMask The mask of the lower bits that should be empty
      * @param context the context to be used
@@ -450,7 +454,7 @@ public class Base64 extends BaseNCodec {
      */
     private final byte[] encodeTable;
 
-    // Only one decode table currently; keep for consistency with Base32 code
+    /** Only one decode table currently; keep for consistency with Base32 
code. */
     private final byte[] decodeTable;
 
     /**
@@ -657,8 +661,8 @@ public class Base64 extends BaseNCodec {
                     context.modulus = (context.modulus+1) % 
BYTES_PER_ENCODED_BLOCK;
                     context.ibitWorkArea = (context.ibitWorkArea << 
BITS_PER_ENCODED_BYTE) + result;
                     if (context.modulus == 0) {
-                        buffer[context.pos++] = (byte) ((context.ibitWorkArea 
>> 16) & MASK_8BITS);
-                        buffer[context.pos++] = (byte) ((context.ibitWorkArea 
>> 8) & MASK_8BITS);
+                        buffer[context.pos++] = (byte) (context.ibitWorkArea 
>> 16 & MASK_8BITS);
+                        buffer[context.pos++] = (byte) (context.ibitWorkArea 
>> 8 & MASK_8BITS);
                         buffer[context.pos++] = (byte) (context.ibitWorkArea & 
MASK_8BITS);
                     }
                 }
@@ -679,13 +683,13 @@ public class Base64 extends BaseNCodec {
                 case 2 : // 12 bits = 8 + 4
                     validateCharacter(MASK_4BITS, context);
                     context.ibitWorkArea = context.ibitWorkArea >> 4; // dump 
the extra 4 bits
-                    buffer[context.pos++] = (byte) ((context.ibitWorkArea) & 
MASK_8BITS);
+                    buffer[context.pos++] = (byte) (context.ibitWorkArea & 
MASK_8BITS);
                     break;
                 case 3 : // 18 bits = 8 + 8 + 2
                     validateCharacter(MASK_2BITS, context);
                     context.ibitWorkArea = context.ibitWorkArea >> 2; // dump 
2 bits
-                    buffer[context.pos++] = (byte) ((context.ibitWorkArea >> 
8) & MASK_8BITS);
-                    buffer[context.pos++] = (byte) ((context.ibitWorkArea) & 
MASK_8BITS);
+                    buffer[context.pos++] = (byte) (context.ibitWorkArea >> 8 
& MASK_8BITS);
+                    buffer[context.pos++] = (byte) (context.ibitWorkArea & 
MASK_8BITS);
                     break;
                 default:
                     throw new IllegalStateException(sm.getString(
@@ -734,9 +738,9 @@ public class Base64 extends BaseNCodec {
                     break;
                 case 1 : // 8 bits = 6 + 2
                     // top 6 bits:
-                    buffer[context.pos++] = encodeTable[(context.ibitWorkArea 
>> 2) & MASK_6BITS];
+                    buffer[context.pos++] = encodeTable[context.ibitWorkArea 
>> 2 & MASK_6BITS];
                     // remaining 2:
-                    buffer[context.pos++] = encodeTable[(context.ibitWorkArea 
<< 4) & MASK_6BITS];
+                    buffer[context.pos++] = encodeTable[context.ibitWorkArea 
<< 4 & MASK_6BITS];
                     // URL-SAFE skips the padding to further reduce size.
                     if (encodeTable == STANDARD_ENCODE_TABLE) {
                         buffer[context.pos++] = pad;
@@ -745,9 +749,9 @@ public class Base64 extends BaseNCodec {
                     break;
 
                 case 2 : // 16 bits = 6 + 6 + 4
-                    buffer[context.pos++] = encodeTable[(context.ibitWorkArea 
>> 10) & MASK_6BITS];
-                    buffer[context.pos++] = encodeTable[(context.ibitWorkArea 
>> 4) & MASK_6BITS];
-                    buffer[context.pos++] = encodeTable[(context.ibitWorkArea 
<< 2) & MASK_6BITS];
+                    buffer[context.pos++] = encodeTable[context.ibitWorkArea 
>> 10 & MASK_6BITS];
+                    buffer[context.pos++] = encodeTable[context.ibitWorkArea 
>> 4 & MASK_6BITS];
+                    buffer[context.pos++] = encodeTable[context.ibitWorkArea 
<< 2 & MASK_6BITS];
                     // URL-SAFE skips the padding to further reduce size.
                     if (encodeTable == STANDARD_ENCODE_TABLE) {
                         buffer[context.pos++] = pad;
@@ -773,9 +777,9 @@ public class Base64 extends BaseNCodec {
                 }
                 context.ibitWorkArea = (context.ibitWorkArea << 8) + b; //  
BITS_PER_BYTE
                 if (0 == context.modulus) { // 3 bytes = 24 bits = 4 * 6 bits 
to extract
-                    buffer[context.pos++] = encodeTable[(context.ibitWorkArea 
>> 18) & MASK_6BITS];
-                    buffer[context.pos++] = encodeTable[(context.ibitWorkArea 
>> 12) & MASK_6BITS];
-                    buffer[context.pos++] = encodeTable[(context.ibitWorkArea 
>> 6) & MASK_6BITS];
+                    buffer[context.pos++] = encodeTable[context.ibitWorkArea 
>> 18 & MASK_6BITS];
+                    buffer[context.pos++] = encodeTable[context.ibitWorkArea 
>> 12 & MASK_6BITS];
+                    buffer[context.pos++] = encodeTable[context.ibitWorkArea 
>> 6 & MASK_6BITS];
                     buffer[context.pos++] = encodeTable[context.ibitWorkArea & 
MASK_6BITS];
                     context.currentLinePos += BYTES_PER_ENCODED_BLOCK;
                     if (lineLength > 0 && lineLength <= 
context.currentLinePos) {
diff --git a/java/org/apache/tomcat/util/codec/binary/BaseNCodec.java 
b/java/org/apache/tomcat/util/codec/binary/BaseNCodec.java
index 80ebaeb288..394f57fddc 100644
--- a/java/org/apache/tomcat/util/codec/binary/BaseNCodec.java
+++ b/java/org/apache/tomcat/util/codec/binary/BaseNCodec.java
@@ -136,7 +136,7 @@ public abstract class BaseNCodec {
     /**
      * The maximum size buffer to allocate.
      *
-     * <p>This is set to the same size used in the JDK {@code 
java.util.ArrayList}:</p>
+     * <p>This is set to the same size used in the JDK {@link 
java.util.ArrayList}:</p>
      * <blockquote>
      * Some VMs reserve some header words in an array.
      * Attempts to allocate larger arrays may result in
@@ -262,6 +262,7 @@ public abstract class BaseNCodec {
     /**
      * Note {@code lineLength} is rounded down to the nearest multiple of the 
encoded block size.
      * If {@code chunkSeparatorLength} is zero, then chunking is disabled.
+     *
      * @param unencodedBlockSize the size of an unencoded block (e.g. Base64 = 
3)
      * @param encodedBlockSize the size of an encoded block (e.g. Base64 = 4)
      * @param lineLength if &gt; 0, use chunking with a length {@code 
lineLength}
@@ -275,6 +276,7 @@ public abstract class BaseNCodec {
     /**
      * Note {@code lineLength} is rounded down to the nearest multiple of the 
encoded block size.
      * If {@code chunkSeparatorLength} is zero, then chunking is disabled.
+     *
      * @param unencodedBlockSize the size of an unencoded block (e.g. Base64 = 
3)
      * @param encodedBlockSize the size of an encoded block (e.g. Base64 = 4)
      * @param lineLength if &gt; 0, use chunking with a length {@code 
lineLength}
@@ -286,7 +288,7 @@ public abstract class BaseNCodec {
         this.unencodedBlockSize = unencodedBlockSize;
         this.encodedBlockSize = encodedBlockSize;
         final boolean useChunking = lineLength > 0 && chunkSeparatorLength > 0;
-        this.lineLength = useChunking ? (lineLength / encodedBlockSize) * 
encodedBlockSize : 0;
+        this.lineLength = useChunking ? lineLength / encodedBlockSize * 
encodedBlockSize : 0;
         this.chunkSeparatorLength = chunkSeparatorLength;
         this.pad = pad;
     }
@@ -448,7 +450,7 @@ public abstract class BaseNCodec {
     }
 
     /**
-     * Get the default buffer size. Can be overridden.
+     * Gets the default buffer size. Can be overridden.
      *
      * @return the default buffer size.
      */
@@ -467,10 +469,10 @@ public abstract class BaseNCodec {
     public long getEncodedLength(final byte[] pArray) {
         // Calculate non-chunked size - rounded up to allow for padding
         // cast to long is needed to avoid possibility of overflow
-        long len = ((pArray.length + unencodedBlockSize-1)  / 
unencodedBlockSize) * (long) encodedBlockSize;
+        long len = (pArray.length + unencodedBlockSize-1)  / 
unencodedBlockSize * (long) encodedBlockSize;
         if (lineLength > 0) { // We're using chunking
             // Round up to nearest multiple
-            len += ((len + lineLength-1) / lineLength) * chunkSeparatorLength;
+            len += (len + lineLength-1) / lineLength * chunkSeparatorLength;
         }
         return len;
     }
@@ -532,7 +534,8 @@ public abstract class BaseNCodec {
      * Extracts buffered data into the provided byte[] array, starting at 
position bPos, up to a maximum of bAvail
      * bytes. Returns how many bytes were actually extracted.
      * <p>
-     * Package protected for access from I/O streams.
+     * Package private for access from I/O streams.
+     * </p>
      *
      * @param b
      *            byte[] array to extract the buffered data into.
diff --git a/java/org/apache/tomcat/util/codec/binary/StringUtils.java 
b/java/org/apache/tomcat/util/codec/binary/StringUtils.java
index 6a2b8131f6..ab050f3509 100644
--- a/java/org/apache/tomcat/util/codec/binary/StringUtils.java
+++ b/java/org/apache/tomcat/util/codec/binary/StringUtils.java
@@ -26,7 +26,8 @@ import java.nio.charset.StandardCharsets;
  *
  * <p>This class is immutable and thread-safe.</p>
  *
- * @see <a 
href="http://download.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html";>Standard
 charsets</a>
+ * @see Charset
+ * @see StandardCharsets
  * @since 1.4
  */
 public class StringUtils {
@@ -55,7 +56,7 @@ public class StringUtils {
      *             Thrown if {@link StandardCharsets#UTF_8} is not 
initialized, which should never happen
      *             since it is required by the Java platform specification.
      * @since As of 1.7, throws {@link NullPointerException} instead of 
UnsupportedEncodingException
-     * @see <a 
href="http://download.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html";>Standard
 charsets</a>
+     * @see Charset
      */
     public static byte[] getBytesUtf8(final String string) {
         return getBytes(string, StandardCharsets.UTF_8);
@@ -108,4 +109,8 @@ public class StringUtils {
     public static String newStringUtf8(final byte[] bytes) {
         return newString(bytes, StandardCharsets.UTF_8);
     }
+
+    private StringUtils() {
+        // empty
+    }
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/codec/binary/package-info.java 
b/java/org/apache/tomcat/util/codec/binary/package-info.java
new file mode 100644
index 0000000000..605aeded44
--- /dev/null
+++ b/java/org/apache/tomcat/util/codec/binary/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Base64 String encoding and decoding.
+ */
+package org.apache.tomcat.util.codec.binary;
diff --git a/java/org/apache/tomcat/util/codec/binary/package.html 
b/java/org/apache/tomcat/util/codec/binary/package.html
deleted file mode 100644
index 13345ece40..0000000000
--- a/java/org/apache/tomcat/util/codec/binary/package.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<html>
- <body>
-  Base64, Base32, Binary, and Hexadecimal String encoding and decoding.
- </body>
-</html>
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index d41174a6e1..735429b85d 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -171,6 +171,9 @@
       <update>
         Update the internal fork of Apache Commons BCEL to 6.8.2. (markt)
       </update>
+      <update>
+        Update the internal fork of Apache Commons Codec to 1.16.1. (markt)
+      </update>
     </changelog>
   </subsection>
 </section>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to