Skip to content

Commit 903e446

Browse files
author
Aleksandar Gradinac
committed
Trace removed security providers
1 parent cbc5a97 commit 903e446

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

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

Lines changed: 19 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,27 @@ 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+
removedProviders = new ArrayList<>(providerList.providers());
348+
removedProviders.removeIf(provider -> !shouldRemoveProvider(provider));
345349
}
346350
}
347351
return filteredProviderList;
348352
}
349353

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

639657
@Override
640658
public void afterAnalysis(AfterAnalysisAccess access) {
659+
traceRemovedProviders();
641660
SecurityServicesPrinter.endTracing();
642661
shouldFilterProviders = false;
643662
}

0 commit comments

Comments
 (0)