-
Bug
-
Resolution: Duplicate
-
P2
-
None
-
5.0
-
x86
-
linux, solaris_8, solaris_9, windows_xp
Name: vsR10238 Date: 12/19/2003
Filed By : J2SE-SQA [###@###.###
JDK : JDK1.5.0 (tested with b31), JDK1.4.2 (b28)
Testbase : Regression-test (for JDK1.5.0-b31)
Platform[s] : All: RedHat Advanced Server 2.1 (Gnome), Windows XP Pro, Solaris 8 (sparc) (CDE), Solaris 9 (x86) (CDE)
Falling test[s]:
java/security/ProtectionDomain/RecursionDebug.java
Regression test java/security/ProtectionDomain/RecursionDebug.java fails with JDK1.5.0-b31 when executed from jtreg
with
java.security.AccessControlException: access denied (java.io.FilePermission /net/linux-15/export/home/java/jct-3.1.2/lib/javatest.jar read)
The test passes with JDK1.5.0-b31 if I run the compiled class manually with the same command line as jtreg does:
~/java/jdk1.5.0/linux/bin/java -Djava.security.manager=default -Djava.security.policy==Recursion.policy -Djava.security.debug=domain RecursionDebug
When the test is run from the javatest/jtreg harness, it is executed in the com.sun.javatest.regtest.MainWrapper class,
which calls com.sun.javatest.Status.exit.
Even if the test is reduced only to the following, it fails:
import java.security.*;
import java.net.*;
import com.sun.javatest.Status;
public class RecursionDebug {
public static class RecursionSM extends SecurityManager {
public void checkPermission(Permission p) {
super.checkPermission(p);
}
}
public static void main(String[] args) throws Exception {
System.setSecurityManager(new RecursionDebug.RecursionSM());
Status.passed("").exit();
}
}
With the following modifications the test works similarly as under jtreg as without it (passes under jtreg):
public static void main(String[] args) throws Exception {
SecurityManager smOld=System.getSecurityManager();
try{
... original main code ...
}finally{
if (smOld!=null)
System.setSecurityManager(smOld);
}
}
Test source location:
=====================
/java/re/jdk/1.5.0/promoted/all/b31/ws/j2se/test/java/security/ProtectionDomain/RecursionDebug.java
jtr file location:
==================
/net/jtgb4u4c.sfbay/export/sail15/results.2/tiger/b31/regtest/x86/sol9_x86_cde_smp_linux-6/workDir/test/java/security/ProtectionDomain/RecursionDebug.jtr
How to reproduce:
=================
Run the following script (you may need to change its variables)
--- script start ---
#!/bin/sh
RESULT_DIR=`pwd`
WORK_DIR=$RESULT_DIR/workDir/test
REPORT_DIR=$RESULT_DIR/reportDir
#Paths in Java Software:
JT_HOME="/java/re/jct-tools/3.1.2/archive/fcs/binaries"
JEMMY_JAR="/net/jdk/export/jpse04/Jemmy/jemmy.jar"
JAVA_HOME="/java/re/jdk/1.5.0/promoted/all/b31/binaries/solaris-i586"
TEST_BASE_PATH="/java/re/jdk/1.5.0/promoted/all/b31/ws/j2se/test"
#Alternative paths outside Java Software:
#JT_HOME="/net/koori.sfbay/onestop/jct-tools/3.1.2/archive/fcs/binaries"
#JEMMY_JAR="/net/jdk/export/jpse04/Jemmy/jemmy.jar"
#JAVA_HOME="/net/koori.sfbay/onestop/jdk/1.5.0/promoted/all/b31/binaries/solaris-i586"
#TEST_BASE_PATH="/net/koori.sfbay/onestop/jdk/1.5.0/promoted/all/b31/ws/j2se/test"
TESTVMOPTS="-client"
CLASSPATH="$JT_HOME/classes:$JT_HOME/lib/javatest.jar:$JT_HOME/lib/jtreg.jar"
TEST="java/security/ProtectionDomain/RecursionDebug.java"
mkdir -p $WORK_DIR/scratch 2>&1
mkdir -p $WORK_DIR/jtData 2>&1
mkdir -p $REPORT_DIR 2>&1
#rm $WORK_DIR/jtData/ResultCache.jtw 2>&1
cd $WORK_DIR/scratch
$JAVA_HOME/bin/java -server -cp $CLASSPATH -DenvVars=TESTJAVAHOME=$JAVA_HOME,TESTVMOPTS=$TESTVMOPTS,DISPLAY=:0,HOME=$HOME/.regtest,PATH=/bin:/usr/bin,CPAPPEND=$JEMMY_JAR,TZ=,LC_ALL=en_US,LC_CTYPE=en_US,LANG=en_US,LPDEST= -DDISPLAY=:0 -DlocalHost="linux-6" -Dprogram=jtreg com.sun.javatest.regtest.Main -a -v default -batch -params -w "$WORK_DIR" -r "$REPORT_DIR" -t "$TEST_BASE_PATH" "$TEST_BASE_PATH/$TEST"
--- script end ---
Script output:
==============
Test output (jtr part):
=======================
----------System.out:(0/0)----------
----------System.err:(26/1801)----------
STATUS:Passed.
Exception in thread "main" java.security.AccessControlException: access denied (java.io.FilePermission /net/linux-15/export/home/java/jct-3.1.2/lib/javatest.jar read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
at RecursionDebug$RecursionSM.checkPermission(RecursionDebug.java:17)
at java.lang.SecurityManager.checkRead(SecurityManager.java:863)
at java.io.File.isDirectory(File.java:713)
at sun.net.www.ParseUtil.fileToEncodedURL(ParseUtil.java:228)
at sun.security.provider.PolicyFile.canonicalizeCodebase(PolicyFile.java:1811)
at sun.security.provider.PolicyFile.access$600(PolicyFile.java:262)
at sun.security.provider.PolicyFile$4.run(PolicyFile.java:1259)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1255)
at sun.security.provider.PolicyFile.getPermissions(PolicyFile.java:1203)
at sun.security.provider.PolicyFile.implies(PolicyFile.java:1158)
at java.security.ProtectionDomain.implies(ProtectionDomain.java:195)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:249)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
at RecursionDebug$RecursionSM.checkPermission(RecursionDebug.java:17)
at java.lang.SecurityManager.checkExit(SecurityManager.java:736)
at java.lang.Runtime.exit(Runtime.java:88)
at java.lang.System.exit(System.java:867)
at com.sun.javatest.Status.exit(Status.java:264)
at com.sun.javatest.regtest.MainWrapper.main(MainWrapper.java:67)
result: Failed. Unexpected exit from test [exit code: 1]
test result: Failed. Unexpected exit from test [exit code: 1]
Specific machine info:
======================
Hostname: linux-1
OS: Solaris 8 (sparc) (CDE)
Hostname: linux-16
OS: Windows XP Pro
Hostname: linux-24
OS: RedHat Advanced Server 2.1 (Gnome)
Hostname: linux-6
OS: Solaris 9 (x86) (CDE)
======================================================================