OpenJDK / jdk / jdk
changeset 42333:83f37c05391b
8133719: java.lang.InternalError in java.lang.invoke.MethodHandleImpl$BindCaller.bindCaller
Reviewed-by: psandoz
author | srastogi |
---|---|
date | Tue, 29 Nov 2016 01:06:10 -0800 |
parents | 8bf488890cb9 |
children | 6593d3fec506 |
files | jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java |
diffstat | 1 files changed, 5 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java Wed Nov 30 19:52:20 2016 +0100 +++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java Tue Nov 29 01:06:10 2016 -0800 @@ -1147,12 +1147,14 @@ static MethodHandle bindCaller(MethodHandle mh, Class<?> hostClass) { - // Do not use this function to inject calls into system classes. + // Code in the the boot layer should now be careful while creating method handles or + // functional interface instances created from method references to @CallerSensitive methods, + // it needs to be ensured the handles or interface instances are kept safe and are not passed + // from the boot layer to untrusted code. if (hostClass == null || (hostClass.isArray() || hostClass.isPrimitive() || - hostClass.getName().startsWith("java.") || - hostClass.getName().startsWith("sun."))) { + hostClass.getName().startsWith("java.lang.invoke."))) { throw new InternalError(); // does not happen, and should not anyway } // For simplicity, convert mh to a varargs-like method.