> On Mar 20, 2017, at 5:15 AM, Daniel Fuchs <daniel.fu...@oracle.com> wrote:
> 
> Hi Peter,
> 
> On 20/03/2017 12:01, Peter Levart wrote:
>> Perhaps the best way to rectify those problems in one place would be for
>> Reflection.getCallerClass() to return a special internal class in its
>> own package, such as:
>> 
>> jdk.internal.solitary.NoCaller
>> 
>> ...when there is no caller. This would work correctly for class loader
>> checks and would only allow invoking public exported members by core
>> reflection if invoked with no caller...
> 
> I believe this might be dangerous as it would probably hide bugs
> in places where 'null' results in NPE being thrown in today's
> implementation.
> 
> Allowing the code to succeed is not always the right thing to
> do, and I don't believe it can be fixed in one place.
> It's probably better to let the caller of Reflection.getCallerClass()
> decide what to do when null is returned, even if this means
> we might have to analyze all places where @CallerSensitive is
> used.
> 

Exactly.  We ought to examine all @CS methods and determine if it handles the 
no caller case properly and as intended.  I file a JBS issue to track this:

https://bugs.openjdk.java.net/browse/JDK-8177155

FYI.  Several options were discussed what StackWalker::getCallerClass should 
return and captured in [1].  

Mandy
[1] 
https://bugs.openjdk.java.net/browse/JDK-8140450?focusedCommentId=13867764&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13867764

Reply via email to