blob: 47e6b729fa4726e6a20cb8eb497543ded9558083 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package com.sun.jdi;
27
28/**
29 * The <code>JDIPermission</code> class represents access rights to
30 * the <code>VirtualMachineManager</code>. This is the permission
31 * which the SecurityManager will check when code that is running with
32 * a SecurityManager requests access to the VirtualMachineManager, as
33 * defined in the Java Debug Interface (JDI) for the Java platform.
34 * <P>
35 * A <code>JDIPermission</code> object contains a name (also referred
36 * to as a "target name") but no actions list; you either have the
37 * named permission or you don't.
38 * <P>
39 * The following table provides a summary description of what the
40 * permission allows, and discusses the risks of granting code the
41 * permission.
42 * <P>
43 * <table border=1 cellpadding=5 summary="Table shows permission
44 * target name, what the permission allows, and associated risks">
45 * <tr>
46 * <th>Permission Target Name</th>
47 * <th>What the Permission Allows</th>
48 * <th>Risks of Allowing this Permission</th>
49 * </tr>
50 *
51 * <tr>
52 * <td>virtualMachineManager</td>
53 * <td>Ability to inspect and modify the JDI objects in the
54 * <code>VirtualMachineManager</code>
55 * </td>
56 * <td>This allows an attacker to control the
57 * <code>VirtualMachineManager</code> and cause the system to
58 * misbehave.
59 * </td>
60 * </tr>
61 *
62 * </table>
63 *
64 * <p>
65 * Programmers do not normally create JDIPermission objects directly.
66 * Instead they are created by the security policy code based on reading
67 * the security policy file.
68 *
69 * @author Tim Bell
70 * @since 1.5
71 *
72 * @see com.sun.jdi.Bootstrap
73 * @see java.security.BasicPermission
74 * @see java.security.Permission
75 * @see java.security.Permissions
76 * @see java.security.PermissionCollection
77 * @see java.lang.SecurityManager
78 *
79 */
80
81public final class JDIPermission extends java.security.BasicPermission {
82
83 /**
84 * The <code>JDIPermission</code> class represents access rights to the
85 * <code>VirtualMachineManager</code>
86 * @param name Permission name. Must be "virtualMachineManager".
87 * @throws IllegalArgumentException if the name argument is invalid.
88 */
89 public JDIPermission(String name) {
90 super(name);
91 if (!name.equals("virtualMachineManager")) {
92 throw new IllegalArgumentException("name: " + name);
93 }
94 }
95
96 /**
97 * Constructs a new JDIPermission object.
98 *
99 * @param name Permission name. Must be "virtualMachineManager".
100 * @param actions Must be either null or the empty string.
101 * @throws IllegalArgumentException if arguments are invalid.
102 */
103 public JDIPermission(String name, String actions)
104 throws IllegalArgumentException {
105 super(name);
106 if (!name.equals("virtualMachineManager")) {
107 throw new IllegalArgumentException("name: " + name);
108 }
109 if (actions != null && actions.length() > 0) {
110 throw new IllegalArgumentException("actions: " + actions);
111 }
112 }
113}