-
Bug
-
Resolution: Fixed
-
P1
-
1.2.2
-
None
-
b01
-
unknown
-
solaris_2.6
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2028221 | 1.3.0 | Gary Ellison | P1 | Resolved | Fixed | beta |
JDK-2028220 | 1.2.2_002 | Gary Ellison | P1 | Resolved | Fixed | b02 |
Hi,
This code works with JDK1.2 and JDK1.2.1 and fails with the following stack trace when run with JDK1.2.2.
import java.security.*;
public class Test {
public static void main(String[] args)
{
System.setSecurityManager(new java.rmi.RMISecurityManager());
// javac
sun.tools.javac.Main compiler;
System.err.println("\nCreating javac");
try {
compiler = (sun.tools.javac.Main)AccessController.doPrivileged(
new PrivilegedExceptionAction() {
public java.lang.Object run()
throws Exception
{
return new sun.tools.javac.Main(System.err, "javac");
}
}
);
}
catch ( PrivilegedActionException ex ) {
System.err.println("Got PrivilegedActionException");
ex.getException().printStackTrace();
System.err.println("Compilation failed...");
}
catch ( Throwable ex ) {
System.err.println("Got Throwable");
ex.printStackTrace();
System.err.println("Compilation failed...");
}
}
}
** This stack trace is got when Test is run with default permissions.
raga> /usr/local/java/jdk1.2.2/solaris/bin/java -classpath /usr/local/java/jdk1.2.2/solaris/lib/tools.jar:. Test
Creating javac
Got Throwable
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.tools.javac )
at java.security.AccessControlContext.checkPermission(AccessControlContext.java, Compiled Code)
at java.security.AccessController.checkPermission(AccessController.java, Compiled Code)
at java.lang.SecurityManager.checkPermission(SecurityManager.java, Compiled Code)
at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java, Compiled Code)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java, Compiled Code)
at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
at Test$1.run(Test.java, Compiled Code)
at java.security.AccessController.doPrivileged(Native Method)
at Test.main(Test.java, Compiled Code)
Compilation failed...
** This stack trace is got when Test is run with a policy file with
AllPermissions to the Test code. Why does it throw this exception even
when the code is in a privileged block?
raga> /usr/local/java/jdk1.2.2/solaris/bin/java -classpath /usr/local/java/jdk1.2.2/solaris/lib/tools.jar:. -Djava.security.policy=/space/local2/ejbws/j2ee/build/unix/lib/security/java.policy -Dcom.sun.enterprise.home=/space/local2/ejbws/j2ee/build/unix Test
Creating javac
Got Throwable
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.tools.java )
at java.security.AccessControlContext.checkPermission(AccessControlContext.java, Compiled Code)
at java.security.AccessController.checkPermission(AccessController.java, Compiled Code)
at java.lang.SecurityManager.checkPermission(SecurityManager.java, Compiled Code)
at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java, Compiled Code)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java, Compiled Code)
at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java, Compiled Code)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java, Compiled Code)
at java.net.URLClassLoader.defineClass(URLClassLoader.java, Compiled Code)
at java.net.URLClassLoader.access$1(URLClassLoader.java, Compiled Code)
at java.net.URLClassLoader$1.run(URLClassLoader.java, Compiled Code)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java, Compiled Code)
at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java, Compiled Code)
at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
at Test$1.run(Test.java, Compiled Code)
at java.security.AccessController.doPrivileged(Native Method)
at Test.main(Test.java, Compiled Code)
Compilation failed...
Removing RMISecurityManager() is not an option because it is needed for RMI
Stubs downloading. Setting the bootclasspath is not an option either.
Please take a look at the above stack trace and suggest a solution or
workaround.
Java 2 Enterprise Edition is broken on JDK1.2.2 right now.
Thanx
Harish
This code works with JDK1.2 and JDK1.2.1 and fails with the following stack trace when run with JDK1.2.2.
import java.security.*;
public class Test {
public static void main(String[] args)
{
System.setSecurityManager(new java.rmi.RMISecurityManager());
// javac
sun.tools.javac.Main compiler;
System.err.println("\nCreating javac");
try {
compiler = (sun.tools.javac.Main)AccessController.doPrivileged(
new PrivilegedExceptionAction() {
public java.lang.Object run()
throws Exception
{
return new sun.tools.javac.Main(System.err, "javac");
}
}
);
}
catch ( PrivilegedActionException ex ) {
System.err.println("Got PrivilegedActionException");
ex.getException().printStackTrace();
System.err.println("Compilation failed...");
}
catch ( Throwable ex ) {
System.err.println("Got Throwable");
ex.printStackTrace();
System.err.println("Compilation failed...");
}
}
}
** This stack trace is got when Test is run with default permissions.
raga> /usr/local/java/jdk1.2.2/solaris/bin/java -classpath /usr/local/java/jdk1.2.2/solaris/lib/tools.jar:. Test
Creating javac
Got Throwable
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.tools.javac )
at java.security.AccessControlContext.checkPermission(AccessControlContext.java, Compiled Code)
at java.security.AccessController.checkPermission(AccessController.java, Compiled Code)
at java.lang.SecurityManager.checkPermission(SecurityManager.java, Compiled Code)
at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java, Compiled Code)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java, Compiled Code)
at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
at Test$1.run(Test.java, Compiled Code)
at java.security.AccessController.doPrivileged(Native Method)
at Test.main(Test.java, Compiled Code)
Compilation failed...
** This stack trace is got when Test is run with a policy file with
AllPermissions to the Test code. Why does it throw this exception even
when the code is in a privileged block?
raga> /usr/local/java/jdk1.2.2/solaris/bin/java -classpath /usr/local/java/jdk1.2.2/solaris/lib/tools.jar:. -Djava.security.policy=/space/local2/ejbws/j2ee/build/unix/lib/security/java.policy -Dcom.sun.enterprise.home=/space/local2/ejbws/j2ee/build/unix Test
Creating javac
Got Throwable
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.tools.java )
at java.security.AccessControlContext.checkPermission(AccessControlContext.java, Compiled Code)
at java.security.AccessController.checkPermission(AccessController.java, Compiled Code)
at java.lang.SecurityManager.checkPermission(SecurityManager.java, Compiled Code)
at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java, Compiled Code)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java, Compiled Code)
at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java, Compiled Code)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java, Compiled Code)
at java.net.URLClassLoader.defineClass(URLClassLoader.java, Compiled Code)
at java.net.URLClassLoader.access$1(URLClassLoader.java, Compiled Code)
at java.net.URLClassLoader$1.run(URLClassLoader.java, Compiled Code)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java, Compiled Code)
at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java, Compiled Code)
at java.lang.ClassLoader.loadClass(ClassLoader.java, Compiled Code)
at Test$1.run(Test.java, Compiled Code)
at java.security.AccessController.doPrivileged(Native Method)
at Test.main(Test.java, Compiled Code)
Compilation failed...
Removing RMISecurityManager() is not an option because it is needed for RMI
Stubs downloading. Setting the bootclasspath is not an option either.
Please take a look at the above stack trace and suggest a solution or
workaround.
Java 2 Enterprise Edition is broken on JDK1.2.2 right now.
Thanx
Harish
- backported by
-
JDK-2028220 accessClassInPackage permission does not get overidden in a privileged block.
-
- Resolved
-
-
JDK-2028221 accessClassInPackage permission does not get overidden in a privileged block.
-
- Resolved
-