Skip to content

Commit b5338aa

Browse files
author
Aleksandar Gradinac
committed
[GR-32040] Trace removed security providers.
PullRequest: graal/9135
2 parents cf1ef9d + fe3783d commit b5338aa

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/SecurityServicesFeature.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,8 @@ public static class Options {
187187

188188
/** Provider list that contains only used providers. */
189189
private ProviderList filteredProviderList;
190+
/** List of providers deemed not to be used by this feature. */
191+
private List<Provider> removedProviders;
190192

191193
private boolean shouldFilterProviders = true;
192194

@@ -342,11 +344,29 @@ public ProviderList cleanUnregisteredProviders(ProviderList providerList) {
342344
filteredProviders.removeIf(this::shouldRemoveProvider);
343345
if (filteredProviderList == null || !filteredProviderList.providers().equals(filteredProviders)) {
344346
filteredProviderList = ProviderList.newList(filteredProviders.toArray(new Provider[0]));
347+
if (Options.TraceSecurityServices.getValue()) {
348+
removedProviders = new ArrayList<>(providerList.providers());
349+
removedProviders.removeIf(provider -> !shouldRemoveProvider(provider));
350+
}
345351
}
346352
}
347353
return filteredProviderList;
348354
}
349355

356+
private void traceRemovedProviders() {
357+
if (removedProviders == null || removedProviders.isEmpty()) {
358+
trace("No security providers have been removed.");
359+
} else {
360+
trace("The following security providers were deemed to be unused and removed:");
361+
SecurityServicesPrinter.indent();
362+
trace("ProviderName - ProviderClass");
363+
for (Provider p : removedProviders) {
364+
trace("%s - %s", p.getName(), p.getClass().getName());
365+
}
366+
SecurityServicesPrinter.dedent();
367+
}
368+
}
369+
350370
private static void linkSunEC(DuringAnalysisAccess a) {
351371
NativeLibraries nativeLibraries = ((DuringAnalysisAccessImpl) a).getNativeLibraries();
352372
/* We statically link sunec thus we classify it as builtIn library */
@@ -638,6 +658,7 @@ private static void registerX509Extensions() {
638658

639659
@Override
640660
public void afterAnalysis(AfterAnalysisAccess access) {
661+
traceRemovedProviders();
641662
SecurityServicesPrinter.endTracing();
642663
shouldFilterProviders = false;
643664
}

0 commit comments

Comments
 (0)