Check permission to AccessibleObject#setAccessible(boolean) a better way #4389
+18
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In #4266, we noticed a difference what methods JRuby finds in Java-classes between JRuby-jar being in boot classpath and in the normal classpath. This change removes that difference.
The reason for the difference is that all classes in boot classpath are privileged and
AccessController#checkPermission(Permission)
will always returntrue
to them, whereas for others the result depends on security policy in effect.In normal (at least Oracle) JVM installations, the policy doesn't allow
suppressAccessChecks
, but call toAccessibleObject#setAccessible(boolean)
will still succeed as there's noSecurityManager
set.I posit that trying to call
setAccessible
is a better way to see if we might later on succeed in callingsetAccessible
than checking the permission.