Skip to content

Commit f29f0af

Browse files
authored
Consider multi release jars when running third party audit (#33206)
Exclude classes meant for newer versions than what we are auditing against, those classes won't be found. There's no reason to exclude JDK classes from newer versions, with this PR, we will not extract them in the first place.
1 parent 2dc4a5b commit f29f0af

File tree

5 files changed

+24
-55
lines changed

5 files changed

+24
-55
lines changed

buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/PrecommitTasks.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ class PrecommitTasks {
8787
dependsOn(buildResources)
8888
signatureFile = buildResources.copy("forbidden/third-party-audit.txt")
8989
javaHome = project.runtimeJavaHome
90+
targetCompatibility = project.runtimeJavaVersion
9091
}
9192
return thirdPartyAuditTask
9293
}

buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditTask.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.elasticsearch.test.NamingConventionsCheck;
2424
import org.gradle.api.DefaultTask;
2525
import org.gradle.api.GradleException;
26+
import org.gradle.api.JavaVersion;
2627
import org.gradle.api.artifacts.Configuration;
2728
import org.gradle.api.file.FileCollection;
2829
import org.gradle.api.tasks.Input;
@@ -66,6 +67,17 @@ public class ThirdPartyAuditTask extends DefaultTask {
6667

6768
private String javaHome;
6869

70+
private JavaVersion targetCompatibility;
71+
72+
@Input
73+
public JavaVersion getTargetCompatibility() {
74+
return targetCompatibility;
75+
}
76+
77+
public void setTargetCompatibility(JavaVersion targetCompatibility) {
78+
this.targetCompatibility = targetCompatibility;
79+
}
80+
6981
@InputFiles
7082
public Configuration getForbiddenAPIsConfiguration() {
7183
return getProject().getConfigurations().getByName("forbiddenApisCliJar");
@@ -157,10 +169,19 @@ public void runThirdPartyAudit() throws IOException {
157169

158170
private void extractJars(FileCollection jars) {
159171
File jarExpandDir = getJarExpandDir();
172+
// We need to clean up to make sure old dependencies don't linger
173+
getProject().delete(jarExpandDir);
160174
jars.forEach(jar ->
161175
getProject().copy(spec -> {
162176
spec.from(getProject().zipTree(jar));
163177
spec.into(jarExpandDir);
178+
// Exclude classes for multi release jars above target
179+
for (int i = Integer.parseInt(targetCompatibility.getMajorVersion()) + 1;
180+
i <= Integer.parseInt(JavaVersion.VERSION_HIGHER.getMajorVersion());
181+
i++
182+
) {
183+
spec.exclude("META-INF/versions/" + i + "/**");
184+
}
164185
})
165186
);
166187
}

server/build.gradle

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -304,21 +304,6 @@ thirdPartyAudit.excludes = [
304304
'com.google.common.geometry.S2LatLng',
305305
]
306306

307-
if (project.runtimeJavaVersion <= JavaVersion.VERSION_1_8) {
308-
thirdPartyAudit.excludes += [
309-
// Used by Log4J 2.11.1
310-
'java.io.ObjectInputFilter',
311-
'java.io.ObjectInputFilter$Config',
312-
'java.io.ObjectInputFilter$FilterInfo',
313-
'java.io.ObjectInputFilter$Status',
314-
// added in 9
315-
'java.lang.ProcessHandle',
316-
'java.lang.StackWalker',
317-
'java.lang.StackWalker$Option',
318-
'java.lang.StackWalker$StackFrame'
319-
]
320-
}
321-
322307
if (project.runtimeJavaVersion > JavaVersion.VERSION_1_8) {
323308
thirdPartyAudit.excludes += ['javax.xml.bind.DatatypeConverter']
324309
}

test/logger-usage/build.gradle

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,23 +42,4 @@ thirdPartyAudit.excludes = [
4242
'org.osgi.framework.SynchronousBundleListener',
4343
'org.osgi.framework.wiring.BundleWire',
4444
'org.osgi.framework.wiring.BundleWiring'
45-
]
46-
47-
if (project.runtimeJavaVersion <= JavaVersion.VERSION_1_8) {
48-
// Used by Log4J 2.11.1
49-
thirdPartyAudit.excludes += [
50-
'java.io.ObjectInputFilter',
51-
'java.io.ObjectInputFilter$Config',
52-
'java.io.ObjectInputFilter$FilterInfo',
53-
'java.io.ObjectInputFilter$Status'
54-
]
55-
}
56-
57-
if (project.runtimeJavaVersion == JavaVersion.VERSION_1_8) {
58-
thirdPartyAudit.excludes += [
59-
'java.lang.ProcessHandle',
60-
'java.lang.StackWalker',
61-
'java.lang.StackWalker$Option',
62-
'java.lang.StackWalker$StackFrame'
63-
]
64-
}
45+
]

x-pack/plugin/sql/sql-action/build.gradle

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -138,23 +138,4 @@ thirdPartyAudit.excludes = [
138138
'org.zeromq.ZMQ$Context',
139139
'org.zeromq.ZMQ$Socket',
140140
'org.zeromq.ZMQ'
141-
]
142-
143-
if (project.runtimeJavaVersion <= JavaVersion.VERSION_1_8) {
144-
// Used by Log4J 2.11.1
145-
thirdPartyAudit.excludes += [
146-
'java.io.ObjectInputFilter',
147-
'java.io.ObjectInputFilter$Config',
148-
'java.io.ObjectInputFilter$FilterInfo',
149-
'java.io.ObjectInputFilter$Status'
150-
]
151-
}
152-
153-
if (project.runtimeJavaVersion == JavaVersion.VERSION_1_8) {
154-
thirdPartyAudit.excludes += [
155-
'java.lang.ProcessHandle',
156-
'java.lang.StackWalker',
157-
'java.lang.StackWalker$Option',
158-
'java.lang.StackWalker$StackFrame'
159-
]
160-
}
141+
]

0 commit comments

Comments
 (0)