ea0cdf7
diff -up ./java/org/apache/coyote/http2/HpackDecoder.java.orig ./java/org/apache/coyote/http2/HpackDecoder.java
ea0cdf7
--- ./java/org/apache/coyote/http2/HpackDecoder.java.orig	2020-12-18 17:16:34.502408251 +0800
ea0cdf7
+++ ./java/org/apache/coyote/http2/HpackDecoder.java	2020-12-18 17:22:27.675912403 +0800
ea0cdf7
@@ -72,8 +72,6 @@ public class HpackDecoder {
ea0cdf7
     private volatile boolean countedCookie;
ea0cdf7
     private volatile int headerSize = 0;
ea0cdf7
 
ea0cdf7
-    private final StringBuilder stringBuilder = new StringBuilder();
ea0cdf7
-
ea0cdf7
     HpackDecoder(int maxMemorySize) {
ea0cdf7
         this.maxMemorySizeHard = maxMemorySize;
ea0cdf7
         this.maxMemorySizeSoft = maxMemorySize;
ea0cdf7
@@ -222,19 +220,17 @@ public class HpackDecoder {
ea0cdf7
         if (huffman) {
ea0cdf7
             return readHuffmanString(length, buffer);
ea0cdf7
         }
ea0cdf7
+	StringBuilder stringBuilder = new StringBuilder(length);
ea0cdf7
         for (int i = 0; i < length; ++i) {
ea0cdf7
             stringBuilder.append((char) buffer.get());
ea0cdf7
         }
ea0cdf7
-        String ret = stringBuilder.toString();
ea0cdf7
-        stringBuilder.setLength(0);
ea0cdf7
-        return ret;
ea0cdf7
+        return stringBuilder.toString();
ea0cdf7
     }
ea0cdf7
 
ea0cdf7
     private String readHuffmanString(int length, ByteBuffer buffer) throws HpackException {
ea0cdf7
+	StringBuilder stringBuilder = new StringBuilder(length);
ea0cdf7
         HPackHuffman.decode(buffer, length, stringBuilder);
ea0cdf7
-        String ret = stringBuilder.toString();
ea0cdf7
-        stringBuilder.setLength(0);
ea0cdf7
-        return ret;
ea0cdf7
+        return stringBuilder.toString();
ea0cdf7
     }
ea0cdf7
 
ea0cdf7
     private String handleIndexedHeaderName(int index) throws HpackException {
ea0cdf7
diff -up ./webapps/docs/changelog.xml.orig ./webapps/docs/changelog.xml
ea0cdf7
--- webapps/docs/changelog.xml.orig	2020-12-18 17:25:29.287714327 +0800
ea0cdf7
+++ webapps/docs/changelog.xml	2020-12-18 17:30:42.780824782 +0800
ea0cdf7
@@ -159,6 +159,9 @@
ea0cdf7
         frame in the input buffer. (markt)
ea0cdf7
       </fix>
ea0cdf7
     </changelog>
ea0cdf7
+      <fix>
ea0cdf7
+        <bug>64830</bug>: Fix concurrency issue in HPACK decoder. (markt)
ea0cdf7
+      </fix>
ea0cdf7
   </subsection>
ea0cdf7
   <subsection name="Jasper">
ea0cdf7
     <changelog>