--- a/src/java.base/share/classes/java/lang/constant/MethodTypeDescImpl.java Tue Sep 10 10:24:42 2019 -0700
+++ b/src/java.base/share/classes/java/lang/constant/MethodTypeDescImpl.java Tue Sep 10 10:35:52 2019 -0700
@@ -26,6 +26,8 @@
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.Arrays;
import java.util.List;
@@ -132,7 +134,14 @@
@Override
public MethodType resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException {
- MethodType mtype = MethodType.fromMethodDescriptorString(descriptorString(), lookup.lookupClass().getClassLoader());
+ MethodType mtype = AccessController.doPrivileged(new PrivilegedAction<>() {
+ @Override
+ public MethodType run() {
+ return MethodType.fromMethodDescriptorString(descriptorString(),
+ lookup.lookupClass().getClassLoader());
+ }
+ });
+
// let's check that the lookup has access to all the types in the method type
lookup.accessClass(mtype.returnType());
for (Class<?> paramType: mtype.parameterArray()) {