From 2574a121fc16e5653ef678e68be8657bc25f8b7993406a42a0b4e4562b696efe Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Tue, 19 Oct 2021 05:08:40 +0000 Subject: [PATCH] Accepting request 926112 from home:balta3:tomcat9 Update Tomcat to 9.0.43, ecj 4.18 as submitted in another request is required - Update to Tomcat 9.0.43. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.43_(markt) - Removed Patches because fixed upstream now: * tomcat-9.0-CVE-2021-25122.patch * tomcat-9.0-CVE-2021-25329.patch - Update to Tomcat 9.0.41. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.41_(markt) - Update to Tomcat 9.0.40. See changelog at https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.40_(markt) - Removed Patches because fixed upstream now: * tomcat-9.0-CVE-2020-17527.patch * tomcat-9.0-CVE-2021-24122.patch OBS-URL: https://build.opensuse.org/request/show/926112 OBS-URL: https://build.opensuse.org/package/show/Java:packages/tomcat?expand=0&rev=224 --- apache-tomcat-9.0.39-src.tar.gz | 3 - apache-tomcat-9.0.39-src.tar.gz.asc | 16 - apache-tomcat-9.0.43-src.tar.gz | 3 + apache-tomcat-9.0.43-src.tar.gz.asc | 16 + tomcat-9.0-CVE-2020-17527.patch | 62 --- tomcat-9.0-CVE-2021-24122.patch | 77 --- tomcat-9.0-CVE-2021-25122.patch | 31 -- tomcat-9.0-CVE-2021-25329.patch | 139 ----- ...t.patch => tomcat-9.0.43-java8compat.patch | 514 +++++++++--------- tomcat.changes | 24 + tomcat.spec | 12 +- 11 files changed, 302 insertions(+), 595 deletions(-) delete mode 100644 apache-tomcat-9.0.39-src.tar.gz delete mode 100644 apache-tomcat-9.0.39-src.tar.gz.asc create mode 100644 apache-tomcat-9.0.43-src.tar.gz create mode 100644 apache-tomcat-9.0.43-src.tar.gz.asc delete mode 100644 tomcat-9.0-CVE-2020-17527.patch delete mode 100644 tomcat-9.0-CVE-2021-24122.patch delete mode 100644 tomcat-9.0-CVE-2021-25122.patch delete mode 100644 tomcat-9.0-CVE-2021-25329.patch rename tomcat-9.0.39-java8compat.patch => tomcat-9.0.43-java8compat.patch (84%) diff --git a/apache-tomcat-9.0.39-src.tar.gz b/apache-tomcat-9.0.39-src.tar.gz deleted file mode 100644 index c49ee3b..0000000 --- a/apache-tomcat-9.0.39-src.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f6ed1a6ae4f9a67da9e75f79ba6629ce309f7101bce072e1b52c7abb6e2a93c -size 5966825 diff --git a/apache-tomcat-9.0.39-src.tar.gz.asc b/apache-tomcat-9.0.39-src.tar.gz.asc deleted file mode 100644 index b768589..0000000 --- a/apache-tomcat-9.0.39-src.tar.gz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCAAdFiEEqcXfTSLpmZjZh1pREMAcWi9gWecFAl98fisACgkQEMAcWi9g -Wed+WQ//QwG6pcX8dVwkyuymZgFS3oKXpJHujnpuY2K4aFzAptkioFH+Fqw+IeJK -hXc/i1IiWw69zJBX1GDhlTFrW9g3cX0KqsUSXkRXo+AATOb5fdIjofnuPDbbXKtN -nK0eQsm+OFh1WW8mbMVZSgQ3uqbVJYwukZCjwelrdDLKuhl2yHFWGteTQOTo0LdU -cgYrEenMp5c+hBVBw8iJ4HUbr2NBfXRD0KRUOD9m4f75BJshVNFxMUu0WOENIkNw -JixJIYHhf7k+eXCJUHKcV52haHsStaWcqi+2Pcg7sOl33bKjL4H4ANH+WLqbzANF -NDY3YxV71w+yC5MxPRTjTnIfUNYOcARs19tVVORaUzNqiRIY/ymur7jZi9bHgnZW -tZ/ldQKDOWmfuRgRPbgKFvpZubiECy9EiILVSDZcU2HRNGwEpboRkx+RZtavGvnm -DizEN8beYgsr4Xf/62p+BhsDGVVKEmgVIecPDiwFWoZwv3lmC31809uHze6wlVge -sFFNS1ly/xiNjLPXzPx1XQ4nLsLVC7ERKG0v1b2NmH1oayWXeRqDzTNV9/d420xU -nCWNg36Y8SEiCdiYpKYladggwmg5j5VWx9H3DuDWxrrqhOqJBOLwC3fnTm9slLqC -lLdaflcWqqtj6v1qmhDwnSesCfzubN/XYtT2eIWYMnt1OHuFRW0= -=l6Lm ------END PGP SIGNATURE----- diff --git a/apache-tomcat-9.0.43-src.tar.gz b/apache-tomcat-9.0.43-src.tar.gz new file mode 100644 index 0000000..a580240 --- /dev/null +++ b/apache-tomcat-9.0.43-src.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28db36e1f1440c8517513a282f71383d825fe1383d8e5317e22e5122803c40ca +size 6042010 diff --git a/apache-tomcat-9.0.43-src.tar.gz.asc b/apache-tomcat-9.0.43-src.tar.gz.asc new file mode 100644 index 0000000..898a610 --- /dev/null +++ b/apache-tomcat-9.0.43-src.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEqcXfTSLpmZjZh1pREMAcWi9gWecFAmATIH8ACgkQEMAcWi9g +Wecu9hAAhNGHtILVHGLWoqGJPVC29l2kgXiDshkFbgHKxeR6K5kooaxIB0N9QGGb +9H/BEwM92Kdl2VwQwtZBrW+x+worRQWIAHLCS9KF/UaVMLSIO54E5+aeJ6+vgBPC +AQdIn2mZ4o4RtUfYWsGgtPrQvGR/M+VSLKALn6SeB9O60zHrDvgpdVp0coFw0aIY +mi0HWsfoZltGTqscsgVEsSvolkvo7Au0c9DAGVGSLzhavlHT3Wnvsg8RuQ+oV2G+ +aX1R1J7xuPyDxrvLHShOu9ERxxHmEIgJ5/wrWgGUEwJJQmSAqFQHW7q1kswOmL5a +mfWYSsqrqcsc+8QI6oYnVfN6Yu/Podcb1Tbs0elYdn+rEU0j73j6gGITSzSFokkZ +2tueXJ/U5rHthWMiL8xLZXp9RpOzGgpo91TY3qSHsvpVi7HSX9kLsUq4gHFPDehF +s+5ycfYy+fzsRUs6Fsa/2FfRIy9zEatzcjX2yvFCjBaeKbv8cRixeVCqsERopIwW +5hwh1hmqQNn4FuOS/Ei03QkRHGPHWhrBU5GS0ZEruhUNfc4kfogBBsaUBQkfv94C +EScu+rTeOSEv4exWAH/IiaOHPPYQTH9RXJ+aPbZpZ+7BOzpYU30hFGZwhRli1hqa +Ib7wuGMQXfNJQ8ndAlzPIMjp12dLOYeOeoRqHK5duaXfK9e+WN8= +=KHse +-----END PGP SIGNATURE----- diff --git a/tomcat-9.0-CVE-2020-17527.patch b/tomcat-9.0-CVE-2020-17527.patch deleted file mode 100644 index 901797d..0000000 --- a/tomcat-9.0-CVE-2020-17527.patch +++ /dev/null @@ -1,62 +0,0 @@ -From d56293f816d6dc9e2b47107f208fa9e95db58c65 Mon Sep 17 00:00:00 2001 -From: Mark Thomas -Date: Mon, 9 Nov 2020 19:23:12 +0000 -Subject: [PATCH] Fix BZ 64830 - concurrency issue in HPACK decoder - -https://bz.apache.org/bugzilla/show_bug.cgi?id=64830 ---- -java/org/apache/coyote/http2/HpackDecoder.java | 12 ++++-------- -webapps/docs/changelog.xml | 3 +++ -2 files changed, 7 insertions(+), 8 deletions(-) - -Index: apache-tomcat-9.0.36-src/java/org/apache/coyote/http2/HpackDecoder.java -=================================================================== ---- apache-tomcat-9.0.36-src.orig/java/org/apache/coyote/http2/HpackDecoder.java -+++ apache-tomcat-9.0.36-src/java/org/apache/coyote/http2/HpackDecoder.java -@@ -73,8 +73,6 @@ public class HpackDecoder { - private volatile boolean countedCookie; - private volatile int headerSize = 0; - -- private final StringBuilder stringBuilder = new StringBuilder(); -- - HpackDecoder(int maxMemorySize) { - this.maxMemorySizeHard = maxMemorySize; - this.maxMemorySizeSoft = maxMemorySize; -@@ -223,19 +221,17 @@ public class HpackDecoder { - if (huffman) { - return readHuffmanString(length, buffer); - } -+ StringBuilder stringBuilder = new StringBuilder(length); - for (int i = 0; i < length; ++i) { - stringBuilder.append((char) buffer.get()); - } -- String ret = stringBuilder.toString(); -- stringBuilder.setLength(0); -- return ret; -+ return stringBuilder.toString(); - } - - private String readHuffmanString(int length, ByteBuffer buffer) throws HpackException { -+ StringBuilder stringBuilder = new StringBuilder(length); - HPackHuffman.decode(buffer, length, stringBuilder); -- String ret = stringBuilder.toString(); -- stringBuilder.setLength(0); -- return ret; -+ return stringBuilder.toString(); - } - - private String handleIndexedHeaderName(int index) throws HpackException { -Index: apache-tomcat-9.0.36-src/webapps/docs/changelog.xml -=================================================================== ---- apache-tomcat-9.0.36-src.orig/webapps/docs/changelog.xml -+++ apache-tomcat-9.0.36-src/webapps/docs/changelog.xml -@@ -126,6 +126,9 @@ - Include the target URL in the log message when a WebSocket connection - fails. (markt) - -+ -+ 64830: Fix concurrency issue in HPACK decoder. (markt) -+ - - - diff --git a/tomcat-9.0-CVE-2021-24122.patch b/tomcat-9.0-CVE-2021-24122.patch deleted file mode 100644 index 31ff7f3..0000000 --- a/tomcat-9.0-CVE-2021-24122.patch +++ /dev/null @@ -1,77 +0,0 @@ -Index: apache-tomcat-9.0.36-src/java/org/apache/catalina/webresources/AbstractFileResourceSet.java -=================================================================== ---- apache-tomcat-9.0.36-src.orig/java/org/apache/catalina/webresources/AbstractFileResourceSet.java -+++ apache-tomcat-9.0.36-src/java/org/apache/catalina/webresources/AbstractFileResourceSet.java -@@ -22,11 +22,15 @@ import java.net.MalformedURLException; - import java.net.URL; - - import org.apache.catalina.LifecycleException; -+import org.apache.juli.logging.Log; -+import org.apache.juli.logging.LogFactory; - import org.apache.tomcat.util.compat.JrePlatform; - import org.apache.tomcat.util.http.RequestUtil; - - public abstract class AbstractFileResourceSet extends AbstractResourceSet { - -+ private static final Log log = LogFactory.getLog(AbstractFileResourceSet.class); -+ - protected static final String[] EMPTY_STRING_ARRAY = new String[0]; - - private File fileBase; -@@ -128,6 +132,19 @@ public abstract class AbstractFileResour - canPath = normalize(canPath); - } - if (!canPath.equals(absPath)) { -+ if (!canPath.equalsIgnoreCase(absPath)) { -+ // Typically means symlinks are in use but being ignored. Given -+ // the symlink was likely created for a reason, log a warning -+ // that it was ignored. -+ String msg = sm.getString("abstractFileResourceSet.canonicalfileCheckFailed", -+ getRoot().getContext().getName(), absPath, canPath); -+ // Log issues with configuration files at a higher level -+ if(absPath.startsWith("/META-INF/") || absPath.startsWith("/WEB-INF/")) { -+ log.error(msg); -+ } else { -+ log.warn(msg); -+ } -+ } - return null; - } - -@@ -144,7 +161,7 @@ public abstract class AbstractFileResour - // expression irrespective of input length. - for (int i = 0; i < len; i++) { - char c = name.charAt(i); -- if (c == '\"' || c == '<' || c == '>') { -+ if (c == '\"' || c == '<' || c == '>' || c == ':') { - // These characters are disallowed in Windows file names and - // there are known problems for file names with these characters - // when using File#getCanonicalPath(). -Index: apache-tomcat-9.0.36-src/java/org/apache/catalina/webresources/LocalStrings.properties -=================================================================== ---- apache-tomcat-9.0.36-src.orig/java/org/apache/catalina/webresources/LocalStrings.properties -+++ apache-tomcat-9.0.36-src/java/org/apache/catalina/webresources/LocalStrings.properties -@@ -15,6 +15,8 @@ - - abstractArchiveResourceSet.setReadOnlyFalse=Archive based WebResourceSets such as those based on JARs are hard-coded to be read-only and may not be configured to be read-write - -+abstractFileResourceSet.canonicalfileCheckFailed=Resource for web application [{0}] at path [{1}] was not loaded as the canonical path [{2}] did not match. Use of symlinks is one possible cause. -+ - abstractResource.getContentFail=Unable to return [{0}] as a byte array - abstractResource.getContentTooLarge=Unable to return [{0}] as a byte array since the resource is [{1}] bytes in size which is larger than the maximum size of a byte array - -Index: apache-tomcat-9.0.36-src/webapps/docs/changelog.xml -=================================================================== ---- apache-tomcat-9.0.36-src.orig/webapps/docs/changelog.xml -+++ apache-tomcat-9.0.36-src/webapps/docs/changelog.xml -@@ -81,6 +81,10 @@ - 64493: Revert possible change of returned protocol - attribute value on the Connector. (remm) - -+ -+ 64871: Log a warning if Tomcat blocks access to a file -+ because it uses symlinks. (markt) -+ - - - diff --git a/tomcat-9.0-CVE-2021-25122.patch b/tomcat-9.0-CVE-2021-25122.patch deleted file mode 100644 index 194be17..0000000 --- a/tomcat-9.0-CVE-2021-25122.patch +++ /dev/null @@ -1,31 +0,0 @@ -Index: apache-tomcat-9.0.36-src/java/org/apache/coyote/AbstractProtocol.java -=================================================================== ---- apache-tomcat-9.0.36-src.orig/java/org/apache/coyote/AbstractProtocol.java -+++ apache-tomcat-9.0.36-src/java/org/apache/coyote/AbstractProtocol.java -@@ -870,8 +870,10 @@ public abstract class AbstractProtocol - - -+ Additional fix for 64830 to address an edge case that could -+ trigger request corruption with h2c connections. (markt) -+ -+ - Reduce reflection use and remove AJP specific code in the Connector. - (remm/markt/fhanik) - diff --git a/tomcat-9.0-CVE-2021-25329.patch b/tomcat-9.0-CVE-2021-25329.patch deleted file mode 100644 index bc78ebc..0000000 --- a/tomcat-9.0-CVE-2021-25329.patch +++ /dev/null @@ -1,139 +0,0 @@ -Index: apache-tomcat-9.0.36-src/java/org/apache/catalina/servlets/DefaultServlet.java -=================================================================== ---- apache-tomcat-9.0.36-src.orig/java/org/apache/catalina/servlets/DefaultServlet.java -+++ apache-tomcat-9.0.36-src/java/org/apache/catalina/servlets/DefaultServlet.java -@@ -2131,7 +2131,7 @@ public class DefaultServlet extends Http - - // First check that the resulting path is under the provided base - try { -- if (!candidate.getCanonicalPath().startsWith(base.getCanonicalPath())) { -+ if (!candidate.getCanonicalFile().toPath().startsWith(base.getCanonicalFile().toPath())) { - return null; - } - } catch (IOException ioe) { -Index: apache-tomcat-9.0.36-src/java/org/apache/catalina/session/FileStore.java -=================================================================== ---- apache-tomcat-9.0.36-src.orig/java/org/apache/catalina/session/FileStore.java -+++ apache-tomcat-9.0.36-src/java/org/apache/catalina/session/FileStore.java -@@ -351,7 +351,7 @@ public final class FileStore extends Sto - File file = new File(storageDir, filename); - - // Check the file is within the storage directory -- if (!file.getCanonicalPath().startsWith(storageDir.getCanonicalPath())) { -+ if (!file.getCanonicalFile().toPath().startsWith(storageDir.getCanonicalFile().toPath())) { - log.warn(sm.getString("fileStore.invalid", file.getPath(), id)); - return null; - } -Index: apache-tomcat-9.0.36-src/java/org/apache/catalina/startup/ContextConfig.java -=================================================================== ---- apache-tomcat-9.0.36-src.orig/java/org/apache/catalina/startup/ContextConfig.java -+++ apache-tomcat-9.0.36-src/java/org/apache/catalina/startup/ContextConfig.java -@@ -653,7 +653,8 @@ public class ContextConfig implements Li - String docBaseCanonical = docBaseAbsoluteFile.getCanonicalPath(); - - // Re-calculate now docBase is a canonical path -- boolean docBaseCanonicalInAppBase = docBaseCanonical.startsWith(appBase.getPath() + File.separatorChar); -+ boolean docBaseCanonicalInAppBase = -+ docBaseAbsoluteFile.getCanonicalFile().toPath().startsWith(appBase.toPath()); - String docBase; - if (docBaseCanonicalInAppBase) { - docBase = docBaseCanonical.substring(appBase.getPath().length()); -Index: apache-tomcat-9.0.36-src/java/org/apache/catalina/startup/ExpandWar.java -=================================================================== ---- apache-tomcat-9.0.36-src.orig/java/org/apache/catalina/startup/ExpandWar.java -+++ apache-tomcat-9.0.36-src/java/org/apache/catalina/startup/ExpandWar.java -@@ -26,6 +26,7 @@ import java.net.JarURLConnection; - import java.net.URL; - import java.net.URLConnection; - import java.nio.channels.FileChannel; -+import java.nio.file.Path; - import java.util.Enumeration; - import java.util.jar.JarEntry; - import java.util.jar.JarFile; -@@ -116,10 +117,7 @@ public class ExpandWar { - } - - // Expand the WAR into the new document base directory -- String canonicalDocBasePrefix = docBase.getCanonicalPath(); -- if (!canonicalDocBasePrefix.endsWith(File.separator)) { -- canonicalDocBasePrefix += File.separator; -- } -+ Path canonicalDocBasePath = docBase.getCanonicalFile().toPath(); - - // Creating war tracker parent (normally META-INF) - File warTrackerParent = warTracker.getParentFile(); -@@ -134,14 +132,13 @@ public class ExpandWar { - JarEntry jarEntry = jarEntries.nextElement(); - String name = jarEntry.getName(); - File expandedFile = new File(docBase, name); -- if (!expandedFile.getCanonicalPath().startsWith( -- canonicalDocBasePrefix)) { -+ if (!expandedFile.getCanonicalFile().toPath().startsWith(canonicalDocBasePath)) { - // Trying to expand outside the docBase - // Throw an exception to stop the deployment - throw new IllegalArgumentException( - sm.getString("expandWar.illegalPath",war, name, - expandedFile.getCanonicalPath(), -- canonicalDocBasePrefix)); -+ canonicalDocBasePath)); - } - int last = name.lastIndexOf('/'); - if (last >= 0) { -@@ -217,10 +214,7 @@ public class ExpandWar { - File docBase = new File(host.getAppBaseFile(), pathname); - - // Calculate the document base directory -- String canonicalDocBasePrefix = docBase.getCanonicalPath(); -- if (!canonicalDocBasePrefix.endsWith(File.separator)) { -- canonicalDocBasePrefix += File.separator; -- } -+ Path canonicalDocBasePath = docBase.getCanonicalFile().toPath(); - JarURLConnection juc = (JarURLConnection) war.openConnection(); - juc.setUseCaches(false); - try (JarFile jarFile = juc.getJarFile()) { -@@ -229,14 +223,13 @@ public class ExpandWar { - JarEntry jarEntry = jarEntries.nextElement(); - String name = jarEntry.getName(); - File expandedFile = new File(docBase, name); -- if (!expandedFile.getCanonicalPath().startsWith( -- canonicalDocBasePrefix)) { -+ if (!expandedFile.getCanonicalFile().toPath().startsWith(canonicalDocBasePath)) { - // Entry located outside the docBase - // Throw an exception to stop the deployment - throw new IllegalArgumentException( - sm.getString("expandWar.illegalPath",war, name, - expandedFile.getCanonicalPath(), -- canonicalDocBasePrefix)); -+ canonicalDocBasePath)); - } - } - } catch (IOException e) { -Index: apache-tomcat-9.0.36-src/java/org/apache/catalina/startup/HostConfig.java -=================================================================== ---- apache-tomcat-9.0.36-src.orig/java/org/apache/catalina/startup/HostConfig.java -+++ apache-tomcat-9.0.36-src/java/org/apache/catalina/startup/HostConfig.java -@@ -598,8 +598,7 @@ public class HostConfig implements Lifec - docBase = new File(host.getAppBaseFile(), context.getDocBase()); - } - // If external docBase, register .xml as redeploy first -- if (!docBase.getCanonicalPath().startsWith( -- host.getAppBaseFile().getAbsolutePath() + File.separator)) { -+ if (!docBase.getCanonicalFile().toPath().startsWith(host.getAppBaseFile().toPath())) { - isExternal = true; - deployedApp.redeployResources.put( - contextXml.getAbsolutePath(), -Index: apache-tomcat-9.0.36-src/webapps/docs/changelog.xml -=================================================================== ---- apache-tomcat-9.0.36-src.orig/webapps/docs/changelog.xml -+++ apache-tomcat-9.0.36-src/webapps/docs/changelog.xml -@@ -159,6 +159,10 @@ - - Update dependency on bnd to 5.1.0. (markt) - -+ -+ Use java.nio.file.Path to test for one directory being a -+ sub-directory of another in a consistent way. (markt) -+ - - - diff --git a/tomcat-9.0.39-java8compat.patch b/tomcat-9.0.43-java8compat.patch similarity index 84% rename from tomcat-9.0.39-java8compat.patch rename to tomcat-9.0.43-java8compat.patch index 2ff7569..33294bb 100644 --- a/tomcat-9.0.39-java8compat.patch +++ b/tomcat-9.0.43-java8compat.patch @@ -1,6 +1,6 @@ -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/connector/InputBuffer.java apache-tomcat-9.0.39-src/java/org/apache/catalina/connector/InputBuffer.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/connector/InputBuffer.java 2020-10-06 16:23:46.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/catalina/connector/InputBuffer.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/catalina/connector/InputBuffer.java apache-tomcat-9.0.43-src/java/org/apache/catalina/connector/InputBuffer.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/catalina/connector/InputBuffer.java 2021-01-28 21:36:21.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/catalina/connector/InputBuffer.java 2021-10-18 22:46:03.740843061 +0200 @@ -389,10 +389,10 @@ public class InputBuffer extends Reader } int n = Math.min(to.remaining(), bb.remaining()); @@ -61,9 +61,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/connector/Inp cb = tmp; tmp = null; } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/connector/OutputBuffer.java apache-tomcat-9.0.39-src/java/org/apache/catalina/connector/OutputBuffer.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/connector/OutputBuffer.java 2020-10-06 16:23:46.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/catalina/connector/OutputBuffer.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/catalina/connector/OutputBuffer.java apache-tomcat-9.0.43-src/java/org/apache/catalina/connector/OutputBuffer.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/catalina/connector/OutputBuffer.java 2021-01-28 21:36:21.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/catalina/connector/OutputBuffer.java 2021-10-18 22:46:03.740843061 +0200 @@ -761,10 +761,10 @@ public class OutputBuffer extends Writer int limit = bb.capacity(); int fromLimit = from.limit(); @@ -78,9 +78,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/connector/Out } if (from.remaining() > 0) { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java apache-tomcat-9.0.39-src/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java 2020-10-06 16:23:49.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java apache-tomcat-9.0.43-src/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java 2021-01-28 21:36:25.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java 2021-10-18 22:46:03.744843076 +0200 @@ -18,6 +18,7 @@ package org.apache.catalina.tribes.transport.nio; import java.io.IOException; @@ -134,9 +134,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/tribes/transp //did we get a package count = reader.hasPackage()?1:-1; } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/tribes/transport/nio/NioSender.java apache-tomcat-9.0.39-src/java/org/apache/catalina/tribes/transport/nio/NioSender.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/tribes/transport/nio/NioSender.java 2020-10-06 16:23:49.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/catalina/tribes/transport/nio/NioSender.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/catalina/tribes/transport/nio/NioSender.java apache-tomcat-9.0.43-src/java/org/apache/catalina/tribes/transport/nio/NioSender.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/catalina/tribes/transport/nio/NioSender.java 2021-01-28 21:36:25.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/catalina/tribes/transport/nio/NioSender.java 2021-10-18 22:46:03.744843076 +0200 @@ -20,6 +20,7 @@ package org.apache.catalina.tribes.trans import java.io.EOFException; import java.io.IOException; @@ -201,9 +201,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/catalina/tribes/transp if (isConnected()) { if (isUdpBased()) dataChannel.register(getSelector(), SelectionKey.OP_WRITE, this); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/ajp/AjpProcessor.java apache-tomcat-9.0.39-src/java/org/apache/coyote/ajp/AjpProcessor.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/ajp/AjpProcessor.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/ajp/AjpProcessor.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/ajp/AjpProcessor.java apache-tomcat-9.0.43-src/java/org/apache/coyote/ajp/AjpProcessor.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/ajp/AjpProcessor.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/ajp/AjpProcessor.java 2021-10-18 22:46:03.744843076 +0200 @@ -21,6 +21,7 @@ import java.io.EOFException; import java.io.IOException; import java.io.InterruptedIOException; @@ -211,8 +211,8 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/ajp/AjpProcesso +import java.nio.Buffer; import java.nio.ByteBuffer; import java.security.NoSuchProviderException; - import java.security.cert.CertificateFactory; -@@ -1253,7 +1254,7 @@ public class AjpProcessor extends Abstra + import java.security.cert.CertificateException; +@@ -1255,7 +1256,7 @@ public class AjpProcessor extends Abstra responseMessage.reset(); responseMessage.appendByte(Constants.JK_AJP13_SEND_BODY_CHUNK); @@ -221,9 +221,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/ajp/AjpProcesso responseMessage.appendBytes(chunk); responseMessage.end(); socketWrapper.write(blocking, responseMessage.getBuffer(), 0, responseMessage.getLen()); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/BufferedInputFilter.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/BufferedInputFilter.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/BufferedInputFilter.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/BufferedInputFilter.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/BufferedInputFilter.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/BufferedInputFilter.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/BufferedInputFilter.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/BufferedInputFilter.java 2021-10-18 22:46:03.744843076 +0200 @@ -18,6 +18,7 @@ package org.apache.coyote.http11.filters; @@ -262,9 +262,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ } } hasRead = false; -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java 2021-10-18 22:46:03.744843076 +0200 @@ -18,6 +18,7 @@ package org.apache.coyote.http11.filters import java.io.EOFException; @@ -344,9 +344,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ } } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ChunkedOutputFilter.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/ChunkedOutputFilter.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ChunkedOutputFilter.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/ChunkedOutputFilter.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/ChunkedOutputFilter.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/ChunkedOutputFilter.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/ChunkedOutputFilter.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/ChunkedOutputFilter.java 2021-10-18 22:46:03.744843076 +0200 @@ -18,6 +18,7 @@ package org.apache.coyote.http11.filters import java.io.IOException; @@ -392,9 +392,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ } buffer.end(); } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/IdentityInputFilter.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/IdentityInputFilter.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/IdentityInputFilter.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/IdentityInputFilter.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/IdentityInputFilter.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/IdentityInputFilter.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/IdentityInputFilter.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/IdentityInputFilter.java 2021-10-18 22:46:03.744843076 +0200 @@ -18,6 +18,7 @@ package org.apache.coyote.http11.filters; @@ -421,9 +421,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ } result = -1; } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java 2021-10-18 22:46:03.744843076 +0200 @@ -17,6 +17,7 @@ package org.apache.coyote.http11.filters; @@ -452,9 +452,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ result = -1; } } else { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java 2021-10-18 22:46:03.744843076 +0200 @@ -18,6 +18,7 @@ package org.apache.coyote.http11.filters; @@ -472,9 +472,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/filters/ input.subtract(byteBuffer); return byteBuffer.remaining(); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11InputBuffer.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/Http11InputBuffer.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11InputBuffer.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/Http11InputBuffer.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/Http11InputBuffer.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/Http11InputBuffer.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/Http11InputBuffer.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/Http11InputBuffer.java 2021-10-18 22:46:03.744843076 +0200 @@ -18,6 +18,7 @@ package org.apache.coyote.http11; import java.io.EOFException; @@ -541,7 +541,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11In } } -@@ -748,7 +749,7 @@ public class Http11InputBuffer implement +@@ -744,7 +745,7 @@ public class Http11InputBuffer implement wrapper.getSocketBufferHandler().getReadBuffer().capacity(); if (byteBuffer == null || byteBuffer.capacity() < bufLength) { byteBuffer = ByteBuffer.allocate(bufLength); @@ -550,7 +550,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11In } } -@@ -781,14 +782,14 @@ public class Http11InputBuffer implement +@@ -777,14 +778,14 @@ public class Http11InputBuffer implement throw new IllegalArgumentException(sm.getString("iib.requestheadertoolarge.error")); } } else { @@ -569,7 +569,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11In SocketWrapperBase socketWrapper = this.wrapper; int nRead = -1; if (socketWrapper != null) { -@@ -796,7 +797,7 @@ public class Http11InputBuffer implement +@@ -792,7 +793,7 @@ public class Http11InputBuffer implement } else { throw new CloseNowException(sm.getString("iib.eof.error")); } @@ -578,7 +578,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11In if (log.isDebugEnabled()) { log.debug("Received [" -@@ -842,10 +843,10 @@ public class Http11InputBuffer implement +@@ -838,10 +839,10 @@ public class Http11InputBuffer implement } else { if (prevChr == Constants.CR) { // Must have read two bytes (first was CR, second was not LF) @@ -591,7 +591,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11In } break; } -@@ -888,7 +889,7 @@ public class Http11InputBuffer implement +@@ -884,7 +885,7 @@ public class Http11InputBuffer implement // Non-token characters are illegal in header names // Parsing continues so the error can be reported in context headerData.lastSignificantChar = pos; @@ -600,7 +600,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11In // skipLine() will handle the error return skipLine(); } -@@ -926,7 +927,7 @@ public class Http11InputBuffer implement +@@ -922,7 +923,7 @@ public class Http11InputBuffer implement chr = byteBuffer.get(); if (!(chr == Constants.SP || chr == Constants.HT)) { headerParsePos = HeaderParsePosition.HEADER_VALUE; @@ -609,7 +609,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11In break; } } -@@ -1157,7 +1158,7 @@ public class Http11InputBuffer implement +@@ -1153,7 +1154,7 @@ public class Http11InputBuffer implement int length = byteBuffer.remaining(); handler.setByteBuffer(byteBuffer.duplicate()); @@ -618,7 +618,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11In return length; } -@@ -1184,12 +1185,12 @@ public class Http11InputBuffer implement +@@ -1180,12 +1181,12 @@ public class Http11InputBuffer implement @Override public void expand(int size) { if (byteBuffer.capacity() >= size) { @@ -633,9 +633,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11In temp = null; } } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11OutputBuffer.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/Http11OutputBuffer.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11OutputBuffer.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http11/Http11OutputBuffer.java 2021-03-15 18:25:09.761415192 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/Http11OutputBuffer.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/Http11OutputBuffer.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http11/Http11OutputBuffer.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http11/Http11OutputBuffer.java 2021-10-18 22:46:03.744843076 +0200 @@ -17,6 +17,7 @@ package org.apache.coyote.http11; @@ -680,9 +680,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http11/Http11Ou } } } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HpackDecoder.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/HpackDecoder.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HpackDecoder.java 2020-10-06 16:23:51.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/HpackDecoder.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/HpackDecoder.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/HpackDecoder.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/HpackDecoder.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/HpackDecoder.java 2021-10-18 22:46:03.744843076 +0200 @@ -16,6 +16,7 @@ */ package org.apache.coyote.http2; @@ -691,7 +691,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HpackDeco import java.nio.ByteBuffer; import org.apache.tomcat.util.res.StringManager; -@@ -99,10 +100,10 @@ public class HpackDecoder { +@@ -97,10 +98,10 @@ public class HpackDecoder { byte b = buffer.get(); if ((b & 0b10000000) != 0) { //if the first bit is set it is an indexed header field @@ -704,7 +704,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HpackDeco return; } else if(index == 0) { throw new HpackException( -@@ -113,12 +114,12 @@ public class HpackDecoder { +@@ -111,12 +112,12 @@ public class HpackDecoder { //Literal Header Field with Incremental Indexing String headerName = readHeaderName(buffer, 6); if (headerName == null) { @@ -719,7 +719,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HpackDeco return; } emitHeader(headerName, headerValue); -@@ -127,12 +128,12 @@ public class HpackDecoder { +@@ -125,12 +126,12 @@ public class HpackDecoder { //Literal Header Field without Indexing String headerName = readHeaderName(buffer, 4); if (headerName == null) { @@ -734,7 +734,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HpackDeco return; } emitHeader(headerName, headerValue); -@@ -140,12 +141,12 @@ public class HpackDecoder { +@@ -138,12 +139,12 @@ public class HpackDecoder { //Literal Header Field never indexed String headerName = readHeaderName(buffer, 4); if (headerName == null) { @@ -749,7 +749,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HpackDeco return; } emitHeader(headerName, headerValue); -@@ -164,10 +165,10 @@ public class HpackDecoder { +@@ -162,10 +163,10 @@ public class HpackDecoder { if (headerCount != 0) { throw new HpackException(sm.getString("hpackdecoder.tableSizeUpdateNotAtStart")); } @@ -762,7 +762,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HpackDeco return false; } if (size > maxMemorySizeHard) { -@@ -197,7 +198,7 @@ public class HpackDecoder { +@@ -195,7 +196,7 @@ public class HpackDecoder { } private String readHeaderName(ByteBuffer buffer, int prefixLength) throws HpackException { @@ -771,9 +771,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HpackDeco int index = Hpack.decodeInteger(buffer, prefixLength); if (index == -1) { return null; -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HPackHuffman.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/HPackHuffman.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HPackHuffman.java 2020-10-06 16:23:50.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/HPackHuffman.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/HPackHuffman.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/HPackHuffman.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/HPackHuffman.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/HPackHuffman.java 2021-10-18 22:46:03.748843092 +0200 @@ -16,6 +16,7 @@ */ package org.apache.coyote.http2; @@ -817,9 +817,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/HPackHuff return false; } buffer.put((byte) (currentBufferByte | ((0xFF) >> bytePos))); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Hpack.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Hpack.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Hpack.java 2020-10-06 16:23:51.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Hpack.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Hpack.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Hpack.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Hpack.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Hpack.java 2021-10-18 22:46:03.748843092 +0200 @@ -16,6 +16,7 @@ */ package org.apache.coyote.http2; @@ -837,9 +837,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Hpack.jav return -1; } b = source.get(); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2AsyncParser.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Http2AsyncParser.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2AsyncParser.java 2020-10-06 16:23:51.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Http2AsyncParser.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Http2AsyncParser.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Http2AsyncParser.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Http2AsyncParser.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Http2AsyncParser.java 2021-10-18 22:46:03.748843092 +0200 @@ -17,6 +17,7 @@ package org.apache.coyote.http2; @@ -875,9 +875,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2Asyn try { validateFrame(null, frameType, streamId, flags, payloadSize); } catch (StreamException e) { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java 2020-10-06 16:23:51.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java 2021-10-18 22:46:03.748843092 +0200 @@ -17,6 +17,7 @@ package org.apache.coyote.http2; @@ -900,9 +900,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2Asyn handleAsyncException(); } } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2Parser.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Http2Parser.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2Parser.java 2020-10-06 16:23:51.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Http2Parser.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Http2Parser.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Http2Parser.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Http2Parser.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Http2Parser.java 2021-10-18 22:46:03.748843092 +0200 @@ -17,6 +17,7 @@ package org.apache.coyote.http2; @@ -957,9 +957,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2Pars } return result; } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2UpgradeHandler.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Http2UpgradeHandler.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2UpgradeHandler.java 2020-10-06 16:23:51.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Http2UpgradeHandler.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Http2UpgradeHandler.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Http2UpgradeHandler.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Http2UpgradeHandler.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Http2UpgradeHandler.java 2021-10-18 22:46:03.748843092 +0200 @@ -18,6 +18,7 @@ package org.apache.coyote.http2; import java.io.EOFException; @@ -980,7 +980,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2Upgr socketWrapper.flush(true); } catch (IOException ioe) { handleAppInitiatedIOException(ioe); -@@ -1920,7 +1921,7 @@ class Http2UpgradeHandler extends Abstra +@@ -1919,7 +1920,7 @@ class Http2UpgradeHandler extends Abstra } catch (IOException ioe) { handleAppInitiatedIOException(ioe); } @@ -989,9 +989,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Http2Upgr } @Override -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Stream.java apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Stream.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Stream.java 2020-10-06 16:23:51.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/coyote/http2/Stream.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Stream.java apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Stream.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/coyote/http2/Stream.java 2021-01-28 21:36:26.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/coyote/http2/Stream.java 2021-10-18 22:46:03.748843092 +0200 @@ -17,6 +17,7 @@ package org.apache.coyote.http2; @@ -1000,7 +1000,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Stream.ja import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.security.AccessController; -@@ -811,9 +812,9 @@ class Stream extends AbstractNonZeroStre +@@ -810,9 +811,9 @@ class Stream extends AbstractNonZeroStre int chunkLimit = chunk.limit(); while (chunk.remaining() > 0) { int thisTime = Math.min(buffer.remaining(), chunk.remaining()); @@ -1012,7 +1012,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Stream.ja if (chunk.remaining() > 0 && !buffer.hasRemaining()) { // Only flush if we have more data to write and the buffer // is full -@@ -883,7 +884,7 @@ class Stream extends AbstractNonZeroStre +@@ -882,7 +883,7 @@ class Stream extends AbstractNonZeroStre // Buffer is empty. Nothing to do. return false; } @@ -1021,7 +1021,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Stream.ja int left = buffer.remaining(); while (left > 0) { if (streamReservation == 0) { -@@ -914,7 +915,7 @@ class Stream extends AbstractNonZeroStre +@@ -913,7 +914,7 @@ class Stream extends AbstractNonZeroStre left -= connectionReservation; } } @@ -1030,7 +1030,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Stream.ja return false; } -@@ -975,9 +976,9 @@ class Stream extends AbstractNonZeroStre +@@ -974,9 +975,9 @@ class Stream extends AbstractNonZeroStre int chunkLimit = src.limit(); while (src.remaining() > 0) { int thisTime = Math.min(buffer.remaining(), src.remaining()); @@ -1042,7 +1042,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Stream.ja if (flush(false, blocking)) { return true; } -@@ -1065,14 +1066,14 @@ class Stream extends AbstractNonZeroStre +@@ -1064,14 +1065,14 @@ class Stream extends AbstractNonZeroStre if (inBuffer.position() > 0) { // Data is available in the inBuffer. Copy it to the // outBuffer. @@ -1059,9 +1059,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/coyote/http2/Stream.ja } else if (!canRead) { return -1; } else { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/B2CConverter.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/B2CConverter.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/B2CConverter.java 2020-10-06 16:23:53.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/B2CConverter.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/B2CConverter.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/B2CConverter.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/B2CConverter.java 2021-01-28 21:36:28.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/B2CConverter.java 2021-10-18 22:46:03.748843092 +0200 @@ -18,6 +18,7 @@ package org.apache.tomcat.util.buf; import java.io.IOException; @@ -1200,9 +1200,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/B2CCon bc.get(leftovers.array(), 0, bc.remaining()); } } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/ByteBufferHolder.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/ByteBufferHolder.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/ByteBufferHolder.java 2020-10-06 16:23:53.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/ByteBufferHolder.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/ByteBufferHolder.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/ByteBufferHolder.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/ByteBufferHolder.java 2021-01-28 21:36:28.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/ByteBufferHolder.java 2021-10-18 22:46:03.748843092 +0200 @@ -16,6 +16,7 @@ */ package org.apache.tomcat.util.buf; @@ -1220,9 +1220,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/ByteBu return true; } else { return false; -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/ByteBufferUtils.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/ByteBufferUtils.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/ByteBufferUtils.java 2020-10-06 16:23:53.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/ByteBufferUtils.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/ByteBufferUtils.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/ByteBufferUtils.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/ByteBufferUtils.java 2021-01-28 21:36:28.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/ByteBufferUtils.java 2021-10-18 22:46:03.748843092 +0200 @@ -19,6 +19,7 @@ package org.apache.tomcat.util.buf; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; @@ -1240,9 +1240,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/ByteBu out.put(in); if (direct) { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/ByteChunk.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/ByteChunk.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/ByteChunk.java 2020-10-06 16:23:53.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/ByteChunk.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/ByteChunk.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/ByteChunk.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/ByteChunk.java 2021-01-28 21:36:28.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/ByteChunk.java 2021-10-18 22:46:03.752843108 +0200 @@ -19,6 +19,7 @@ package org.apache.tomcat.util.buf; import java.io.IOException; import java.io.ObjectInputStream; @@ -1288,9 +1288,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/ByteCh start += n; return n; } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/C2BConverter.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/C2BConverter.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/C2BConverter.java 2020-10-06 16:23:53.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/C2BConverter.java 2021-03-15 18:25:09.765415210 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/C2BConverter.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/C2BConverter.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/C2BConverter.java 2021-01-28 21:36:28.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/C2BConverter.java 2021-10-18 22:46:03.752843108 +0200 @@ -17,6 +17,7 @@ package org.apache.tomcat.util.buf; @@ -1428,9 +1428,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/C2BCon cc.get(leftovers.array(), 0, cc.remaining()); } } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/Utf8Decoder.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/Utf8Decoder.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/Utf8Decoder.java 2020-10-06 16:23:53.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/Utf8Decoder.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/Utf8Decoder.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/Utf8Decoder.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/Utf8Decoder.java 2021-01-28 21:36:28.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/Utf8Decoder.java 2021-10-18 22:46:03.752843108 +0200 @@ -16,6 +16,7 @@ */ package org.apache.tomcat.util.buf; @@ -1596,9 +1596,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/Utf8De return (outRemaining == 0 && inIndex < inIndexLimit) ? CoderResult.OVERFLOW : CoderResult.UNDERFLOW; -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/Utf8Encoder.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/Utf8Encoder.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/Utf8Encoder.java 2020-10-06 16:23:53.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/buf/Utf8Encoder.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/Utf8Encoder.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/Utf8Encoder.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/buf/Utf8Encoder.java 2021-01-28 21:36:28.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/buf/Utf8Encoder.java 2021-10-18 22:46:03.752843108 +0200 @@ -16,6 +16,7 @@ */ package org.apache.tomcat.util.buf; @@ -1710,9 +1710,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/buf/Utf8En } return CoderResult.UNDERFLOW; } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/AprEndpoint.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/AprEndpoint.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/AprEndpoint.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/AprEndpoint.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/AprEndpoint.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/AprEndpoint.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/AprEndpoint.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/AprEndpoint.java 2021-10-18 22:46:03.752843108 +0200 @@ -20,6 +20,7 @@ import java.io.EOFException; import java.io.IOException; import java.net.InetSocketAddress; @@ -1748,7 +1748,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/AprEnd return result; } else if (result == 0 || -result == Status.EAGAIN) { return 0; -@@ -2296,9 +2297,9 @@ public class AprEndpoint extends Abstrac +@@ -2297,9 +2298,9 @@ public class AprEndpoint extends Abstrac if (getEndpoint().isSSLEnabled()) { if (sslOutputBuffer.remaining() == 0) { // Buffer was fully written last time around @@ -1760,7 +1760,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/AprEnd } else { // Buffer still has data from previous attempt to write // APR + SSL requires that exactly the same parameters are -@@ -2307,13 +2308,13 @@ public class AprEndpoint extends Abstrac +@@ -2308,13 +2309,13 @@ public class AprEndpoint extends Abstrac thisTime = Socket.sendb(getSocket().longValue(), sslOutputBuffer, sslOutputBuffer.position(), sslOutputBuffer.limit()); if (thisTime > 0) { @@ -1776,9 +1776,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/AprEnd } } if (Status.APR_STATUS_IS_EAGAIN(-thisTime)) { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Nio2Endpoint.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/Nio2Endpoint.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Nio2Endpoint.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/Nio2Endpoint.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/Nio2Endpoint.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/Nio2Endpoint.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/Nio2Endpoint.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/Nio2Endpoint.java 2021-10-18 22:46:03.752843108 +0200 @@ -22,6 +22,7 @@ import java.io.IOException; import java.net.InetSocketAddress; import java.net.SocketAddress; @@ -1787,7 +1787,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Nio2En import java.nio.ByteBuffer; import java.nio.channels.AsynchronousChannelGroup; import java.nio.channels.AsynchronousCloseException; -@@ -545,7 +546,7 @@ public class Nio2Endpoint extends Abstra +@@ -555,7 +556,7 @@ public class Nio2Endpoint extends Abstra if (nRead > 0) { getSocket().getBufHandler().configureWriteBufferForRead(); if (attachment.length < buffer.remaining()) { @@ -1796,7 +1796,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Nio2En } attachment.length -= nRead; } else { -@@ -890,7 +891,7 @@ public class Nio2Endpoint extends Abstra +@@ -900,7 +901,7 @@ public class Nio2Endpoint extends Abstra // The socket read buffer capacity is socket.appReadBufSize int limit = socketBufferHandler.getReadBuffer().capacity(); if (block && to.remaining() >= limit) { @@ -1805,18 +1805,18 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Nio2En nRead = fillReadBuffer(block, to); if (log.isDebugEnabled()) { log.debug("Socket: [" + this + "], Read direct from socket: [" + nRead + "]"); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/NioEndpoint.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/NioEndpoint.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/NioEndpoint.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/NioEndpoint.java 2021-03-15 18:25:09.769415228 +0100 -@@ -23,6 +23,7 @@ import java.io.IOException; - import java.net.InetAddress; +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/NioEndpoint.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/NioEndpoint.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/NioEndpoint.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/NioEndpoint.java 2021-10-18 22:46:03.752843108 +0200 +@@ -24,6 +24,7 @@ import java.net.InetAddress; import java.net.InetSocketAddress; + import java.net.SocketAddress; import java.net.SocketTimeoutException; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.channels.CancelledKeyException; import java.nio.channels.Channel; -@@ -1137,7 +1138,7 @@ public class NioEndpoint extends Abstrac +@@ -1228,7 +1229,7 @@ public class NioEndpoint extends Abstrac // The socket read buffer capacity is socket.appReadBufSize int limit = socketBufferHandler.getReadBuffer().capacity(); if (to.remaining() >= limit) { @@ -1825,9 +1825,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/NioEnd nRead = fillReadBuffer(block, to); if (log.isDebugEnabled()) { log.debug("Socket: [" + this + "], Read direct from socket: [" + nRead + "]"); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/openssl/OpenSSLEngine.java 2021-10-18 22:46:03.752843108 +0200 @@ -16,6 +16,7 @@ */ package org.apache.tomcat.util.net.openssl; @@ -1966,7 +1966,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/openss return bioRead; } } finally { -@@ -963,7 +964,7 @@ public final class OpenSSLEngine extends +@@ -968,7 +969,7 @@ public final class OpenSSLEngine extends private static long memoryAddress(ByteBuffer buf) { @@ -1975,9 +1975,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/openss } private SSLEngineResult.Status getEngineStatus() { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/SecureNio2Channel.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/SecureNio2Channel.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/SecureNio2Channel.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/SecureNio2Channel.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/SecureNio2Channel.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/SecureNio2Channel.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/SecureNio2Channel.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/SecureNio2Channel.java 2021-10-18 22:46:03.756843123 +0200 @@ -18,6 +18,7 @@ package org.apache.tomcat.util.net; import java.io.EOFException; @@ -1986,7 +1986,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure import java.nio.ByteBuffer; import java.nio.channels.AsynchronousSocketChannel; import java.nio.channels.CompletionHandler; -@@ -133,7 +134,7 @@ public class SecureNio2Channel extends N +@@ -138,7 +139,7 @@ public class SecureNio2Channel extends N unwrapBeforeRead = true; closed = false; closing = false; @@ -1995,7 +1995,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure } @Override -@@ -323,7 +324,7 @@ public class SecureNio2Channel extends N +@@ -328,7 +329,7 @@ public class SecureNio2Channel extends N } else if (handshake.getStatus() == Status.BUFFER_UNDERFLOW) { if (netInBuffer.position() == netInBuffer.limit()) { //clear the buffer if we have emptied it out on data @@ -2004,7 +2004,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure } //read more data if (async) { -@@ -418,9 +419,9 @@ public class SecureNio2Channel extends N +@@ -423,9 +424,9 @@ public class SecureNio2Channel extends N clientRequestedCiphers = Collections.emptyList(); break; case NON_SECURE: @@ -2016,7 +2016,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure flush(); throw new IOException(sm.getString("channel.nio.ssl.foundHttp")); } -@@ -444,8 +445,8 @@ public class SecureNio2Channel extends N +@@ -456,8 +457,8 @@ public class SecureNio2Channel extends N netOutBuffer = ByteBufferUtils.expand(netOutBuffer, sslEngine.getSession().getPacketBufferSize()); // Set limit and position to expected values @@ -2027,7 +2027,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure // Initiate handshake sslEngine.beginHandshake(); -@@ -469,10 +470,10 @@ public class SecureNio2Channel extends N +@@ -481,10 +482,10 @@ public class SecureNio2Channel extends N if (!getBufHandler().isReadBufferEmpty()) throw new IOException(sm.getString("channel.nio.ssl.appInputNotEmpty")); if (!getBufHandler().isWriteBufferEmpty()) throw new IOException(sm.getString("channel.nio.ssl.appOutputNotEmpty")); @@ -2042,7 +2042,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure getBufHandler().reset(); handshakeComplete = false; -@@ -521,12 +522,12 @@ public class SecureNio2Channel extends N +@@ -533,12 +534,12 @@ public class SecureNio2Channel extends N protected SSLEngineResult handshakeWrap() throws IOException { //this should never be called with a network buffer that contains data //so we can clear it here. @@ -2057,7 +2057,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //set the status handshakeStatus = result.getHandshakeStatus(); return result; -@@ -543,7 +544,7 @@ public class SecureNio2Channel extends N +@@ -555,7 +556,7 @@ public class SecureNio2Channel extends N //loop while we can perform pure SSLEngine data do { //prepare the buffer with the incoming data @@ -2066,7 +2066,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //call unwrap getBufHandler().configureReadBufferForWrite(); result = sslEngine.unwrap(netInBuffer, getBufHandler().getReadBuffer()); -@@ -601,7 +602,7 @@ public class SecureNio2Channel extends N +@@ -621,7 +622,7 @@ public class SecureNio2Channel extends N throw new IOException(sm.getString("channel.nio.ssl.pendingWriteDuringClose"), e); } //prep the buffer for the close message @@ -2075,7 +2075,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //perform the close, since we called sslEngine.closeOutbound SSLEngineResult handshake = sslEngine.wrap(getEmptyBuf(), netOutBuffer); //we should be in a close state -@@ -609,7 +610,7 @@ public class SecureNio2Channel extends N +@@ -629,7 +630,7 @@ public class SecureNio2Channel extends N throw new IOException(sm.getString("channel.nio.ssl.invalidCloseState")); } //prepare the buffer for writing @@ -2084,7 +2084,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //if there is data to be written try { if (timeout > 0) { -@@ -711,7 +712,7 @@ public class SecureNio2Channel extends N +@@ -731,7 +732,7 @@ public class SecureNio2Channel extends N SSLEngineResult unwrap; do { //prepare the buffer @@ -2093,7 +2093,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //unwrap the data try { unwrap = sslEngine.unwrap(netInBuffer, dst); -@@ -854,10 +855,10 @@ public class SecureNio2Channel extends N +@@ -874,10 +875,10 @@ public class SecureNio2Channel extends N protected void wrap() { try { if (!netOutBuffer.hasRemaining()) { @@ -2106,7 +2106,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure if (result.getStatus() == Status.OK) { if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) tasks(); -@@ -909,7 +910,7 @@ public class SecureNio2Channel extends N +@@ -929,7 +930,7 @@ public class SecureNio2Channel extends N SSLEngineResult unwrap; do { //prepare the buffer @@ -2115,7 +2115,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //unwrap the data unwrap = sslEngine.unwrap(netInBuffer, dst2); //compact the buffer -@@ -1017,7 +1018,7 @@ public class SecureNio2Channel extends N +@@ -1037,7 +1038,7 @@ public class SecureNio2Channel extends N overflowState = OverflowState.DONE; } //prepare the buffer @@ -2124,7 +2124,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //unwrap the data unwrap = sslEngine.unwrap(netInBuffer, dsts2, offset, length2); //compact the buffer -@@ -1137,11 +1138,11 @@ public class SecureNio2Channel extends N +@@ -1157,11 +1158,11 @@ public class SecureNio2Channel extends N } try { // Prepare the output buffer @@ -2138,7 +2138,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure if (result.getStatus() == Status.OK) { if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) { tasks(); -@@ -1191,11 +1192,11 @@ public class SecureNio2Channel extends N +@@ -1211,11 +1212,11 @@ public class SecureNio2Channel extends N } try { // Prepare the output buffer @@ -2152,9 +2152,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure if (result.getStatus() == Status.OK) { if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) { tasks(); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/SecureNioChannel.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/SecureNioChannel.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/SecureNioChannel.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/SecureNioChannel.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/SecureNioChannel.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/SecureNioChannel.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/SecureNioChannel.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/SecureNioChannel.java 2021-10-18 22:46:03.756843123 +0200 @@ -19,6 +19,7 @@ package org.apache.tomcat.util.net; import java.io.EOFException; import java.io.IOException; @@ -2163,7 +2163,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; -@@ -95,7 +96,7 @@ public class SecureNioChannel extends Ni +@@ -100,7 +101,7 @@ public class SecureNioChannel extends Ni handshakeComplete = false; closed = false; closing = false; @@ -2172,7 +2172,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure } @Override -@@ -315,9 +316,9 @@ public class SecureNioChannel extends Ni +@@ -320,9 +321,9 @@ public class SecureNioChannel extends Ni clientRequestedCiphers = Collections.emptyList(); break; case NON_SECURE: @@ -2184,7 +2184,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure flushOutbound(); throw new IOException(sm.getString("channel.nio.ssl.foundHttp")); } -@@ -341,8 +342,8 @@ public class SecureNioChannel extends Ni +@@ -353,8 +354,8 @@ public class SecureNioChannel extends Ni netOutBuffer = ByteBufferUtils.expand(netOutBuffer, sslEngine.getSession().getPacketBufferSize()); // Set limit and position to expected values @@ -2195,7 +2195,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure // Initiate handshake sslEngine.beginHandshake(); -@@ -454,12 +455,12 @@ public class SecureNioChannel extends Ni +@@ -466,12 +467,12 @@ public class SecureNioChannel extends Ni protected SSLEngineResult handshakeWrap(boolean doWrite) throws IOException { //this should never be called with a network buffer that contains data //so we can clear it here. @@ -2210,7 +2210,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //set the status handshakeStatus = result.getHandshakeStatus(); //optimization, if we do have a writable channel, write it now -@@ -479,7 +480,7 @@ public class SecureNioChannel extends Ni +@@ -491,7 +492,7 @@ public class SecureNioChannel extends Ni if (netInBuffer.position() == netInBuffer.limit()) { //clear the buffer if we have emptied it out on data @@ -2219,7 +2219,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure } if (doread) { //if we have data to read, read it -@@ -493,7 +494,7 @@ public class SecureNioChannel extends Ni +@@ -505,7 +506,7 @@ public class SecureNioChannel extends Ni //loop while we can perform pure SSLEngine data do { //prepare the buffer with the incoming data @@ -2228,7 +2228,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //call unwrap getBufHandler().configureReadBufferForWrite(); result = sslEngine.unwrap(netInBuffer, getBufHandler().getReadBuffer()); -@@ -537,7 +538,7 @@ public class SecureNioChannel extends Ni +@@ -557,7 +558,7 @@ public class SecureNioChannel extends Ni throw new IOException(sm.getString("channel.nio.ssl.remainingDataDuringClose")); } //prep the buffer for the close message @@ -2237,7 +2237,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //perform the close, since we called sslEngine.closeOutbound SSLEngineResult handshake = sslEngine.wrap(getEmptyBuf(), netOutBuffer); //we should be in a close state -@@ -545,7 +546,7 @@ public class SecureNioChannel extends Ni +@@ -565,7 +566,7 @@ public class SecureNioChannel extends Ni throw new IOException(sm.getString("channel.nio.ssl.invalidCloseState")); } //prepare the buffer for writing @@ -2246,7 +2246,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //if there is data to be written flush(netOutBuffer); -@@ -612,7 +613,7 @@ public class SecureNioChannel extends Ni +@@ -632,7 +633,7 @@ public class SecureNioChannel extends Ni SSLEngineResult unwrap; do { //prepare the buffer @@ -2255,7 +2255,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //unwrap the data unwrap = sslEngine.unwrap(netInBuffer, dst); //compact the buffer -@@ -689,7 +690,7 @@ public class SecureNioChannel extends Ni +@@ -709,7 +710,7 @@ public class SecureNioChannel extends Ni overflowState = OverflowState.DONE; } //prepare the buffer @@ -2264,7 +2264,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure //unwrap the data unwrap = sslEngine.unwrap(netInBuffer, dsts, offset, length); //compact the buffer -@@ -797,12 +798,12 @@ public class SecureNioChannel extends Ni +@@ -817,12 +818,12 @@ public class SecureNioChannel extends Ni } // The data buffer is empty, we can reuse the entire buffer. @@ -2279,7 +2279,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure if (result.getStatus() == Status.OK) { if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) { -@@ -834,12 +835,12 @@ public class SecureNioChannel extends Ni +@@ -854,12 +855,12 @@ public class SecureNioChannel extends Ni } // The data buffer is empty, we can reuse the entire buffer. @@ -2294,9 +2294,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Secure if (result.getStatus() == Status.OK) { if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) tasks(); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/SocketBufferHandler.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/SocketBufferHandler.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/SocketBufferHandler.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/SocketBufferHandler.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/SocketBufferHandler.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/SocketBufferHandler.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/SocketBufferHandler.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/SocketBufferHandler.java 2021-10-18 22:46:03.756843123 +0200 @@ -17,6 +17,7 @@ package org.apache.tomcat.util.net; @@ -2353,9 +2353,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Socket writeBufferConfiguredForWrite = true; } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/SocketWrapperBase.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/SocketWrapperBase.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/SocketWrapperBase.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/SocketWrapperBase.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/SocketWrapperBase.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/SocketWrapperBase.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/SocketWrapperBase.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/SocketWrapperBase.java 2021-10-18 22:46:03.756843123 +0200 @@ -19,6 +19,7 @@ package org.apache.tomcat.util.net; import java.io.EOFException; import java.io.IOException; @@ -2364,7 +2364,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Socket import java.nio.ByteBuffer; import java.nio.channels.CompletionHandler; import java.nio.channels.InterruptedByTimeoutException; -@@ -1491,9 +1492,9 @@ public abstract class SocketWrapperBase< +@@ -1502,9 +1503,9 @@ public abstract class SocketWrapperBase< int max = Math.min(from.remaining(), to.remaining()); if (max > 0) { int fromLimit = from.limit(); @@ -2376,9 +2376,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/Socket } return max; } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/TLSClientHelloExtractor.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/TLSClientHelloExtractor.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/TLSClientHelloExtractor.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/TLSClientHelloExtractor.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/TLSClientHelloExtractor.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/TLSClientHelloExtractor.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/TLSClientHelloExtractor.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/TLSClientHelloExtractor.java 2021-10-18 22:46:03.756843123 +0200 @@ -17,6 +17,7 @@ package org.apache.tomcat.util.net; @@ -2387,7 +2387,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/TLSCli import java.nio.BufferUnderflowException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; -@@ -76,7 +77,7 @@ public class TLSClientHelloExtractor { +@@ -83,7 +84,7 @@ public class TLSClientHelloExtractor { String sniValue = null; try { // Switch to read mode. @@ -2396,9 +2396,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/TLSCli // A complete TLS record header is required before we can figure out // how many bytes there are in the record. -@@ -164,8 +165,8 @@ public class TLSClientHelloExtractor { - this.clientRequestedApplicationProtocols = clientRequestedApplicationProtocols; +@@ -186,8 +187,8 @@ public class TLSClientHelloExtractor { this.sniValue = sniValue; + this.clientRequestedProtocols = clientRequestedProtocols; // Whatever happens, return the buffer to its original state - netInBuffer.limit(limit); - netInBuffer.position(pos); @@ -2407,7 +2407,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/TLSCli } } -@@ -215,7 +216,7 @@ public class TLSClientHelloExtractor { +@@ -259,7 +260,7 @@ public class TLSClientHelloExtractor { private static boolean isAvailable(ByteBuffer bb, int size) { if (bb.remaining() < size) { @@ -2416,7 +2416,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/TLSCli return false; } return true; -@@ -243,7 +244,7 @@ public class TLSClientHelloExtractor { +@@ -287,7 +288,7 @@ public class TLSClientHelloExtractor { // the buffer contains a correctly formatted HTTP request line. // The method, target and protocol are not validated. byte chr = 0; @@ -2425,7 +2425,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/TLSCli // Skip blank lines do { -@@ -324,7 +325,7 @@ public class TLSClientHelloExtractor { +@@ -368,7 +369,7 @@ public class TLSClientHelloExtractor { private static void skipBytes(ByteBuffer bb, int size) { @@ -2434,9 +2434,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/TLSCli } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/WriteBuffer.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/WriteBuffer.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/WriteBuffer.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/util/net/WriteBuffer.java 2021-03-15 18:25:09.769415228 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/WriteBuffer.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/WriteBuffer.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/util/net/WriteBuffer.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/util/net/WriteBuffer.java 2021-10-18 22:46:03.756843123 +0200 @@ -17,6 +17,7 @@ package org.apache.tomcat.util.net; @@ -2445,9 +2445,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/util/net/WriteB import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Iterator; -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java 2021-03-15 18:26:01.029640508 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java 2021-10-18 22:46:03.756843123 +0200 @@ -19,6 +19,7 @@ package org.apache.tomcat.websocket; import java.io.EOFException; import java.io.IOException; @@ -2515,9 +2515,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/Async SSLEngineResult r = sslEngine.unwrap(socketReadBuffer, DUMMY); checkResult(r, false); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/PerMessageDeflate.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/PerMessageDeflate.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/PerMessageDeflate.java 2020-10-06 16:23:55.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/PerMessageDeflate.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/PerMessageDeflate.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/PerMessageDeflate.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/PerMessageDeflate.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/PerMessageDeflate.java 2021-10-18 22:46:03.756843123 +0200 @@ -17,6 +17,7 @@ package org.apache.tomcat.websocket; @@ -2576,18 +2576,18 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/PerMe compressedPart = new MessagePart(true, getRsv(uncompressedPart), opCode, compressedPayload, uncompressedIntermediateHandler, uncompressedIntermediateHandler, -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/server/WsFrameServer.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/server/WsFrameServer.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/server/WsFrameServer.java 2020-10-06 16:23:56.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/server/WsFrameServer.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/server/WsFrameServer.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/server/WsFrameServer.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/server/WsFrameServer.java 2021-01-28 21:36:31.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/server/WsFrameServer.java 2021-10-18 22:46:03.756843123 +0200 @@ -19,6 +19,7 @@ package org.apache.tomcat.websocket.serv import java.io.EOFException; import java.io.IOException; import java.nio.ByteBuffer; +import java.nio.Buffer; + import org.apache.coyote.http11.upgrade.UpgradeInfo; import org.apache.juli.logging.Log; - import org.apache.juli.logging.LogFactory; -@@ -67,10 +68,10 @@ public class WsFrameServer extends WsFra +@@ -70,10 +71,10 @@ public class WsFrameServer extends WsFra while (isOpen() && !isSuspended()) { // Fill up the input buffer with as much data as we can @@ -2601,9 +2601,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/serve if (read < 0) { throw new EOFException(); } else if (read == 0) { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFrameBase.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsFrameBase.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFrameBase.java 2020-10-06 16:23:56.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsFrameBase.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsFrameBase.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsFrameBase.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsFrameBase.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsFrameBase.java 2021-10-18 22:46:03.756843123 +0200 @@ -17,6 +17,7 @@ package org.apache.tomcat.websocket; @@ -2639,7 +2639,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra } if (Util.isControl(opCode)) { if (payloadLength > 125) { -@@ -320,13 +321,13 @@ public abstract class WsFrameBase { +@@ -333,13 +334,13 @@ public abstract class WsFrameBase { // Control messages have fixed message size so // TransformationResult.OVERFLOW is not possible here @@ -2655,7 +2655,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra // Payload must be zero or 2+ bytes long throw new WsIOException(new CloseReason( CloseCodes.PROTOCOL_ERROR, -@@ -338,8 +339,8 @@ public abstract class WsFrameBase { +@@ -351,8 +352,8 @@ public abstract class WsFrameBase { CoderResult cr = utf8DecoderControl.decode(controlBufferBinary, controlBufferText, true); if (cr.isError()) { @@ -2666,7 +2666,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra throw new WsIOException(new CloseReason( CloseCodes.PROTOCOL_ERROR, sm.getString("wsFrame.invalidUtf8Close"))); -@@ -347,7 +348,7 @@ public abstract class WsFrameBase { +@@ -360,7 +361,7 @@ public abstract class WsFrameBase { // There will be no overflow as the output buffer is big // enough. There will be no underflow as all the data is // passed to the decoder in a single call. @@ -2675,7 +2675,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra reason = controlBufferText.toString(); } } -@@ -364,17 +365,17 @@ public abstract class WsFrameBase { +@@ -377,17 +378,17 @@ public abstract class WsFrameBase { } catch (Throwable t) { handleThrowableOnSend(t); } finally { @@ -2696,7 +2696,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra newFrame(); return true; } -@@ -404,7 +405,7 @@ public abstract class WsFrameBase { +@@ -417,7 +418,7 @@ public abstract class WsFrameBase { } catch (Throwable t) { handleThrowableOnSend(t); } finally { @@ -2705,7 +2705,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra } } -@@ -415,7 +416,7 @@ public abstract class WsFrameBase { +@@ -428,7 +429,7 @@ public abstract class WsFrameBase { while (!TransformationResult.END_OF_FRAME.equals(tr)) { // Frame not complete - we ran out of something // Convert bytes to UTF-8 @@ -2714,7 +2714,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra while (true) { CoderResult cr = utf8DecoderMessage.decode(messageBufferBinary, messageBufferText, false); -@@ -426,9 +427,9 @@ public abstract class WsFrameBase { +@@ -439,9 +440,9 @@ public abstract class WsFrameBase { } else if (cr.isOverflow()) { // Ran out of space in text buffer - flush it if (usePartial()) { @@ -2726,7 +2726,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra } else { throw new WsIOException(new CloseReason( CloseCodes.TOO_BIG, -@@ -455,7 +456,7 @@ public abstract class WsFrameBase { +@@ -468,7 +469,7 @@ public abstract class WsFrameBase { tr = transformation.getMoreData(opCode, fin, rsv, messageBufferBinary); } @@ -2735,7 +2735,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra boolean last = false; // Frame is fully received // Convert bytes to UTF-8 -@@ -469,9 +470,9 @@ public abstract class WsFrameBase { +@@ -482,9 +483,9 @@ public abstract class WsFrameBase { } else if (cr.isOverflow()) { // Ran out of space in text buffer - flush it if (usePartial()) { @@ -2747,7 +2747,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra } else { throw new WsIOException(new CloseReason( CloseCodes.TOO_BIG, -@@ -484,9 +485,9 @@ public abstract class WsFrameBase { +@@ -497,9 +498,9 @@ public abstract class WsFrameBase { // If partial messages are supported, send what we have // managed to decode if (usePartial()) { @@ -2759,7 +2759,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra } messageBufferBinary.compact(); newFrame(); -@@ -498,7 +499,7 @@ public abstract class WsFrameBase { +@@ -511,7 +512,7 @@ public abstract class WsFrameBase { } } else { // End of message @@ -2768,7 +2768,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra sendMessageText(true); newMessage(); -@@ -526,12 +527,12 @@ public abstract class WsFrameBase { +@@ -539,12 +540,12 @@ public abstract class WsFrameBase { Long.valueOf(payloadLength))); throw new WsIOException(cr); } @@ -2784,7 +2784,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra // Read more data tr = transformation.getMoreData(opCode, fin, rsv, messageBufferBinary); } -@@ -541,12 +542,12 @@ public abstract class WsFrameBase { +@@ -554,12 +555,12 @@ public abstract class WsFrameBase { // - partial messages are supported // - the message is complete if (usePartial() || !continuationExpected) { @@ -2800,7 +2800,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra } if (continuationExpected) { -@@ -595,8 +596,8 @@ public abstract class WsFrameBase { +@@ -608,8 +609,8 @@ public abstract class WsFrameBase { private void newMessage() { @@ -2811,7 +2811,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra utf8DecoderMessage.reset(); continuationExpected = false; newFrame(); -@@ -605,7 +606,7 @@ public abstract class WsFrameBase { +@@ -618,7 +619,7 @@ public abstract class WsFrameBase { private void newFrame() { if (inputBuffer.remaining() == 0) { @@ -2820,7 +2820,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra } maskIndex = 0; -@@ -638,7 +639,7 @@ public abstract class WsFrameBase { +@@ -651,7 +652,7 @@ public abstract class WsFrameBase { private void makeRoom() { inputBuffer.compact(); @@ -2829,7 +2829,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra } -@@ -656,7 +657,7 @@ public abstract class WsFrameBase { +@@ -669,7 +670,7 @@ public abstract class WsFrameBase { private boolean swallowInput() { long toSkip = Math.min(payloadLength - payloadWritten, inputBuffer.remaining()); @@ -2838,7 +2838,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra payloadWritten += toSkip; if (payloadWritten == payloadLength) { if (continuationExpected) { -@@ -952,9 +953,9 @@ public abstract class WsFrameBase { +@@ -965,9 +966,9 @@ public abstract class WsFrameBase { toWrite = Math.min(toWrite, dest.remaining()); int orgLimit = inputBuffer.limit(); @@ -2850,9 +2850,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra payloadWritten += toWrite; if (payloadWritten == payloadLength) { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFrameClient.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsFrameClient.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFrameClient.java 2020-10-06 16:23:56.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsFrameClient.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsFrameClient.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsFrameClient.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsFrameClient.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsFrameClient.java 2021-10-18 22:46:03.760843139 +0200 @@ -18,6 +18,7 @@ package org.apache.tomcat.websocket; import java.io.EOFException; @@ -2911,9 +2911,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsFra doResumeProcessing(false); } else { close(exc); -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java 2020-10-06 16:23:56.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java 2021-10-18 22:46:03.760843139 +0200 @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.Writer; @@ -2956,10 +2956,10 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem SendHandler flushHandler = new OutputBufferFlushSendHandler( outputBuffer, mp.getEndHandler()); doWrite(flushHandler, mp.getBlockingWriteTimeoutExpiry(), outputBuffer); -@@ -491,10 +492,10 @@ public abstract class WsRemoteEndpointIm - mask = null; +@@ -492,10 +493,10 @@ public abstract class WsRemoteEndpointIm } + int payloadSize = mp.getPayload().remaining(); - headerBuffer.clear(); + ((Buffer)headerBuffer).clear(); writeHeader(headerBuffer, mp.isFin(), mp.getRsv(), mp.getOpCode(), @@ -2969,7 +2969,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem if (getBatchingAllowed() || isMasked()) { // Need to write via output buffer -@@ -807,13 +808,13 @@ public abstract class WsRemoteEndpointIm +@@ -822,13 +823,13 @@ public abstract class WsRemoteEndpointIm } public void write() { @@ -2985,7 +2985,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem endpoint.startMessage(Constants.OPCODE_TEXT, buffer, isDone && isLast, this); } -@@ -874,7 +875,7 @@ public abstract class WsRemoteEndpointIm +@@ -889,7 +890,7 @@ public abstract class WsRemoteEndpointIm } if (headerBuffer.hasRemaining()) { // Still more headers to write, need to flush @@ -2994,7 +2994,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem endpoint.doWrite(this, blockingWriteTimeoutExpiry, outputBuffer); return; } -@@ -888,7 +889,7 @@ public abstract class WsRemoteEndpointIm +@@ -903,7 +904,7 @@ public abstract class WsRemoteEndpointIm if (payloadLeft > outputSpace) { toWrite = outputSpace; // Temporarily reduce the limit @@ -3003,7 +3003,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem } if (mask == null) { -@@ -906,15 +907,15 @@ public abstract class WsRemoteEndpointIm +@@ -921,15 +922,15 @@ public abstract class WsRemoteEndpointIm if (payloadLeft > outputSpace) { // Restore the original limit @@ -3022,7 +3022,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem if (outputBuffer.remaining() == 0) { handler.onResult(SENDRESULT_OK); } else { -@@ -932,7 +933,7 @@ public abstract class WsRemoteEndpointIm +@@ -947,7 +948,7 @@ public abstract class WsRemoteEndpointIm if (outputBuffer.hasRemaining()) { endpoint.doWrite(this, blockingWriteTimeoutExpiry, outputBuffer); } else { @@ -3031,7 +3031,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem write(); } } else { -@@ -958,7 +959,7 @@ public abstract class WsRemoteEndpointIm +@@ -973,7 +974,7 @@ public abstract class WsRemoteEndpointIm @Override public void onResult(SendResult result) { if (result.isOK()) { @@ -3040,7 +3040,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem } handler.onResult(result); } -@@ -1051,11 +1052,11 @@ public abstract class WsRemoteEndpointIm +@@ -1066,11 +1067,11 @@ public abstract class WsRemoteEndpointIm private void doWrite(boolean last) throws IOException { if (used) { @@ -3054,7 +3054,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem } } -@@ -1130,9 +1131,9 @@ public abstract class WsRemoteEndpointIm +@@ -1145,9 +1146,9 @@ public abstract class WsRemoteEndpointIm private void doWrite(boolean last) throws IOException { if (used) { @@ -3066,9 +3066,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsRem } else { endpoint.stateMachine.complete(last); } -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsSession.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsSession.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsSession.java 2020-10-06 16:23:56.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsSession.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsSession.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsSession.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsSession.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsSession.java 2021-10-18 22:46:03.760843139 +0200 @@ -18,6 +18,7 @@ package org.apache.tomcat.websocket; import java.io.IOException; @@ -3086,9 +3086,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsSes try { wsRemoteEndpoint.sendMessageBlock(Constants.OPCODE_CLOSE, msg, true); } catch (IOException | WritePendingException e) { -diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsWebSocketContainer.java apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsWebSocketContainer.java ---- apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsWebSocketContainer.java 2020-10-06 16:23:56.000000000 +0200 -+++ apache-tomcat-9.0.39-src/java/org/apache/tomcat/websocket/WsWebSocketContainer.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsWebSocketContainer.java apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsWebSocketContainer.java +--- apache-tomcat-9.0.43-src.orig/java/org/apache/tomcat/websocket/WsWebSocketContainer.java 2021-01-28 21:36:30.000000000 +0100 ++++ apache-tomcat-9.0.43-src/java/org/apache/tomcat/websocket/WsWebSocketContainer.java 2021-10-18 22:46:03.760843139 +0200 @@ -27,6 +27,7 @@ import java.net.ProxySelector; import java.net.SocketAddress; import java.net.URI; @@ -3097,7 +3097,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsWeb import java.nio.ByteBuffer; import java.nio.channels.AsynchronousChannelGroup; import java.nio.channels.AsynchronousSocketChannel; -@@ -754,7 +755,7 @@ public class WsWebSocketContainer implem +@@ -753,7 +754,7 @@ public class WsWebSocketContainer implem // Terminating CRLF result.put(CRLF); @@ -3106,7 +3106,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsWeb return result; } -@@ -783,7 +784,7 @@ public class WsWebSocketContainer implem +@@ -782,7 +783,7 @@ public class WsWebSocketContainer implem newSize = input.capacity() * 2; } ByteBuffer expanded = ByteBuffer.allocate(newSize); @@ -3115,7 +3115,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsWeb expanded.put(input); input = expanded; } -@@ -812,7 +813,7 @@ public class WsWebSocketContainer implem +@@ -811,7 +812,7 @@ public class WsWebSocketContainer implem while (!readHeaders) { // On entering loop buffer will be empty and at the start of a new // loop the buffer will have been fully read. @@ -3124,7 +3124,7 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsWeb // Blocking read Future read = channel.read(response); Integer bytesRead; -@@ -827,7 +828,7 @@ public class WsWebSocketContainer implem +@@ -826,7 +827,7 @@ public class WsWebSocketContainer implem if (bytesRead.intValue() == -1) { throw new EOFException(sm.getString("wsWebSocketContainer.responseFail", Integer.toString(status), headers)); } @@ -3133,9 +3133,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/java/org/apache/tomcat/websocket/WsWeb while (response.hasRemaining() && !readHeaders) { if (line == null) { line = readLine(response); -diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http11/upgrade/TestUpgradeInternalHandler.java apache-tomcat-9.0.39-src/test/org/apache/coyote/http11/upgrade/TestUpgradeInternalHandler.java ---- apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http11/upgrade/TestUpgradeInternalHandler.java 2020-10-06 16:23:59.000000000 +0200 -+++ apache-tomcat-9.0.39-src/test/org/apache/coyote/http11/upgrade/TestUpgradeInternalHandler.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http11/upgrade/TestUpgradeInternalHandler.java apache-tomcat-9.0.43-src/test/org/apache/coyote/http11/upgrade/TestUpgradeInternalHandler.java +--- apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http11/upgrade/TestUpgradeInternalHandler.java 2021-01-28 21:36:33.000000000 +0100 ++++ apache-tomcat-9.0.43-src/test/org/apache/coyote/http11/upgrade/TestUpgradeInternalHandler.java 2021-10-18 22:46:03.760843139 +0200 @@ -25,6 +25,7 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Writer; @@ -3153,9 +3153,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http11/upgrade/ CompletionState state = wrapper.write(BlockingMode.BLOCK, 10, TimeUnit.SECONDS, null, SocketWrapperBase.COMPLETE_WRITE, new CompletionHandler() { @Override public void completed(Long result, Void attachment) { -diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/Http2TestBase.java apache-tomcat-9.0.39-src/test/org/apache/coyote/http2/Http2TestBase.java ---- apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/Http2TestBase.java 2020-10-06 16:23:59.000000000 +0200 -+++ apache-tomcat-9.0.39-src/test/org/apache/coyote/http2/Http2TestBase.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http2/Http2TestBase.java apache-tomcat-9.0.43-src/test/org/apache/coyote/http2/Http2TestBase.java +--- apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http2/Http2TestBase.java 2021-01-28 21:36:33.000000000 +0100 ++++ apache-tomcat-9.0.43-src/test/org/apache/coyote/http2/Http2TestBase.java 2021-10-18 22:46:03.760843139 +0200 @@ -23,6 +23,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; @@ -3240,9 +3240,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/Http2Test while (bodyBuffer.hasRemaining()) { trace.append((char) bodyBuffer.get()); } -diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/TestHpack.java apache-tomcat-9.0.39-src/test/org/apache/coyote/http2/TestHpack.java ---- apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/TestHpack.java 2020-10-06 16:23:59.000000000 +0200 -+++ apache-tomcat-9.0.39-src/test/org/apache/coyote/http2/TestHpack.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http2/TestHpack.java apache-tomcat-9.0.43-src/test/org/apache/coyote/http2/TestHpack.java +--- apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http2/TestHpack.java 2021-01-28 21:36:33.000000000 +0100 ++++ apache-tomcat-9.0.43-src/test/org/apache/coyote/http2/TestHpack.java 2021-10-18 22:46:03.760843139 +0200 @@ -16,6 +16,7 @@ */ package org.apache.coyote.http2; @@ -3305,9 +3305,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/TestHpack MimeHeaders headers2 = new MimeHeaders(); HpackDecoder decoder = new HpackDecoder(); decoder.setHeaderEmitter(new HeadersListener(headers2)); -diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/TestHttp2Limits.java apache-tomcat-9.0.39-src/test/org/apache/coyote/http2/TestHttp2Limits.java ---- apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/TestHttp2Limits.java 2020-10-06 16:23:59.000000000 +0200 -+++ apache-tomcat-9.0.39-src/test/org/apache/coyote/http2/TestHttp2Limits.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http2/TestHttp2Limits.java apache-tomcat-9.0.43-src/test/org/apache/coyote/http2/TestHttp2Limits.java +--- apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http2/TestHttp2Limits.java 2021-01-28 21:36:33.000000000 +0100 ++++ apache-tomcat-9.0.43-src/test/org/apache/coyote/http2/TestHttp2Limits.java 2021-10-18 22:46:03.764843154 +0200 @@ -17,6 +17,7 @@ package org.apache.coyote.http2; @@ -3325,9 +3325,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/TestHttp2 log.debug("Headers payload generated of size [" + headersPayload.limit() + "]"); } -diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/TestHttp2Section_8_1.java apache-tomcat-9.0.39-src/test/org/apache/coyote/http2/TestHttp2Section_8_1.java ---- apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/TestHttp2Section_8_1.java 2020-10-06 16:23:59.000000000 +0200 -+++ apache-tomcat-9.0.39-src/test/org/apache/coyote/http2/TestHttp2Section_8_1.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http2/TestHttp2Section_8_1.java apache-tomcat-9.0.43-src/test/org/apache/coyote/http2/TestHttp2Section_8_1.java +--- apache-tomcat-9.0.43-src.orig/test/org/apache/coyote/http2/TestHttp2Section_8_1.java 2021-01-28 21:36:33.000000000 +0100 ++++ apache-tomcat-9.0.43-src/test/org/apache/coyote/http2/TestHttp2Section_8_1.java 2021-10-18 22:46:03.764843154 +0200 @@ -16,6 +16,7 @@ */ package org.apache.coyote.http2; @@ -3345,9 +3345,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/coyote/http2/TestHttp2 buildSimpleGetRequestPart2(headersFrameHeader, headersPayload, headers , 3); -diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/tomcat/util/buf/TestUtf8.java apache-tomcat-9.0.39-src/test/org/apache/tomcat/util/buf/TestUtf8.java ---- apache-tomcat-9.0.39-src.orig/test/org/apache/tomcat/util/buf/TestUtf8.java 2020-10-06 16:23:59.000000000 +0200 -+++ apache-tomcat-9.0.39-src/test/org/apache/tomcat/util/buf/TestUtf8.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/test/org/apache/tomcat/util/buf/TestUtf8.java apache-tomcat-9.0.43-src/test/org/apache/tomcat/util/buf/TestUtf8.java +--- apache-tomcat-9.0.43-src.orig/test/org/apache/tomcat/util/buf/TestUtf8.java 2021-01-28 21:36:34.000000000 +0100 ++++ apache-tomcat-9.0.43-src/test/org/apache/tomcat/util/buf/TestUtf8.java 2021-10-18 22:46:03.764843154 +0200 @@ -16,6 +16,7 @@ */ package org.apache.tomcat.util.buf; @@ -3395,9 +3395,9 @@ diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/tomcat/util/buf/TestUt String expected = testCase.outputReplaced; if ((flags & REPLACE_SWALLOWS_TRAILER) != 0) { -diff -Napur apache-tomcat-9.0.39-src.orig/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java apache-tomcat-9.0.39-src/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java ---- apache-tomcat-9.0.39-src.orig/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java 2020-10-06 16:24:00.000000000 +0200 -+++ apache-tomcat-9.0.39-src/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java 2021-03-15 18:25:09.773415244 +0100 +diff -Napur apache-tomcat-9.0.43-src.orig/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java apache-tomcat-9.0.43-src/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java +--- apache-tomcat-9.0.43-src.orig/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java 2021-01-28 21:36:34.000000000 +0100 ++++ apache-tomcat-9.0.43-src/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java 2021-10-18 22:46:03.764843154 +0200 @@ -18,6 +18,7 @@ package org.apache.tomcat.websocket.pojo import java.io.IOException; diff --git a/tomcat.changes b/tomcat.changes index 3dbeffd..6e34473 100644 --- a/tomcat.changes +++ b/tomcat.changes @@ -1,3 +1,27 @@ +------------------------------------------------------------------- +Mon Oct 18 21:42:48 UTC 2021 - Marcel Witte + +- Update to Tomcat 9.0.43. See changelog at + https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.43_(markt) +- Removed Patches because fixed upstream now: + * tomcat-9.0-CVE-2021-25122.patch + * tomcat-9.0-CVE-2021-25329.patch + +------------------------------------------------------------------- +Mon Oct 18 18:26:39 UTC 2021 - Marcel Witte + +- Update to Tomcat 9.0.41. See changelog at + https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.41_(markt) + +------------------------------------------------------------------- +Mon Oct 18 13:05:17 UTC 2021 - Marcel Witte + +- Update to Tomcat 9.0.40. See changelog at + https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.40_(markt) +- Removed Patches because fixed upstream now: + * tomcat-9.0-CVE-2020-17527.patch + * tomcat-9.0-CVE-2021-24122.patch + ------------------------------------------------------------------- Mon Mar 22 13:11:34 UTC 2021 - Abid Mehmood diff --git a/tomcat.spec b/tomcat.spec index 320ae18..ed72c74 100644 --- a/tomcat.spec +++ b/tomcat.spec @@ -22,7 +22,7 @@ %define elspec 3.0 %define major_version 9 %define minor_version 0 -%define micro_version 39 +%define micro_version 43 %define packdname apache-tomcat-%{version}-src %define serverxmltool_version 1.0 # FHS 2.3 compliant tree structure - http://www.pathname.com/fhs/2.3/ @@ -80,13 +80,9 @@ Patch3: %{name}-%{major_version}.%{minor_version}-javadoc.patch # PATCH-FIX-OPENSUSE: include all necessary aqute-bnd jars Patch4: tomcat-9.0-osgi-build.patch # PATCH-FIX-OPENSUSE: cast ByteBuffer to Buffer in cases where there is a risk of using Java 9+ apis -Patch5: tomcat-9.0.39-java8compat.patch +Patch5: tomcat-9.0.43-java8compat.patch # PATCH-FIX-OPENSUSE: set ajp connector secreteRequired to false by default to avoid tomcat not starting Patch6: tomcat-9.0.31-secretRequired-default.patch -Patch8: tomcat-9.0-CVE-2020-17527.patch -Patch9: tomcat-9.0-CVE-2021-24122.patch -Patch10: tomcat-9.0-CVE-2021-25122.patch -Patch11: tomcat-9.0-CVE-2021-25329.patch BuildRequires: ant >= 1.8.1 BuildRequires: ant-antlr @@ -261,10 +257,6 @@ find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name " %patch4 -p1 %patch5 -p1 %patch6 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 # remove date from docs sed -i -e '/build-date/ d' webapps/docs/tomcat-docs.xsl