17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 import java.io.BufferedOutputStream;
25 import java.io.File;
26 import java.io.FileInputStream;
27 import java.io.FileOutputStream;
28 import java.io.IOException;
29 import java.security.AccessControlContext;
30 import java.security.AccessControlException;
31 import java.security.AccessController;
32 import java.security.PrivilegedAction;
33 import java.security.PrivilegedActionException;
34 import java.security.PrivilegedExceptionAction;
35 import java.util.ArrayList;
36 import java.util.Arrays;
37 import java.util.List;
38 import java.util.jar.JarEntry;
39 import java.util.jar.JarOutputStream;
40 import java.util.jar.Manifest;
41 import javax.security.auth.Subject;
42 import javax.security.auth.x500.X500Principal;
43 import jdk.testlibrary.ProcessTools;
44
45 /**
46 * @test
47 * @bug 8048147
48 * @summary Check if proper AccessControlException is thrown
49 * in case of nested Subject.doAs() invocations
50 * when one of protection domains doesn't have permissions
51 *
52 * @library /lib/testlibrary
53 *
54 * @run main NestedActions jar NestedActionsACE.jar
55 * NestedActionsACE.class Utils.class
56 * @run main NestedActions jar NestedActionsPAE.jar
127 fis.transferTo(jos);
128 }
129 }
130 }
131 }
132
133 static void runJava(String[] args) {
134 if (args == null || args.length < 3) {
135 throw new IllegalArgumentException("wrong parameters");
136 }
137
138 List<String> cmds = new ArrayList<>();
139 cmds.add(JAVA);
140 StringBuilder sb = new StringBuilder();
141 cmds.add("-classpath");
142 for (int i=2; i<args.length; i++) {
143 sb.append(args[i]).append(PS);
144 }
145 cmds.add(sb.toString());
146 if (JAVA_OPTS != null && !JAVA_OPTS.isEmpty()) {
147 cmds.add(JAVA_OPTS);
148 }
149 cmds.add("-Djava.security.manager");
150 cmds.add("-Djava.security.policy=" + TEST_SOURCES + FS + args[1]);
151 cmds.add(args[0]);
152 try {
153 ProcessTools.executeCommand(cmds.toArray(new String[cmds.size()]))
154 .shouldHaveExitValue(0);
155 } catch (Throwable e) {
156 throw new RuntimeException(e);
157 }
158 }
159 }
160
161 /**
162 * Test for nested Subject.doAs() invocation:
163 *
164 * WriteToFileAction (CN=Duke principal) ->
165 * ReadFromFileAction (CN=Duke principal) ->
166 * ReadPropertyAction (CN=Duke principal)
167 *
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 import java.io.BufferedOutputStream;
25 import java.io.File;
26 import java.io.FileInputStream;
27 import java.io.FileOutputStream;
28 import java.io.IOException;
29 import java.security.AccessControlContext;
30 import java.security.AccessControlException;
31 import java.security.AccessController;
32 import java.security.PrivilegedAction;
33 import java.security.PrivilegedActionException;
34 import java.security.PrivilegedExceptionAction;
35 import java.util.ArrayList;
36 import java.util.Arrays;
37 import java.util.Collections;
38 import java.util.List;
39 import java.util.jar.JarEntry;
40 import java.util.jar.JarOutputStream;
41 import java.util.jar.Manifest;
42 import javax.security.auth.Subject;
43 import javax.security.auth.x500.X500Principal;
44 import jdk.testlibrary.ProcessTools;
45
46 /**
47 * @test
48 * @bug 8048147
49 * @summary Check if proper AccessControlException is thrown
50 * in case of nested Subject.doAs() invocations
51 * when one of protection domains doesn't have permissions
52 *
53 * @library /lib/testlibrary
54 *
55 * @run main NestedActions jar NestedActionsACE.jar
56 * NestedActionsACE.class Utils.class
57 * @run main NestedActions jar NestedActionsPAE.jar
128 fis.transferTo(jos);
129 }
130 }
131 }
132 }
133
134 static void runJava(String[] args) {
135 if (args == null || args.length < 3) {
136 throw new IllegalArgumentException("wrong parameters");
137 }
138
139 List<String> cmds = new ArrayList<>();
140 cmds.add(JAVA);
141 StringBuilder sb = new StringBuilder();
142 cmds.add("-classpath");
143 for (int i=2; i<args.length; i++) {
144 sb.append(args[i]).append(PS);
145 }
146 cmds.add(sb.toString());
147 if (JAVA_OPTS != null && !JAVA_OPTS.isEmpty()) {
148 Collections.addAll(cmds, JAVA_OPTS.split("\\s+"));
149 }
150 cmds.add("-Djava.security.manager");
151 cmds.add("-Djava.security.policy=" + TEST_SOURCES + FS + args[1]);
152 cmds.add(args[0]);
153 try {
154 ProcessTools.executeCommand(cmds.toArray(new String[cmds.size()]))
155 .shouldHaveExitValue(0);
156 } catch (Throwable e) {
157 throw new RuntimeException(e);
158 }
159 }
160 }
161
162 /**
163 * Test for nested Subject.doAs() invocation:
164 *
165 * WriteToFileAction (CN=Duke principal) ->
166 * ReadFromFileAction (CN=Duke principal) ->
167 * ReadPropertyAction (CN=Duke principal)
168 *
|