RFR: JDK-8221642: AccessibleObject::setAccessible throws NPE when invoked by JNI code with no java frame on stack
David Holmes
dholmes at openjdk.java.net
Sun Jan 30 22:02:12 UTC 2022
On Fri, 28 Jan 2022 17:50:19 GMT, Mandy Chung <mchung at openjdk.org> wrote:
> `AccessibleObject::setAccessible` and `trySetAccessible` methods should only allow access to public member of a public type that is unconditionally exported consistent with the access check as described in the class specification, when invoked by JNI code with no Java class on the stack. The current implementation throws NPE when finding the module of the caller class as the caller class is null.
>
> The specification of `canAccess`, `setAccessible` and `trySetAccessible` are updated to specify the behavior when the caller class is null. I consider this spec update as a clarification as the class specification covers this case.
src/java.base/share/classes/java/lang/reflect/AccessibleObject.java line 260:
> 258: * <p> If this method is invoked by <a href="{@docRoot}/../specs/jni/index.html">JNI code</a>
> 259: * with no caller class on the stack, the {@code accessible} flag can
> 260: * only set if the member and the declaring class are public, and
s/only set/only be set/
-------------
PR: https://git.openjdk.java.net/jdk/pull/7271
More information about the core-libs-dev
mailing list