Adrian Brock [http://community.jboss.org/people/adrian%40jboss.org] replied to 
the discussion

"Testing jboss-reflect with a SecurityManager enabled"

To view the discussion, visit: http://community.jboss.org/message/534062#534062

--------------------------------------------------------------
> Kabir Khan wrote:
> 
> This has been committed against  
> https://jira.jboss.org/jira/browse/JBREFLECT-109 
> https://jira.jboss.org/jira/browse/JBREFLECT-109. 
> 
> I did not need the extra permissions in ContainerTestPlugin, all that was 
> needed was a IntrospectionEnumTestCase.properties:
> 
> test.Permission.0=java.lang.RuntimePermission, 
> accessClassInPackage.sun.reflect.annotation
> 
> 
> 
> 
> Without that I got this
> 
> 
> 
> java.security.AccessControlException: access denied 
> (java.lang.RuntimePermission accessClassInPackage.sun.reflect.annotation)
> at 
> java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
> at java.security.AccessController.checkPermission(AccessController.java:546)
> at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
> at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1512)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:327)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:247)
> at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:604)
> <snip/>
> 
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> at java.util.HashMap.readObject(HashMap.java:1030)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> at org.jboss.test.AbstractTestCase.deserialize(AbstractTestCase.java:352)
> at 
> org.jboss.test.classinfo.test.AbstractClassInfoTest.access$0(AbstractClassInfoTest.java:1)
> at 
> org.jboss.test.classinfo.test.AbstractClassInfoTest$1.run(AbstractClassInfoTest.java:100)
> at java.security.AccessController.doPrivileged(Native Method)
> at 
> org.jboss.test.classinfo.test.AbstractClassInfoTest.testBasics(AbstractClassInfoTest.java:96)
> at 
> org.jboss.test.classinfo.test.ClassInfoEnumTest.testEnum(ClassInfoEnumTest.java:71)
> at 
> org.jboss.test.classinfo.test.ClassInfoEnumTest.testEnumFieldAnnotation(ClassInfoEnumTest.java:64)
That actually looks like a bug to me.

We are assuming that the annotations cached in InheritableAnnotationsHolder can 
be Serialized, but
there's no guarantee in the spec that Annotations are Serializable.

It just so happens that the ones Sun implements are, but it obviously fails to 
Serialize them if you have a
SecurityManager enabled due to the package restriction.

In a different JDK they might not even be Serializable.

More correctly we should reget the annotations during the readObject() 
processing rather than serializing them,
or probably, just let the the state revert back to UNKNOWN_ANNOTATIONS_*.

--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/534062#534062]

Start a new discussion in JBoss Microcontainer Development at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2115]

_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to