Skip to content

Commit

Permalink
svm: adopt "JDK-8324646: Avoid Class.forName in SecureRandom construc…
Browse files Browse the repository at this point in the history
…tor"
  • Loading branch information
dougxc committed Feb 14, 2024
1 parent e4c4922 commit 05c1e79
Showing 1 changed file with 6 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
import javax.security.auth.login.Configuration;

import jdk.graal.compiler.options.Option;
import jdk.graal.compiler.serviceprovider.JavaVersionUtil;
import org.graalvm.nativeimage.ImageSingletons;
import org.graalvm.nativeimage.hosted.RuntimeJNIAccess;
import org.graalvm.nativeimage.hosted.RuntimeReflection;
Expand Down Expand Up @@ -659,7 +660,7 @@ private static boolean isValid(Service s) {
private static Function<String, Class<?>> getConstructorParameterClassAccessor(ImageClassLoader loader) {
Map<String, /* EngineDescription */ Object> knownEngines = ReflectionUtil.readStaticField(Provider.class, "knownEngines");
Class<?> clazz = loader.findClassOrFail("java.security.Provider$EngineDescription");
Field consParamClassNameField = ReflectionUtil.lookupField(clazz, "constructorParameterClassName");
Field consParamClassField = ReflectionUtil.lookupField(clazz, JavaVersionUtil.JAVA_SPEC >= 23 ? "constructorParameterClass" : "constructorParameterClassName");

/*
* The returned lambda captures the value of the Provider.knownEngines map retrieved above
Expand All @@ -684,7 +685,10 @@ private static Function<String, Class<?>> getConstructorParameterClassAccessor(I
if (engineDescription == null) {
return null;
}
String constrParamClassName = (String) consParamClassNameField.get(engineDescription);
if (JavaVersionUtil.JAVA_SPEC >= 23) {
return (Class<?>) consParamClassField.get(engineDescription);
}
String constrParamClassName = (String) consParamClassField.get(engineDescription);
if (constrParamClassName != null) {
return loader.findClass(constrParamClassName).get();
}
Expand Down

0 comments on commit 05c1e79

Please sign in to comment.