Skip to content

Commit 7f391b4

Browse files
committed
Simplify GetFilenamesAdvice in jetty-appsec-8.1.3: remove dead Servlet 3.1+ branch
Jetty 8 implements only Servlet 3.0, so getSubmittedFileName() is never present on the Part objects. The reflection probe (try { getMethod("getSubmittedFileName") }) and the Servlet 3.1+ code path were dead code. Remove them and always parse filenames from the Content-Disposition header directly.
1 parent 3fd02e3 commit 7f391b4

1 file changed

Lines changed: 15 additions & 34 deletions

File tree

dd-java-agent/instrumentation/jetty/jetty-appsec/jetty-appsec-8.1.3/src/main/java/datadog/trace/instrumentation/jetty8/RequestGetPartsInstrumentation.java

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
2121
import java.io.IOException;
2222
import java.io.InputStream;
23-
import java.lang.reflect.Method;
2423
import java.util.ArrayList;
2524
import java.util.Collection;
2625
import java.util.List;
@@ -224,41 +223,23 @@ static void after(
224223
if (!proceed || t != null || parts == null || parts.isEmpty()) {
225224
return;
226225
}
227-
// Resolve getSubmittedFileName once (Servlet 3.1+; null on Servlet 3.0)
228-
Method getSubmittedFileName = null;
229-
try {
230-
getSubmittedFileName = parts.iterator().next().getClass().getMethod("getSubmittedFileName");
231-
} catch (Exception ignored) {
232-
}
226+
// Jetty 8 implements Servlet 3.0; getSubmittedFileName does not exist.
227+
// Parse filename from Content-Disposition header instead.
233228
List<String> filenames = new ArrayList<>();
234-
if (getSubmittedFileName != null) {
235-
// Servlet 3.1+: use getSubmittedFileName
236-
for (Object part : parts) {
237-
try {
238-
String name = (String) getSubmittedFileName.invoke(part);
239-
if (name != null && !name.isEmpty()) {
240-
filenames.add(name);
241-
}
242-
} catch (Exception ignored) {
243-
}
244-
}
245-
} else {
246-
// Servlet 3.0: parse filename from Content-Disposition header
247-
for (Object part : parts) {
248-
String cd = ((Part) part).getHeader("content-disposition");
249-
if (cd != null) {
250-
for (String tok : cd.split(";")) {
251-
tok = tok.trim();
252-
if (tok.startsWith("filename=")) {
253-
String name = tok.substring(9).trim();
254-
if (name.startsWith("\"") && name.endsWith("\"")) {
255-
name = name.substring(1, name.length() - 1);
256-
}
257-
if (!name.isEmpty()) {
258-
filenames.add(name);
259-
}
260-
break;
229+
for (Object part : parts) {
230+
String cd = ((Part) part).getHeader("content-disposition");
231+
if (cd != null) {
232+
for (String tok : cd.split(";")) {
233+
tok = tok.trim();
234+
if (tok.startsWith("filename=")) {
235+
String name = tok.substring(9).trim();
236+
if (name.startsWith("\"") && name.endsWith("\"")) {
237+
name = name.substring(1, name.length() - 1);
238+
}
239+
if (!name.isEmpty()) {
240+
filenames.add(name);
261241
}
242+
break;
262243
}
263244
}
264245
}

0 commit comments

Comments
 (0)