diff options
author | Tom Tromey <tromey@redhat.com> | 2002-06-15 19:45:34 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2002-06-15 19:45:34 +0000 |
commit | 3e1b181a6785c3b77b1cd877a8f6759efad6cfe8 (patch) | |
tree | 6325e924516b02fb0d87553b0923dd855f975914 /libjava/java/lang/RuntimePermission.java | |
parent | 34442f32a2407deff70df24c62713044748caf84 (diff) | |
download | gcc-3e1b181a6785c3b77b1cd877a8f6759efad6cfe8.zip gcc-3e1b181a6785c3b77b1cd877a8f6759efad6cfe8.tar.gz gcc-3e1b181a6785c3b77b1cd877a8f6759efad6cfe8.tar.bz2 |
AbstractMethodError.java: Re-merged with Classpath.
* java/lang/AbstractMethodError.java: Re-merged with Classpath.
* java/lang/ArithmeticException.java: Likewise.
* java/lang/ArrayIndexOutOfBoundsException.java: Likewise.
* java/lang/ArrayStoreException.java: Likewise.
* java/lang/Byte.java: Likewise.
* java/lang/CharSequence.java: Likewise.
* java/lang/ClassCastException.java: Likewise.
* java/lang/ClassCircularityError.java: Likewise.
* java/lang/ClassFormatError.java: Likewise.
* java/lang/CloneNotSupportedException.java: Likewise.
* java/lang/Cloneable.java: Likewise.
* java/lang/Comparable.java: Likewise.
* java/lang/Compiler.java: Likewise.
* java/lang/Error.java: Likewise.
* java/lang/ExceptionInInitializerError.java: Likewise.
* java/lang/IllegalAccessError.java: Likewise.
* java/lang/IllegalAccessException.java: Likewise.
* java/lang/IllegalArgumentException.java: Likewise.
* java/lang/IllegalMonitorStateException.java: Likewise.
* java/lang/IllegalStateException.java: Likewise.
* java/lang/IllegalThreadStateException.java: Likewise.
* java/lang/IncompatibleClassChangeError.java: Likewise.
* java/lang/IndexOutOfBoundsException.java: Likewise.
* java/lang/InheritableThreadLocal.java: Likewise.
* java/lang/InstantiationError.java: Likewise.
* java/lang/InstantiationException.java: Likewise.
* java/lang/InternalError.java: Likewise.
* java/lang/InterruptedException.java: Likewise.
* java/lang/LinkageError.java: Likewise.
* java/lang/NegativeArraySizeException.java: Likewise.
* java/lang/NoClassDefFoundError.java: Likewise.
* java/lang/NoSuchFieldError.java: Likewise.
* java/lang/NoSuchFieldException.java: Likewise.
* java/lang/NoSuchMethodError.java: Likewise.
* java/lang/NoSuchMethodException.java: Likewise.
* java/lang/NullPointerException.java: Likewise.
* java/lang/NumberFormatException.java: Likewise.
* java/lang/OutOfMemoryError.java: Likewise.
* java/lang/Process.java: Likewise.
* java/lang/Runnable.java: Likewise.
* java/lang/RuntimePermission.java: Likewise.
* java/lang/SecurityException.java: Likewise.
* java/lang/Short.java: Likewise.
* java/lang/StackOverflowError.java: Likewise.
* java/lang/StringIndexOutOfBoundsException.java: Likewise.
* java/lang/ThreadDeath.java: Likewise.
* java/lang/ThreadLocal.java: Likewise.
* java/lang/UnknownError.java: Likewise.
* java/lang/UnsatisfiedLinkError.java: Likewise.
* java/lang/UnsupportedClassVersionError.java: Likewise.
* java/lang/UnsupportedOperationException.java: Likewise.
* java/lang/VerifyError.java: Likewise.
* java/lang/VirtualMachineError.java: Likewise.
* java/lang/reflect/InvocationTargetException.java: Likewise.
* java/net/BindException.java: Likewise.
* java/net/ConnectException.java: Likewise.
* java/net/MalformedURLException.java: Likewise.
* java/net/NoRouteToHostException.java: Likewise.
* java/net/ProtocolException.java: Likewise.
* java/net/SocketException.java: Likewise.
* java/net/UnknownHostException.java: Likewise.
* java/net/UnknownServiceException.java: Likewise.
From-SVN: r54656
Diffstat (limited to 'libjava/java/lang/RuntimePermission.java')
-rw-r--r-- | libjava/java/lang/RuntimePermission.java | 156 |
1 files changed, 100 insertions, 56 deletions
diff --git a/libjava/java/lang/RuntimePermission.java b/libjava/java/lang/RuntimePermission.java index 81bc44c..0b5b5f8 100644 --- a/libjava/java/lang/RuntimePermission.java +++ b/libjava/java/lang/RuntimePermission.java @@ -1,5 +1,5 @@ -/* RuntimePermission.java - Copyright (C) 1998, 2000 Free Software Foundation, Inc. +/* RuntimePermission.java -- permission for a secure runtime action + Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -7,7 +7,7 @@ GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU @@ -38,14 +38,14 @@ exception statement from your version. */ package java.lang; -import java.security.*; +import java.security.BasicPermission; /** * A <code>RuntimePermission</code> contains a permission name, but no * actions list. This means you either have the permission or you don't. * * Permission names have the follow the hierarchial property naming - * convention. In addition, an asterisk may appear at the end of a + * convention. In addition, an asterisk may appear at the end of a * name if following a period or by itself. * * <table border=1> @@ -53,112 +53,156 @@ import java.security.*; * <tr><td>"accessClassInPackage.*","*"</td> * <td>"**", "*x", "*.a"</td></tr> * </table> - * <br> - * - * The following table provides a list of all the possible RuntimePermission - * permission names with a description of what that permission allows. * <br> + * + * The following table provides a list of all the possible RuntimePermission + * permission names with a description of what that permission allows.<br> * <table border=1> - * <tr><th>Permission Name</th><th>Permission Allows</th></tr> + * <tr><th>Permission Name</th><th>Permission Allows</th><th>Risks</th</tr> * <tr> * <td><code>createClassLoader</code></td> - * <td>creation of a class loader</td></tr> + * <td>creation of a class loader</td> + * <td>a class loader can load rogue classes which bypass all security + * permissions</td></tr> * <tr> * <td><code>getClassLoader</code></td> - * <td>retrieval of the class loader for the calling class</td></tr> + * <td>retrieval of the class loader for the calling class</td> + * <td>rogue code could load classes not otherwise available</td></tr> * <tr> * <td><code>setContextClassLoader</code></td> - * <td>allows the setting of the context class loader used by a - * thread including system threads</td></tr> + * <td>allows the setting of the context class loader used by a thread</td> + * <td>rogue code could change the context class loader needed by system + * threads</td></tr> * <tr> * <td><code>setSecurityManager</code></td> - * <td>allows the application to replace the security manager with - * another, possibly less restrictive one.</td></tr> + * <td>allows the application to replace the security manager</td> + * <td>the new manager may be less restrictive, so that rogue code can + * bypass existing security checks</td></tr> * <tr> * <td><code>createSecurityManager</code></td> - * <td>allows the application to create a new security manager</td></tr> + * <td>allows the application to create a new security manager</td> + * <td>rogue code can use the new security manager to discover information + * about the execution stack</td></tr> * <tr> * <td><code>exitVM</code></td> - * <td>allows the application to halt the virtual machine</td></tr> + * <td>allows the application to halt the virtual machine</td> + * <td>rogue code can mount a denial-of-service attack by killing the + * virtual machine</td></tr> + * <tr> + * <td><code>shutdownHooks</code></td> + * <td>allows registration and modification of shutdown hooks</td> + * <td>rogue code can add a hook that interferes with clean + * virtual machine shutdown</td></tr> * <tr> * <td><code>setFactory</code></td> - * <td>allows the application to set the socket factory for socket, - * server socket, stream handler, or RMI socket factory.</td></tr> + * <td>allows the application to set the socket factory for socket, + * server socket, stream handler, or RMI socket factory.</td> + * <td>rogue code can create a rogue network object which mangles or + * intercepts data</td></tr> * <tr> * <td><code>setIO</code></td> - * <td>allows the application to set System.out, System.in, and - * System.err</td></tr> + * <td>allows the application to set System.out, System.in, and + * System.err</td> + * <td>rogue code could sniff user input and intercept or mangle + * output</td></tr> * <tr> * <td><code>modifyThread</code></td> * <td>allows the application to modify any thread in the virtual machine * using any of the methods <code>stop</code>, <code>resume</code>, - * <code>suspend</code>, <code>setPriority</code>, and - * <code>setName</code> of classs <code>Thread</code></td></tr> + * <code>suspend</code>, <code>setPriority</code>, and + * <code>setName</code> of classs <code>Thread</code></td> + * <td>rogue code could adversely modify system or user threads</td></tr> * <tr> * <td><code>stopThread</code></td> * <td>allows the application to <code>stop</code> any thread it has - * access to in the system</td></tr> + * access to in the system</td> + * <td>rogue code can stop arbitrary threads</td></tr> * <tr> * <td><code>modifyThreadGroup</td> * <td>allows the application to modify thread groups using any of the - * methods <code>destroy</code>, <code>resume</code>, - * <code>setDaemon</code>, <code>setMaxPriority</code>, + * methods <code>destroy</code>, <code>resume</code>, + * <code>setDaemon</code>, <code>setMaxPriority</code>, * <code>stop</code>, and <code>suspend</code> of the class - * <code>ThreadGroup</code></td></tr> + * <code>ThreadGroup</code></td> + * <td>rogue code can mount a denial-of-service attack by changing run + * priorities</td></tr> * <tr> * <td><code>getProtectionDomain</code></td> - * <td></td></tr> + * <td>retrieve a class's ProtectionDomain</td> + * <td>rogue code can gain information about the security policy, to + * prepare a better attack</td></tr> * <tr> * <td><code>readFileDescriptor</code></td> - * <td></td></tr> + * <td>read a file descriptor</td> + * <td>rogue code can read sensitive information</td></tr> * <tr> - * <td><code>writeFileDescriptor</code</td> - * <td></td></tr> + * <td><code>writeFileDescriptor</code></td> + * <td>write a file descriptor</td> + * <td>rogue code can write files, including viruses, and can modify the + * virtual machine binary; if not just fill up the disk</td></tr> * <tr> - * <td><code>loadLibrary.{library name}</code></td> - * <td></td></tr> + * <td><code>loadLibrary.<code><em>library name</em></td> + * <td>dynamic linking of the named library</td> + * <td>native code can bypass many security checks of pure Java</td></tr> * <tr> - * <td><code>accessClassInPackage.{package name}</code></td> - * <td></td></tr> + * <td><code>accessClassInPackage.</code><em>package name</em></td> + * <td>access to a package via a ClassLoader</td> + * <td>rogue code can access classes not normally available</td></tr> * <tr> - * <td><code>defineClassInPackage.{package name}</code></td> - * <td></td></tr> + * <td><code>defineClassInPackage.</code><em>package name</em></td> + * <td>define a class inside a given package</td> + * <td>rogue code can install rogue classes, including in trusted packages + * like java.security or java.lang</td></tr> * <tr> * <td><code>accessDeclaredMembers</code></td> - * <td></td></tr> + * <td>access declared class members via reflection</td> + * <td>rogue code can discover information, invoke methods, or modify fields + * that are not otherwise available</td></tr> * <tr> * <td><code>queuePrintJob</code></td> - * <td></td></tr> + * <td>initiate a print job</td> + * <td>rogue code could make a hard copy of sensitive information, or + * simply waste paper</td></tr> * </table> - * - * @since JDK 1.2 - * + * * @author Brian Jones + * @author Eric Blake <ebb9@email.byu.edu> + * @see BasicPermission + * @see Permission + * @see SecurityManager + * @since 1.2 + * @status updated to 1.4 */ -public final class RuntimePermission extends java.security.BasicPermission +public final class RuntimePermission extends BasicPermission { /** - * + * Compatible with JDK 1.2+. + */ + private static final long serialVersionUID = 7399184964622342223L; + + /** + * Create a new permission with the specified name. + * * @param permissionName the name of the granted permission - * - * @throws IllegalArgumentException thrown if the name contains an invalid - * wildcard character + * @throws NullPointerException if name is null + * @throws IllegalArgumentException thrown if name is empty or invalid */ public RuntimePermission(String permissionName) { - this(permissionName, null); + super(permissionName); } /** + * Create a new permission with the specified name. The actions argument + * is ignored, as runtime permissions have no actions. * * @param permissionName the name of the granted permission - * @param actions this should always be null - * - * @throws IllegalArgumentException throw if the name contains an invalid - * wildcard character + * @param actions ignored + * @throws NullPointerException if name is null + * @throws IllegalArgumentException thrown if name is empty or invalid */ public RuntimePermission(String permissionName, String actions) - { - super(permissionName, actions); - } + { + super(permissionName); + } } |