src/java.base/share/classes/java/lang/constant/MethodTypeDescImpl.java
changeset 58078 41f119856e7c
parent 55502 bdaec4628ea9
child 58679 9c3209ff7550
--- 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()) {