2038 MemberName resolveOrNull(byte refKind, MemberName member) throws ReflectiveOperationException { 2039 // do this before attempting to resolve 2040 if (!isClassAccessible(member.getDeclaringClass())) { 2041 return null; 2042 } 2043 Objects.requireNonNull(member.getName()); 2044 Objects.requireNonNull(member.getType()); 2045 return IMPL_NAMES.resolveOrNull(refKind, member, lookupClassOrNull()); 2046 } 2047 2048 void checkSymbolicClass(Class<?> refc) throws IllegalAccessException { 2049 if (!isClassAccessible(refc)) { 2050 throw new MemberName(refc).makeAccessException("symbolic reference class is not accessible", this); 2051 } 2052 } ... 2499 try { 2500 MemberName resolved2 = publicLookup().resolveOrNull(refKind, 2501 new MemberName(refKind, defc, member.getName(), member.getType())); 2502 if (resolved2 == null) { 2503 return false; 2504 } 2505 checkSecurityManager(defc, resolved2); 2506 } catch (ReflectiveOperationException | SecurityException ex) { 2507 return false; 2508 }
Is it (or was it ever) possible for these methods paths to throw IllegalAccessException / ReflectiveOperationException? Paul. > On Mar 27, 2018, at 5:02 AM, Claes Redestad <claes.redes...@oracle.com> wrote: > > Sundar, > > On 2018-03-27 13:23, Sundararajan Athijegannathan wrote: >> Hi, >> >> + if (caller != null&& !VerifyAccess.isClassAccessible(refc, >> caller, allowedModes)) { >> + return false; >> + } >> + return true; >> >> >> can be >> >> return caller == null || VerifyAccess.isClassAccessible(refc, caller, >> allowedModes); > > agreed, updated in-place. > >> >> +1 > > Thanks for reviewing! > > /Claes