Mercurial > hg > release > icedtea7-forest-2.2 > jdk
changeset 5282:f4b399e11556
8006435: Improvements in JMX
Summary: Improvements in JMX
Reviewed-by: dfuchs, skoivu
author | dsamersoff |
---|---|
date | Mon, 25 Feb 2013 20:06:22 +0400 |
parents | ded1108f80e4 |
children | c1f3485003c3 |
files | src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java src/share/classes/sun/reflect/misc/ReflectUtil.java |
diffstat | 2 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java Tue Feb 26 15:58:40 2013 +0400 +++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java Mon Feb 25 20:06:22 2013 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -213,7 +213,6 @@ Object moi; - // ------------------------------ // ------------------------------ Constructor<?> cons = findConstructor(theClass, null); @@ -224,6 +223,7 @@ // Instantiate the new object try { ReflectUtil.checkPackageAccess(theClass); + ReflectUtil.ensureClassAccess(theClass); moi= cons.newInstance(); } catch (InvocationTargetException e) { // Wrap the exception. @@ -270,7 +270,6 @@ checkMBeanPermission(theClass, null, null, "instantiate"); // Instantiate the new object - // ------------------------------ // ------------------------------ final Class<?>[] tab; @@ -300,6 +299,7 @@ } try { ReflectUtil.checkPackageAccess(theClass); + ReflectUtil.ensureClassAccess(theClass); moi = cons.newInstance(params); } catch (NoSuchMethodError error) {
--- a/src/share/classes/sun/reflect/misc/ReflectUtil.java Tue Feb 26 15:58:40 2013 +0400 +++ b/src/share/classes/sun/reflect/misc/ReflectUtil.java Mon Feb 25 20:06:22 2013 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2013 Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,6 +46,14 @@ return cls.newInstance(); } + public static void ensureClassAccess(Class clazz) + throws IllegalAccessException + { + int mod = clazz.getModifiers(); + if ( ! Modifier.isPublic(mod) ){ + throw new IllegalAccessException("Class is not public and can't be instantiated"); + } + } /* * Reflection.ensureMemberAccess is overly-restrictive * due to a bug. We awkwardly work around it for now.