diff --git a/http/base/pom.xml b/http/base/pom.xml
index 934acb4a10..20fcaaac59 100644
--- a/http/base/pom.xml
+++ b/http/base/pom.xml
@@ -133,12 +133,6 @@
1.1.0
provided
-
- commons-fileupload
- commons-fileupload
- 1.6.0
- provided
-
org.apache.felix
org.apache.felix.http.wrappers
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
index d7c3eb6fde..f0b9a3a600 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
@@ -152,8 +152,7 @@ public void doFilter(final ServletRequest request, final ServletResponse respons
requestInfo,
null,
pr.handler.getServletInfo().isAsyncSupported(),
- multipartConfig,
- pr.handler.getMultipartSecurityContext());
+ multipartConfig);
}
final FilterHandler[] filterHandlers = handlerRegistry.getFilters(pr, req.getDispatcherType(), pr.requestURI);
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/FileCountLimitExceededException.java b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/FileCountLimitExceededException.java
new file mode 100644
index 0000000000..171a1ec092
--- /dev/null
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/FileCountLimitExceededException.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.http.base.internal.dispatch;
+
+import java.io.IOException;
+
+/**
+ * This exception is thrown if a request contains more files than the specified
+ * limit.
+ */
+public class FileCountLimitExceededException extends IOException {
+
+ private static final long serialVersionUID = 6904179610227521789L;
+
+ /**
+ * The limit that was exceeded.
+ */
+ private final long limit;
+
+ /**
+ * Creates a new instance.
+ *
+ * @param message The detail message
+ * @param limit The limit that was exceeded
+ */
+ public FileCountLimitExceededException(final String message, final long limit) {
+ super(message);
+ this.limit = limit;
+ }
+
+ /**
+ * Gets the limit that was exceeded.
+ *
+ * @return The limit that was exceeded by the request
+ */
+ public long getLimit() {
+ return limit;
+ }
+}
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/MultipartConfig.java b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/MultipartConfig.java
index b6c114bd3a..154e10d42d 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/MultipartConfig.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/MultipartConfig.java
@@ -18,8 +18,6 @@
import java.util.Objects;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-
public final class MultipartConfig
{
public static final MultipartConfig DEFAULT_CONFIG = new MultipartConfig(null, null, -1, -1, -1);
@@ -63,7 +61,7 @@ public MultipartConfig(final Integer threshold,
}
else
{
- this.multipartThreshold = DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD;
+ this.multipartThreshold = 10240;
}
this.multipartLocation = location;
if ( maxFileSize > 0 || maxFileSize == -1 ) {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/RequestDispatcherImpl.java b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/RequestDispatcherImpl.java
index cf7d4dcb3f..aea77d9cb3 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/RequestDispatcherImpl.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/RequestDispatcherImpl.java
@@ -82,8 +82,7 @@ public void forward(ServletRequest request, ServletResponse response) throws Ser
this.requestInfo,
DispatcherType.FORWARD,
this.resolution.handler.getServletInfo().isAsyncSupported(),
- multipartConfig,
- this.resolution.handler.getMultipartSecurityContext());
+ multipartConfig);
}
final String requestURI = UriUtils.concat(this.requestInfo.servletPath, this.requestInfo.pathInfo);
final FilterHandler[] filterHandlers = this.resolution.handlerRegistry.getFilterHandlers(this.resolution.handler, DispatcherType.FORWARD, requestURI);
@@ -129,8 +128,7 @@ public void include(ServletRequest request, ServletResponse response) throws Ser
this.requestInfo,
DispatcherType.INCLUDE,
this.resolution.handler.getServletInfo().isAsyncSupported(),
- multipartConfig,
- this.resolution.handler.getMultipartSecurityContext());
+ multipartConfig);
}
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestMultipartWrapper.java b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestMultipartWrapper.java
index 0f009c2cb6..711699a368 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestMultipartWrapper.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestMultipartWrapper.java
@@ -16,307 +16,70 @@
*/
package org.apache.felix.http.base.internal.dispatch;
-import java.io.File;
import java.io.IOException;
-import java.io.InputStream;
-import java.security.AccessControlContext;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileUpload;
-import org.apache.commons.fileupload.FileUploadBase;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.fileupload.RequestContext;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.felix.http.base.internal.context.ExtServletContext;
-import org.osgi.framework.Bundle;
import jakarta.servlet.DispatcherType;
+import jakarta.servlet.MultipartConfigElement;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.Part;
final class ServletRequestMultipartWrapper extends ServletRequestWrapper
{
- /**
- * Constant for HTTP POST method.
- */
- private static final String POST_METHOD = "POST";
-
- private final MultipartConfig multipartConfig;
- private Collection parts;
-
- private Map partsParameterMap;
- private Bundle bundleForSecurityCheck;
+ private long maxFileCount;
public ServletRequestMultipartWrapper(final HttpServletRequest req,
final ExtServletContext servletContext,
final RequestInfo requestInfo,
final DispatcherType type,
final boolean asyncSupported,
- final MultipartConfig multipartConfig,
- final Bundle bundleForSecurityCheck)
+ final MultipartConfig multipartConfig)
{
- super(req, servletContext, requestInfo, type, asyncSupported);
-
- this.multipartConfig = multipartConfig;
- this.bundleForSecurityCheck = bundleForSecurityCheck;
-
- }
-
- private RequestContext getMultipartContext() {
- final RequestContext multipartContext;
- if (!POST_METHOD.equalsIgnoreCase(this.getMethod())) {
- multipartContext = null;
- } else {
- multipartContext = new RequestContext() {
-
- @Override
- public InputStream getInputStream() throws IOException {
- return ServletRequestMultipartWrapper.this.getInputStream();
- }
+ super(req, servletContext, requestInfo, type, asyncSupported);
- @Override
- public String getContentType() {
- return ServletRequestMultipartWrapper.this.getContentType();
- }
+ // adapt the multipart configuration for jetty
+ MultipartConfigElement mce = new MultipartConfigElement(
+ multipartConfig.multipartLocation,
+ multipartConfig.multipartMaxFileSize,
+ multipartConfig.multipartMaxRequestSize,
+ multipartConfig.multipartThreshold
+ );
- @Override
- public int getContentLength() {
- return ServletRequestMultipartWrapper.this.getContentLength();
- }
+ // Override the multipart configuration for the current request
+ setAttribute("org.eclipse.jetty.multipartConfig", mce);
- @Override
- public String getCharacterEncoding() {
- return ServletRequestMultipartWrapper.this.getCharacterEncoding();
- }
- };
- }
- return multipartContext;
+ this.maxFileCount = multipartConfig.multipartMaxFileCount;
}
- private Collection checkMultipart() throws IOException, ServletException {
- if ( parts == null ) {
- final RequestContext multipartContext = getMultipartContext();
- if ( multipartContext != null && FileUploadBase.isMultipartContent(multipartContext) ) {
- if ( this.multipartConfig == null) {
- throw new IllegalStateException("Multipart not enabled for servlet.");
- }
-
- if ( System.getSecurityManager() == null ) {
- handleMultipart(multipartContext);
- } else {
- final AccessControlContext ctx = bundleForSecurityCheck.adapt(AccessControlContext.class);
- final IOException ioe = AccessController.doPrivileged(new PrivilegedAction() {
-
- @Override
- public IOException run() {
- try {
- handleMultipart(multipartContext);
- } catch ( final IOException ioe) {
- return ioe;
- }
- return null;
- }
- }, ctx);
- if ( ioe != null ) {
- throw ioe;
- }
- }
-
- } else {
- throw new ServletException("Not a multipart request");
- }
+ /**
+ * Enforces the non-standard "maxFileCount" configuration
+ *
+ * @return the parts the collection that was checked
+ */
+ private Collection checkMultipart() throws IOException, ServletException {
+ Collection parts = getOriginalParts();
+ long filePartCount = parts.stream().filter(p -> p.getSubmittedFileName() != null).count();
+ if (filePartCount > maxFileCount) {
+ throw new FileCountLimitExceededException("Request exceeds maximum file part count", maxFileCount);
}
return parts;
}
- private void handleMultipart(final RequestContext multipartContext) throws IOException {
- // Create a new file upload handler
- final FileUpload upload = new FileUpload();
- upload.setSizeMax(this.multipartConfig.multipartMaxRequestSize);
- upload.setFileSizeMax(this.multipartConfig.multipartMaxFileSize);
- upload.setFileItemFactory(new DiskFileItemFactory(this.multipartConfig.multipartThreshold,
- new File(this.multipartConfig.multipartLocation)));
- upload.setFileCountMax(this.multipartConfig.multipartMaxFileCount);
- // Parse the request
- List items = null;
- try {
- items = upload.parseRequest(multipartContext);
- } catch (final FileUploadException fue) {
- throw new IOException("Error parsing multipart request", fue);
- }
- this.parts = new ArrayList<>();
- for(final FileItem item : items) {
- this.parts.add(new PartImpl(item));
- }
- }
-
@Override
- @SuppressWarnings({ "unchecked", "rawtypes" })
public Collection getParts() throws IOException, ServletException {
- return (Collection)checkMultipart();
-
+ // enforce the non-standard "maxFileCount" condition
+ return checkMultipart();
}
@Override
public Part getPart(String name) throws IOException, ServletException {
- Collection parts = this.checkMultipart();
- for(final Part p : parts) {
- if ( p.getName().equals(name) ) {
- return p;
- }
- }
- return null;
- }
-
- private Map getPartsParameterMap() {
- if ( this.partsParameterMap == null ) {
- try {
- final Collection parts = this.checkMultipart();
- final Map params = new HashMap<>();
- for(final PartImpl p : parts) {
- if (p.getFileItem().isFormField()) {
- String[] current = params.get(p.getName());
- if (current == null) {
- current = new String[] {p.getFileItem().getString()};
- } else {
- String[] newCurrent = new String[current.length + 1];
- System.arraycopy( current, 0, newCurrent, 0, current.length );
- newCurrent[current.length] = p.getFileItem().getString();
- current = newCurrent;
- }
- params.put(p.getName(), current);
- }
- }
- this.partsParameterMap = params;
- } catch (final IOException | ServletException ignore) {
- // ignore all exceptions and use default
- }
- if ( this.partsParameterMap == null ) {
- // use map from container implementation as default
- this.partsParameterMap = super.getParameterMap();
- }
- }
- return this.partsParameterMap;
- }
-
- @Override
- public String getParameter(final String name) {
- final String[] values = this.getParameterValues(name);
- if (values != null && values.length > 0) {
- return values[0];
- }
- return null;
- }
-
- @Override
- public Map getParameterMap() {
- final RequestContext multipartContext = getMultipartContext();
- if ( multipartContext != null && FileUploadBase.isMultipartContent(multipartContext) && this.multipartConfig != null) {
- return this.getPartsParameterMap();
- }
- return super.getParameterMap();
+ // enforce the non-standard "maxFileCount" condition
+ checkMultipart();
+ return getOriginalPart(name);
}
- @Override
- public Enumeration getParameterNames() {
- final Map params = this.getParameterMap();
- return Collections.enumeration(params.keySet());
- }
-
- @Override
- public String[] getParameterValues(final String name) {
- final Map params = this.getParameterMap();
- return params.get(name);
- }
-
- private static final class PartImpl implements Part {
-
- private final FileItem item;
-
- public PartImpl(final FileItem item) {
- this.item = item;
- }
-
- @Override
- public InputStream getInputStream() throws IOException {
- return item.getInputStream();
- }
-
- @Override
- public String getContentType() {
- return item.getContentType();
- }
-
- @Override
- public String getName() {
- return item.getFieldName();
- }
-
- @Override
- public String getSubmittedFileName() {
- return item.getName();
- }
-
- @Override
- public long getSize() {
- return item.getSize();
- }
-
- @Override
- public void write(final String fileName) throws IOException {
- try {
- item.write(new File(fileName));
- } catch (final IOException e) {
- throw e;
- } catch (final Exception e) {
- throw new IOException(e);
- }
- }
-
- @Override
- public void delete() throws IOException {
- item.delete();
- }
-
- @Override
- public String getHeader(final String name) {
- return item.getHeaders().getHeader(name);
- }
-
- @Override
- public Collection getHeaders(final String name) {
- final List values = new ArrayList<>();
- final Iterator iter = item.getHeaders().getHeaders(name);
- while ( iter.hasNext() ) {
- values.add(iter.next());
- }
- return values;
- }
-
- @Override
- public Collection getHeaderNames() {
- final List names = new ArrayList<>();
- final Iterator iter = item.getHeaders().getHeaderNames();
- while ( iter.hasNext() ) {
- names.add(iter.next());
- }
- return names;
- }
-
- public FileItem getFileItem() {
- return this.item;
- }
- }
}
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestWrapper.java b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestWrapper.java
index 4eaa39684b..3a37edb805 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestWrapper.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/ServletRequestWrapper.java
@@ -381,6 +381,20 @@ public boolean isAsyncSupported()
return this.asyncSupported;
}
+ /**
+ * Subclass may call this to get the original implementation
+ */
+ protected Collection getOriginalParts() throws IOException, ServletException {
+ return super.getParts();
+ }
+
+ /**
+ * Subclass may call this to get the original implementation
+ */
+ protected Part getOriginalPart(String name) throws IOException, ServletException {
+ return super.getPart(name);
+ }
+
@Override
public Collection getParts() throws IOException, ServletException {
throw new ServletException("No Multipart-Support available");
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
index 4254ce6a93..6d678ccde8 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
@@ -24,7 +24,6 @@
import org.apache.felix.http.base.internal.logger.SystemLogger;
import org.apache.felix.http.base.internal.runtime.ServletInfo;
import org.apache.felix.http.jakartawrappers.ServletWrapper;
-import org.osgi.framework.Bundle;
import org.osgi.service.servlet.runtime.dto.DTOConstants;
import jakarta.servlet.Servlet;
@@ -247,9 +246,4 @@ public MultipartConfig getMultipartConfig()
{
return mpConfig;
}
-
- public Bundle getMultipartSecurityContext()
- {
- return null;
- }
}
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java
index c11143d6e9..d3efc63c63 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/WhiteboardServletHandler.java
@@ -39,8 +39,6 @@ public class WhiteboardServletHandler extends ServletHandler
private final int multipartErrorCode;
- private final Bundle multipartSecurityContext;
-
private volatile WebSocketHandler webSocketHandler;
public WhiteboardServletHandler(final long contextServiceId,
@@ -61,7 +59,6 @@ public WhiteboardServletHandler(final long contextServiceId,
if ( servletInfo.getMultipartConfig().multipartLocation == null )
{
// Default location, whiteboard need writePerm, using bundle read perm
- multipartSecurityContext = httpWhiteboardBundle;
if ( !httpWhiteboardBundle.hasPermission(writePerm))
{
errorCode = DTOConstants.FAILURE_REASON_WHITEBOARD_WRITE_TO_DEFAULT_DENIED;
@@ -77,7 +74,6 @@ public WhiteboardServletHandler(final long contextServiceId,
}
else
{
- multipartSecurityContext = registeringBundle;
// Provided location, whiteboard and using bundle need write perm
if ( !registeringBundle.hasPermission(writePerm) )
{
@@ -89,10 +85,6 @@ public WhiteboardServletHandler(final long contextServiceId,
}
}
}
- else
- {
- multipartSecurityContext = null;
- }
multipartErrorCode = errorCode;
}
@@ -150,12 +142,6 @@ public boolean destroy()
return false;
}
- @Override
- public Bundle getMultipartSecurityContext()
- {
- return multipartSecurityContext;
- }
-
@Override
public void handle(ServletRequest req, ServletResponse res) throws ServletException, IOException {
if ( this.webSocketHandler != null ) {
diff --git a/http/itest/pom.xml b/http/itest/pom.xml
index eb2d66898f..0ac6d515ef 100644
--- a/http/itest/pom.xml
+++ b/http/itest/pom.xml
@@ -45,7 +45,7 @@
17
6.1.0
- 1.1.0-SNAPSHOT
+ 1.1.11-SNAPSHOT
org.apache.felix.http.jetty12
diff --git a/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java b/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java
index 312fb62e6f..4e8ea91dd3 100644
--- a/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java
+++ b/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java
@@ -160,7 +160,6 @@ public Option[] config() {
mavenBundle().groupId("org.ops4j.pax.logging").artifactId("pax-logging-api").version("2.3.0"), mavenBundle("org.slf4j", "slf4j-api", "2.0.17"),
mavenBundle("org.apache.sling", "org.apache.sling.commons.johnzon", "1.2.16").startLevel(START_LEVEL_SYSTEM_BUNDLES),
mavenBundle("commons-io", "commons-io", "2.19.0").startLevel(START_LEVEL_SYSTEM_BUNDLES),
- mavenBundle("commons-fileupload", "commons-fileupload", "1.6.0").startLevel(START_LEVEL_SYSTEM_BUNDLES),
mavenBundle("org.apache.felix", "org.apache.felix.configadmin").version("1.9.22").startLevel(START_LEVEL_SYSTEM_BUNDLES),
mavenBundle("org.apache.felix", "org.apache.felix.http.servlet-api", System.getProperty("http.servlet.api.version")).startLevel(START_LEVEL_SYSTEM_BUNDLES),
diff --git a/http/jetty/pom.xml b/http/jetty/pom.xml
index a823d26779..a5fcb8e9d8 100644
--- a/http/jetty/pom.xml
+++ b/http/jetty/pom.xml
@@ -499,11 +499,6 @@
org.apache.felix.http.wrappers
1.0.8
-
- commons-fileupload
- commons-fileupload
- 1.6.0
-
junit
diff --git a/http/jetty/src/test/java/org/apache/felix/http/jetty/it/AbstractJettyTestSupport.java b/http/jetty/src/test/java/org/apache/felix/http/jetty/it/AbstractJettyTestSupport.java
index 60f8665ac8..76fa6899a9 100644
--- a/http/jetty/src/test/java/org/apache/felix/http/jetty/it/AbstractJettyTestSupport.java
+++ b/http/jetty/src/test/java/org/apache/felix/http/jetty/it/AbstractJettyTestSupport.java
@@ -76,7 +76,6 @@ public Option[] configuration() throws IOException {
// update pax logging for SLF4J 2
mavenBundle().groupId("org.ops4j.pax.logging").artifactId("pax-logging-api").version("2.3.0"),
optionalRemoteDebug(),
- mavenBundle().groupId("commons-fileupload").artifactId("commons-fileupload").version("1.6.0"),
mavenBundle().groupId("commons-io").artifactId("commons-io").version("2.19.0"),
mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.http.servlet-api").version("6.1.0"),
testBundle("bundle.filename"),
diff --git a/http/jetty/src/test/java/org/apache/felix/http/jetty/it/LightClassifierIT.java b/http/jetty/src/test/java/org/apache/felix/http/jetty/it/LightClassifierIT.java
index cadaacf425..3bb8e23ff9 100644
--- a/http/jetty/src/test/java/org/apache/felix/http/jetty/it/LightClassifierIT.java
+++ b/http/jetty/src/test/java/org/apache/felix/http/jetty/it/LightClassifierIT.java
@@ -57,7 +57,6 @@ protected Option[] additionalOptions() throws IOException {
// Minimum additional jetty dependency bundles
mavenBundle().groupId("commons-io").artifactId("commons-io").version("2.19.0"),
- mavenBundle().groupId("commons-fileupload").artifactId("commons-fileupload").version("1.6.0"),
mavenBundle().groupId("org.eclipse.jetty").artifactId("jetty-alpn-java-server").version(jettyVersion),
mavenBundle().groupId("org.eclipse.jetty").artifactId("jetty-alpn-server").version(jettyVersion),
mavenBundle().groupId("org.eclipse.jetty").artifactId("jetty-http").version(jettyVersion),
diff --git a/http/jetty12/pom.xml b/http/jetty12/pom.xml
index b5531138c5..9b4efbd1ed 100644
--- a/http/jetty12/pom.xml
+++ b/http/jetty12/pom.xml
@@ -721,11 +721,6 @@
org.apache.felix.http.wrappers
6.1.0
-
- commons-fileupload
- commons-fileupload
- 1.6.0
-
junit
diff --git a/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/AbstractJettyTestSupport.java b/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/AbstractJettyTestSupport.java
index 4cdbf52176..31ad0a795f 100644
--- a/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/AbstractJettyTestSupport.java
+++ b/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/AbstractJettyTestSupport.java
@@ -76,7 +76,6 @@ public Option[] configuration() throws IOException {
// update pax logging for SLF4J 2
mavenBundle().groupId("org.ops4j.pax.logging").artifactId("pax-logging-api").version("2.3.0"),
optionalRemoteDebug(),
- mavenBundle().groupId("commons-fileupload").artifactId("commons-fileupload").version("1.6.0"),
mavenBundle().groupId("commons-io").artifactId("commons-io").version("2.19.0"),
mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.http.servlet-api").version("6.1.0"),
testBundle("bundle.filename"),
diff --git a/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/LightClassifierIT.java b/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/LightClassifierIT.java
index 571bf247fa..367a957f00 100644
--- a/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/LightClassifierIT.java
+++ b/http/jetty12/src/test/java/org/apache/felix/http/jetty/it/LightClassifierIT.java
@@ -55,7 +55,6 @@ protected Option[] additionalOptions() throws IOException {
return new Option[] {
// Minimum additional jetty dependency bundles
mavenBundle().groupId("commons-io").artifactId("commons-io").version("2.19.0"),
- mavenBundle().groupId("commons-fileupload").artifactId("commons-fileupload").version("1.6.0"),
mavenBundle().groupId("org.eclipse.jetty").artifactId("jetty-alpn-java-server").version(jettyVersion),
mavenBundle().groupId("org.eclipse.jetty").artifactId("jetty-alpn-server").version(jettyVersion),
mavenBundle().groupId("org.eclipse.jetty").artifactId("jetty-http").version(jettyVersion),