8014349: (cl) Class.getDeclaredClass problematic in some class loader configurations
Reviewed-by: mchung, ahgross, darcy
This commit is contained in:
parent
be5469fc71
commit
79bda234fe
@ -1221,9 +1221,25 @@ public final class Class<T> implements java.io.Serializable,
|
||||
* type, or void,then this method returns null.
|
||||
*
|
||||
* @return the declaring class for this class
|
||||
* @throws SecurityException
|
||||
* If a security manager, <i>s</i>, is present and the caller's
|
||||
* class loader is not the same as or an ancestor of the class
|
||||
* loader for the declaring class and invocation of {@link
|
||||
* SecurityManager#checkPackageAccess s.checkPackageAccess()}
|
||||
* denies access to the package of the declaring class
|
||||
* @since JDK1.1
|
||||
*/
|
||||
public native Class<?> getDeclaringClass();
|
||||
@CallerSensitive
|
||||
public Class<?> getDeclaringClass() throws SecurityException {
|
||||
final Class<?> candidate = getDeclaringClass0();
|
||||
|
||||
if (candidate != null)
|
||||
candidate.checkPackageAccess(
|
||||
ClassLoader.getClassLoader(Reflection.getCallerClass()), true);
|
||||
return candidate;
|
||||
}
|
||||
|
||||
private native Class<?> getDeclaringClass0();
|
||||
|
||||
|
||||
/**
|
||||
|
@ -69,7 +69,7 @@ static JNINativeMethod methods[] = {
|
||||
{"getDeclaredConstructors0","(Z)[" CTR, (void *)&JVM_GetClassDeclaredConstructors},
|
||||
{"getProtectionDomain0", "()" PD, (void *)&JVM_GetProtectionDomain},
|
||||
{"getDeclaredClasses0", "()[" CLS, (void *)&JVM_GetDeclaredClasses},
|
||||
{"getDeclaringClass", "()" CLS, (void *)&JVM_GetDeclaringClass},
|
||||
{"getDeclaringClass0", "()" CLS, (void *)&JVM_GetDeclaringClass},
|
||||
{"getGenericSignature0", "()" STR, (void *)&JVM_GetClassSignature},
|
||||
{"getRawAnnotations", "()" BA, (void *)&JVM_GetClassAnnotations},
|
||||
{"getConstantPool", "()" CPL, (void *)&JVM_GetClassConstantPool},
|
||||
|
Loading…
x
Reference in New Issue
Block a user