Compare commits

...

6 Commits
c10s ... a10

Author SHA1 Message Date
Eduard Abdullin
1062c94acf Exclude i686 architecture from build 2026-05-19 19:15:36 +00:00
AlmaLinux RelEng Bot
b7d933898b import CS tomcat9-9.0.110-3.el10 2026-05-19 15:15:27 -04:00
f6c12d8aed import OL tomcat9-9.0.87-8.el10_1.1 2025-12-11 08:48:19 +00:00
f4dac48c59 import OL tomcat9-9.0.87-5.el10_0.3 2025-08-22 07:35:35 +00:00
e0fc1412c0 import CS tomcat9-9.0.87-5.el10_0.1 2025-07-21 08:44:24 +00:00
2aa6b49b07 import CS tomcat9-9.0.87-5.el10 2025-05-15 15:30:12 +00:00
14 changed files with 267 additions and 94 deletions

View File

@ -1 +0,0 @@
1

4
.gitignore vendored
View File

@ -1,3 +1 @@
/tomcat-9.0.87.redhat-00005-src.zip apache-tomcat-9.0.110-src.tar.gz
/tomcat-9.0.87.redhat-00006-src.zip
/tomcat-9.0.87.redhat-00008-src.zip

View File

@ -1,40 +0,0 @@
diff --git a/java/org/apache/catalina/mbeans/JmxRemoteLifecycleListener.java b/java/org/apache/catalina/mbeans/JmxRemoteLifecycleListener.java
index f62f8d1..db19960 100644
--- a/java/org/apache/catalina/mbeans/JmxRemoteLifecycleListener.java
+++ b/java/org/apache/catalina/mbeans/JmxRemoteLifecycleListener.java
@@ -611,34 +611,28 @@ public class JmxRemoteLifecycleListener extends SSLHostConfig implements Lifecyc
* Better to use the internal API than re-invent the wheel.
*/
@SuppressWarnings("restriction")
- private static class JmxRegistry extends sun.rmi.registry.RegistryImpl {
+ private static class JmxRegistry {
private static final long serialVersionUID = -3772054804656428217L;
private final String jmxName;
private final Remote jmxServer;
public JmxRegistry(int port, RMIClientSocketFactory csf,
RMIServerSocketFactory ssf, String jmxName, Remote jmxServer) throws RemoteException {
- super(port, csf, ssf);
this.jmxName = jmxName;
this.jmxServer = jmxServer;
}
- @Override
public Remote lookup(String name)
throws RemoteException, NotBoundException {
return (jmxName.equals(name)) ? jmxServer : null;
}
- @Override
public void bind(String name, Remote obj)
throws RemoteException, AlreadyBoundException, AccessException {
}
- @Override
public void unbind(String name)
throws RemoteException, NotBoundException, AccessException {
}
- @Override
public void rebind(String name, Remote obj)
throws RemoteException, AccessException {
}
- @Override
public String[] list() throws RemoteException {
return new String[] { jmxName };
}

76
build-with-java-25.patch Normal file
View File

@ -0,0 +1,76 @@
--- build.xml.orig 2026-02-12 14:28:31.466893106 -0500
+++ build.xml 2026-02-12 14:28:44.320933346 -0500
@@ -968,7 +968,7 @@
<javac srcdir="java" destdir="${tomcat.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeAntRuntime="true" >
<!-- Uncomment this to show unchecked warnings:
@@ -1021,7 +1021,7 @@
<javac srcdir="java" destdir="${tomcat.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeAntRuntime="true" >
<!-- Uncomment this to show unchecked warnings:
@@ -1038,7 +1038,7 @@
<javac srcdir="java" destdir="${tomcat.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${release.java.version}"
+ source="22" target="22"
encoding="ISO-8859-1"
includeAntRuntime="true"
if:set="has-ffm" >
@@ -1577,7 +1577,7 @@
<javac srcdir="webapps/examples/WEB-INF/classes"
destdir="${tomcat.build}/webapps/examples/WEB-INF/classes"
debug="${compile.debug}" deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
classpath="${tomcat.classes}"
encoding="ISO-8859-1"
includeantruntime="false">
@@ -1806,7 +1806,7 @@
destdir="${xreflect.directory}/classes"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeAntRuntime="true" >
<compilerarg value="-XDignore.symbol.file"/>
@@ -1892,7 +1892,7 @@
<javac srcdir="test" destdir="${test.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeantruntime="true">
<classpath refid="tomcat.test.classpath" />
--- modules/jdbc-pool/build.xml.orig 2026-02-12 14:28:31.469893115 -0500
+++ modules/jdbc-pool/build.xml 2026-02-12 14:28:44.327503027 -0500
@@ -163,7 +163,7 @@
<javac srcdir="${basedir}/src/main/java" destdir="${tomcat.classes}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeantruntime="false">
<classpath refid="tomcat.jdbc.classpath"/>
@@ -201,7 +201,7 @@
<javac srcdir="${basedir}/src/test/java" destdir="${tomcat.testclasses}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
- release="${compile.release}"
+ source="8" target="8"
encoding="ISO-8859-1"
includeantruntime="false">
<classpath refid="tomcat.jdbc.classpath"/>

1
ci.fmf
View File

@ -1 +0,0 @@
resultsdb-testcase: separate

View File

@ -1,6 +0,0 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional}

View File

@ -1,9 +0,0 @@
summary: Basic smoke test
prepare:
- name: packages
how: install
package:
- tomcat9
execute:
how: tmt
script: which tomcat

View File

@ -1,11 +0,0 @@
summary: Internal Tier1 beakerlib tests.
discover:
- name: rhel
how: fmf
url: git://pkgs.devel.redhat.com/tests/tomcat9
filter: 'tier: 1'
execute:
how: tmt
adjust:
enabled: false
when: distro == centos-stream-10

View File

@ -1,7 +1,6 @@
diff -up ./build.xml.orig ./build.xml --- build.xml.orig 2026-02-11 15:17:18.947314996 -0500
--- build.xml.orig 2021-07-07 10:53:55.493742841 +0800 +++ build.xml 2026-02-11 15:17:23.675329041 -0500
+++ build.xml 2021-07-07 11:09:43.107968515 +0800 @@ -1116,7 +1116,7 @@
@@ -1020,7 +1020,7 @@
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.annotations-api" filesId="files.annotations-api"
manifest="${tomcat.manifests}/annotations-api.jar.manifest" manifest="${tomcat.manifests}/annotations-api.jar.manifest"
@ -10,7 +9,7 @@ diff -up ./build.xml.orig ./build.xml
<!-- Servlet Implementation JAR File --> <!-- Servlet Implementation JAR File -->
<jarIt jarfile="${servlet-api.jar}" <jarIt jarfile="${servlet-api.jar}"
@@ -1029,41 +1029,41 @@ @@ -1125,41 +1125,41 @@
manifest="${tomcat.manifests}/servlet-api.jar.manifest" manifest="${tomcat.manifests}/servlet-api.jar.manifest"
notice="${tomcat.manifests}/servlet-api.jar.notice" notice="${tomcat.manifests}/servlet-api.jar.notice"
license="${tomcat.manifests}/servlet-api.jar.license" license="${tomcat.manifests}/servlet-api.jar.license"
@ -58,7 +57,7 @@ diff -up ./build.xml.orig ./build.xml
<!-- Bootstrap JAR File --> <!-- Bootstrap JAR File -->
<jarIt jarfile="${bootstrap.jar}" <jarIt jarfile="${bootstrap.jar}"
@@ -1075,61 +1075,61 @@ @@ -1171,68 +1171,68 @@
<jarIt jarfile="${tomcat-util.jar}" <jarIt jarfile="${tomcat-util.jar}"
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-util" filesId="files.tomcat-util"
@ -90,6 +89,14 @@ diff -up ./build.xml.orig ./build.xml
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-coyote" filesId="files.tomcat-coyote"
- addOSGi="true" /> - addOSGi="true" />
+ addOSGi="false" />
<!-- OpenSSL FFM - Coyote -->
<jarIt jarfile="${tomcat-coyote-ffm.jar}"
filesDir="${tomcat.classes}"
filesId="files.tomcat-coyote-ffm"
manifest="${tomcat.manifests}/tomcat-coyote-ffm.jar.manifest"
- addOSGi="true" />
+ addOSGi="false" /> + addOSGi="false" />
<!-- WebSocket implementation JAR File --> <!-- WebSocket implementation JAR File -->
@ -130,7 +137,7 @@ diff -up ./build.xml.orig ./build.xml
<!-- Catalina Ant Tasks JAR File --> <!-- Catalina Ant Tasks JAR File -->
<jarIt jarfile="${catalina-ant.jar}" <jarIt jarfile="${catalina-ant.jar}"
@@ -1140,27 +1140,27 @@ @@ -1243,27 +1243,27 @@
<jarIt jarfile="${catalina-storeconfig.jar}" <jarIt jarfile="${catalina-storeconfig.jar}"
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.catalina-storeconfig" filesId="files.catalina-storeconfig"
@ -162,7 +169,7 @@ diff -up ./build.xml.orig ./build.xml
<!-- i18n JARs --> <!-- i18n JARs -->
<jar jarfile="${tomcat.build}/lib/tomcat-i18n-cs.jar" <jar jarfile="${tomcat.build}/lib/tomcat-i18n-cs.jar"
@@ -1620,7 +1620,7 @@ @@ -1716,7 +1716,7 @@
filesId="files.tomcat-embed-core" filesId="files.tomcat-embed-core"
notice="${tomcat.manifests}/servlet-api.jar.notice" notice="${tomcat.manifests}/servlet-api.jar.notice"
license="${tomcat.manifests}/servlet-api.jar.license" license="${tomcat.manifests}/servlet-api.jar.license"
@ -171,7 +178,7 @@ diff -up ./build.xml.orig ./build.xml
addGraal="true" addGraal="true"
graalPrefix="org.apache.tomcat.embed/tomcat-embed-core" graalPrefix="org.apache.tomcat.embed/tomcat-embed-core"
graalFiles="res/graal/tomcat-embed-core/native-image" graalFiles="res/graal/tomcat-embed-core/native-image"
@@ -1628,7 +1628,7 @@ @@ -1724,7 +1724,7 @@
<jarIt jarfile="${tomcat-embed-el.jar}" <jarIt jarfile="${tomcat-embed-el.jar}"
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-embed-el" filesId="files.tomcat-embed-el"
@ -180,7 +187,7 @@ diff -up ./build.xml.orig ./build.xml
addGraal="true" addGraal="true"
graalPrefix="org.apache.tomcat.embed/tomcat-embed-el" graalPrefix="org.apache.tomcat.embed/tomcat-embed-el"
graalFiles="res/graal/tomcat-embed-el/native-image" graalFiles="res/graal/tomcat-embed-el/native-image"
@@ -1637,7 +1637,7 @@ @@ -1733,7 +1733,7 @@
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-embed-jasper" filesId="files.tomcat-embed-jasper"
meta-inf="${tomcat.manifests}/jasper.jar" meta-inf="${tomcat.manifests}/jasper.jar"
@ -189,7 +196,7 @@ diff -up ./build.xml.orig ./build.xml
addGraal="true" addGraal="true"
graalPrefix="org.apache.tomcat.embed/tomcat-embed-jasper" graalPrefix="org.apache.tomcat.embed/tomcat-embed-jasper"
graalFiles="res/graal/tomcat-embed-jasper/native-image" graalFiles="res/graal/tomcat-embed-jasper/native-image"
@@ -1646,7 +1646,7 @@ @@ -1742,7 +1742,7 @@
filesDir="${tomcat.classes}" filesDir="${tomcat.classes}"
filesId="files.tomcat-embed-websocket" filesId="files.tomcat-embed-websocket"
meta-inf="${tomcat.manifests}/tomcat-websocket.jar" meta-inf="${tomcat.manifests}/tomcat-websocket.jar"

46
rhel-158962.patch Normal file
View File

@ -0,0 +1,46 @@
From 93fc51176bbcf643a46cc271b85ff49cbb01f1a6 Mon Sep 17 00:00:00 2001
From: remm <remm@apache.org>
Date: Wed, 3 Dec 2025 21:22:54 +0100
Subject: [PATCH] Avoid possible NPEs when using a TLS enabled custom connector
---
.../org/apache/tomcat/util/net/AbstractJsseEndpoint.java | 9 +++++++++
webapps/docs/changelog.xml | 7 +++++++
2 files changed, 16 insertions(+)
diff --git a/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java b/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
index 1d639176eb17..9a4b8fa37fb5 100644
--- a/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
@@ -127,8 +127,17 @@ protected void createSSLContext(SSLHostConfig sslHostConfig) throws IllegalArgum
protected SSLEngine createSSLEngine(String sniHostName, List<Cipher> clientRequestedCiphers,
List<String> clientRequestedApplicationProtocols) {
List<String> clientRequestedProtocols = clientRequestedProtocolsThreadLocal.get();
+ if (clientRequestedProtocols == null) {
+ clientRequestedProtocols = new ArrayList<String>();
+ }
List<Group> clientSupportedGroups = clientSupportedGroupsThreadLocal.get();
+ if (clientSupportedGroups == null) {
+ clientSupportedGroups = new ArrayList<Group>();
+ }
List<SignatureScheme> clientSignatureSchemes = clientSignatureSchemesThreadLocal.get();
+ if (clientSignatureSchemes == null) {
+ clientSignatureSchemes = new ArrayList<SignatureScheme>();
+ }
SSLHostConfig sslHostConfig = getSSLHostConfig(sniHostName);
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 9ef3d9b04912..03be8d1358ae 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -155,6 +155,9 @@
Store HTTP request headers using the original case for the header name
rather than forcing it to lower case. (markt)
</fix>
+ <fix>
+ Avoid possible NPEs when using a TLS enabled custom connector. (remm)
+ </fix>
</changelog>
</subsection>
<subsection name="Cluster">

54
rhel-168243.patch Normal file
View File

@ -0,0 +1,54 @@
diff -up ./java/org/apache/coyote/ajp/Constants.java ./java/org/apache/coyote/ajp/Constants.java
--- ./java/org/apache/coyote/ajp/Constants.java 2025-10-01 04:36:05.000000000 -0400
+++ ./java/org/apache/coyote/ajp/Constants.java 2026-04-14 15:27:50.820988961 -0400
@@ -105,7 +105,7 @@
// Translates integer codes to names of HTTP methods
private static final String[] methodTransArray =
- { Method.OPTIONS, Method.GET, Method.HEAD, Method.POST, Method.PUT, Method.OPTIONS, Method.TRACE, Method.TRACE, Method.PROPPATCH, Method.MKCOL, Method.COPY,
+ { Method.OPTIONS, Method.GET, Method.HEAD, Method.POST, Method.PUT, Method.DELETE, Method.TRACE, Method.TRACE, Method.PROPPATCH, Method.MKCOL, Method.COPY,
Method.MOVE, Method.LOCK, Method.UNLOCK, "ACL", "REPORT", "VERSION-CONTROL", "CHECKIN", "CHECKOUT", "UNCHECKOUT",
"SEARCH", "MKWORKSPACE", "UPDATE", "LABEL", "MERGE", "BASELINE-CONTROL", "MKACTIVITY" };
diff -up ./test/org/apache/catalina/realm/TestRealmBase.java ./test/org/apache/catalina/realm/TestRealmBase.java
--- ./test/org/apache/catalina/realm/TestRealmBase.java 2025-10-01 04:36:05.000000000 -0400
+++ ./test/org/apache/catalina/realm/TestRealmBase.java 2026-04-14 15:27:50.821211035 -0400
@@ -660,7 +660,7 @@
SecurityConstraint deleteConstraint = new SecurityConstraint();
deleteConstraint.addAuthRole(ROLE1);
SecurityCollection deleteCollection = new SecurityCollection();
- deleteCollection.addMethod(Method.OPTIONS);
+ deleteCollection.addMethod(Method.DELETE);
deleteCollection.addPatternDecoded("/*");
deleteConstraint.addCollection(deleteCollection);
@@ -772,7 +772,7 @@
// Only user1 should be able to perform a DELETE as only that user has
// role1.
- request.setMethod(Method.OPTIONS);
+ request.setMethod(Method.DELETE);
SecurityConstraint[] constraintsDelete =
mapRealm.findSecurityConstraints(request, context);
diff -up ./webapps/docs/changelog.xml.orig ./webapps/docs/changelog.xml
--- ./webapps/docs/changelog.xml.orig 2026-04-14 15:48:53.192243701 -0400
+++ ./webapps/docs/changelog.xml 2026-04-14 15:49:48.893470762 -0400
@@ -104,6 +104,17 @@
They eventually become mixed with the numbered issues (i.e., numbered
issues do not "pop up" wrt. others).
-->
+<section name="Tomcat 9.0.110-redhat (csutherl)" rtext="">
+ <subsection name="Coyote">
+ <changelog>
+ <fix>
+ <bug>69848</bug>: Fix copy/paste error that meant DELETE
+ requests received via the AJP connector were processed as OPTIONS
+ requests. (markt)
+ </fix>
+ </changelog>
+ </subsection>
+</section>
<section name="Tomcat 9.0.110 (remm)" rtext="">
<subsection name="Catalina">
<changelog>

View File

@ -1 +1 @@
SHA512 (tomcat-9.0.87.redhat-00008-src.zip) = 5863c033928427db91d1ecf92485641aa3de8d0bf38dd23293c6d86667da46df77b592342031f7caf915a52ed87a415a1d88937809a0b799a17b5901ceda03c2 SHA512 (apache-tomcat-9.0.110-src.tar.gz) = a8fe2c59a801d6fb16ea74019c6fc58c34543d4d25a16d64e929e67c7736f6e16d08ec2061b37f1783ebfa0b1dacfff991e46ed5d24d89300a140cb94449f570

View File

@ -10,7 +10,8 @@ OPTIONS="-Dcatalina.base=$CATALINA_BASE \
-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \ -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \
-Djava.io.tmpdir=$CATALINA_TMPDIR \ -Djava.io.tmpdir=$CATALINA_TMPDIR \
-Djava.util.logging.config.file=${LOGGING_PROPERTIES} \ -Djava.util.logging.config.file=${LOGGING_PROPERTIES} \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Dsun.io.useCanonCaches=false"
if [ "$1" = "start" ] ; then if [ "$1" = "start" ] ; then
FLAGS="${FLAGS} $CATALINA_OPTS" FLAGS="${FLAGS} $CATALINA_OPTS"

View File

@ -31,8 +31,8 @@
%global jspspec 2.3 %global jspspec 2.3
%global major_version 9 %global major_version 9
%global minor_version 0 %global minor_version 0
%global micro_version 87 %global micro_version 110
%global packdname tomcat-%{major_version}.%{minor_version}.%{micro_version}.redhat-00008-src %global packdname apache-tomcat-%{major_version}.%{minor_version}.%{micro_version}-src
%global servletspec 4.0 %global servletspec 4.0
%global elspec 3.0 %global elspec 3.0
%global tcuid 53 %global tcuid 53
@ -53,12 +53,12 @@
Name: tomcat9 Name: tomcat9
Epoch: 1 Epoch: 1
Version: %{major_version}.%{minor_version}.%{micro_version} Version: %{major_version}.%{minor_version}.%{micro_version}
Release: 5%{?dist} Release: 3%{?dist}.alma.1
Summary: Apache Servlet/JSP Engine, RI for Servlet %{servletspec}/JSP %{jspspec} API Summary: Apache Servlet/JSP Engine, RI for Servlet %{servletspec}/JSP %{jspspec} API
License: Apache-2.0 License: Apache-2.0
URL: http://tomcat.apache.org/ URL: http://tomcat.apache.org/
Source0: %{packdname}.zip Source0: %{packdname}.tar.gz
Source1: tomcat-%{major_version}.%{minor_version}.conf Source1: tomcat-%{major_version}.%{minor_version}.conf
Source3: tomcat-%{major_version}.%{minor_version}.sysconfig Source3: tomcat-%{major_version}.%{minor_version}.sysconfig
Source4: tomcat-%{major_version}.%{minor_version}.wrapper Source4: tomcat-%{major_version}.%{minor_version}.wrapper
@ -77,20 +77,24 @@ Patch1: tomcat-%{major_version}.%{minor_version}-tomcat-users-webapp.patc
Patch3: tomcat-%{major_version}.%{minor_version}-catalina-policy.patch Patch3: tomcat-%{major_version}.%{minor_version}-catalina-policy.patch
Patch4: rhbz-1857043.patch Patch4: rhbz-1857043.patch
Patch6: tomcat-%{major_version}.%{minor_version}-bnd-annotation.patch Patch6: tomcat-%{major_version}.%{minor_version}-bnd-annotation.patch
Patch7: JmxRemoteLifecycleListener.patch Patch7: build-with-java-25.patch
Patch8: rhel-158962.patch
Patch9: rhel-168243.patch
BuildArch: noarch BuildArch: noarch
ExcludeArch: i686
BuildRequires: ant BuildRequires: ant
BuildRequires: ecj >= 1:4.10 BuildRequires: ecj >= 1:4.10
BuildRequires: findutils BuildRequires: findutils
BuildRequires: java-devel
BuildRequires: javapackages-local BuildRequires: javapackages-local
BuildRequires: aqute-bnd BuildRequires: aqute-bnd
BuildRequires: aqute-bndlib BuildRequires: aqute-bndlib
BuildRequires: systemd BuildRequires: systemd
BuildRequires: java-25-devel
Requires: java-headless Requires: (java-headless or java-25-headless)
Requires: javapackages-tools Requires: javapackages-tools
Requires: %{name}-lib = %{epoch}:%{version}-%{release} Requires: %{name}-lib = %{epoch}:%{version}-%{release}
@ -199,7 +203,7 @@ Obsoletes: tomcat-webapps < 1:10.0.0-1
The ROOT web application for Apache Tomcat. The ROOT web application for Apache Tomcat.
%prep %prep
%setup -q -n apache-%{packdname} %setup -q -n %{packdname}
# remove pre-built binaries and windows files # remove pre-built binaries and windows files
find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name "*.gz" -o \ find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name "*.gz" -o \
-name "*.jar" -o -name "*.war" -o -name "*.zip" \) -delete -name "*.jar" -o -name "*.war" -o -name "*.zip" \) -delete
@ -209,7 +213,9 @@ find . -type f \( -name "*.bat" -o -name "*.class" -o -name Thumbs.db -o -name "
%patch -P3 -p0 %patch -P3 -p0
%patch -P4 -p0 %patch -P4 -p0
%patch -P6 -p0 %patch -P6 -p0
%patch -P7 -p1 %patch -P7 -p0
%patch -P8 -p1
%patch -P9 -p1
# Remove webservices naming resources as it's generally unused # Remove webservices naming resources as it's generally unused
%{__rm} -rf java/org/apache/naming/factory/webservices %{__rm} -rf java/org/apache/naming/factory/webservices
@ -229,8 +235,12 @@ export OPT_JAR_LIST="xalan-j2-serializer"
# so just create a dummy file for later removal # so just create a dummy file for later removal
touch HACK touch HACK
# Adding JAVA_HOME to always compile with java-25 instead of autodetecting
export JAVA_HOME=%{_jvmdir}/java-25-openjdk
export PATH=$JAVA_HOME/bin:$PATH
# who needs a build.properties file anyway # who needs a build.properties file anyway
%{ant} -Dbase.path="." \ ant -Dbase.path="." \
-Dbuild.compiler="modern" \ -Dbuild.compiler="modern" \
-Dcommons-daemon.jar="HACK" \ -Dcommons-daemon.jar="HACK" \
-Dcommons-daemon.native.src.tgz="HACK" \ -Dcommons-daemon.native.src.tgz="HACK" \
@ -249,6 +259,9 @@ touch HACK
# remove some jars that we'll replace with symlinks later # remove some jars that we'll replace with symlinks later
%{__rm} output/build/lib/ecj.jar %{__rm} output/build/lib/ecj.jar
# Cleanup commons-daemon.jar that somehow appeared since last build, but is unnecessary
%{__rm} -rf output/build/bin/commons-daemon.jar
# Remove the example webapps per Apache Tomcat Security Considerations # Remove the example webapps per Apache Tomcat Security Considerations
# see https://tomcat.apache.org/tomcat-9.0-doc/security-howto.html # see https://tomcat.apache.org/tomcat-9.0-doc/security-howto.html
%{__rm} -rf output/build/webapps/examples %{__rm} -rf output/build/webapps/examples
@ -396,6 +409,9 @@ popd
%mvn_file org.apache.tomcat:tomcat-coyote tomcat/tomcat-coyote %mvn_file org.apache.tomcat:tomcat-coyote tomcat/tomcat-coyote
%mvn_artifact res/maven/tomcat-coyote.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-coyote.jar %mvn_artifact res/maven/tomcat-coyote.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-coyote.jar
%mvn_file org.apache.tomcat:tomcat-coyote-ffm tomcat/tomcat-coyote-ffm
%mvn_artifact res/maven/tomcat-coyote-ffm.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-coyote-ffm.jar
%mvn_file org.apache.tomcat:tomcat-dbcp tomcat/tomcat-dbcp %mvn_file org.apache.tomcat:tomcat-dbcp tomcat/tomcat-dbcp
%mvn_artifact res/maven/tomcat-dbcp.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-dbcp.jar %mvn_artifact res/maven/tomcat-dbcp.pom ${RPM_BUILD_ROOT}%{libdir}/tomcat-dbcp.jar
@ -622,6 +638,49 @@ fi
%{appdir}/ROOT %{appdir}/ROOT
%changelog %changelog
* Tue May 19 2026 Eduard Abdullin <eabdullin@almalinux.org> - 1:9.0.110-3.alma.1
- Exclude i686 architecture from build
* Tue Apr 14 2026 Coty Sutherland <csutherl@redhat.com> - 1:9.0.110-3
- Resolves: RHEL-168243 Fix copy/paste error in AJP connector that caused DELETE requests to be processed as OPTIONS requests (BZ#69848)
* Mon Mar 23 2026 Coty Sutherland <csutherl@redhat.com> - 1:9.0.110-2
- Resolves: RHEL-158962 NPE in tomcat9 when used with TLS enabled custom connector
* Wed Feb 11 2026 Coty Sutherland <csutherl@redhat.com> - 1:9.0.110-1
- Resolves: RHEL-148687
Update to 9.0.110 and compile with Java 25 to enable FFM features for PQC support
* Fri Jan 23 2026 Pietro Meloni <pmeloni@redhat.com> - 1:9.0.87-9
- Resolves: RHEL-124496
tomcat: Directory traversal via rewrite with possible RCE (CVE-2025-55752)
- Resolves: RHEL-132559
tomcat: Bypass of rules in Rewrite Valve (CVE-2025-31651)
* Mon Aug 18 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-8
- Resolves: RHEL-102186
tomcat: http/2 "MadeYouReset" DoS attack through HTTP/2 control frames (CVE-2025-48989)
* Wed Aug 13 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-7
- Resolves: RHEL-108485
tomcat: Apache Commons FileUpload DOS via part headers (CVE-2025-48976)
- Resolves: RHEL-108493
tomcat: Dos in multipart upload (CVE-2025-48988)
- Resolves: RHEL-108501
tomcat: Security constraint bypass for pre/post-resources (CVE-2025-49125)
- Resolves: RHEL-108509
tomcat: Denial of service (CVE-2025-52434)
- Resolves: RHEL-108522
tomcat: Denial of service (CVE-2025-52520)
- Resolves: RHEL-108517
tomcat: Denial of service (CVE-2025-53506)
* Mon May 26 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-5.el10_0.1
- Resolves: RHEL-91750
tomcat: DoS via malformed HTTP/2 PRIORITY_UPDATE frame (CVE-2025-31650)
- Resolves: RHEL-94960
tomcat: Incomplete fix for CVE-2024-50379 - RCE due to TOCTOU issue in JSP compilation (CVE-2024-56337)
* Mon Apr 14 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-5 * Mon Apr 14 2025 Adam Krajcik <akrajcik@redhat.com> - 1:9.0.87-5
- Resolves: RHEL-82927 - Resolves: RHEL-82927
tomcat: Potential RCE and/or information disclosure and/or information corruption with partial PUT (CVE-2025-24813) tomcat: Potential RCE and/or information disclosure and/or information corruption with partial PUT (CVE-2025-24813)