home *** CD-ROM | disk | FTP | other *** search
- package java.lang;
-
- import java.awt.AWTPermission;
- import java.io.File;
- import java.io.FileDescriptor;
- import java.io.FilePermission;
- import java.net.InetAddress;
- import java.net.SocketPermission;
- import java.security.AccessControlContext;
- import java.security.AccessController;
- import java.security.AllPermission;
- import java.security.Permission;
- import java.security.SecurityPermission;
- import java.util.PropertyPermission;
- import java.util.StringTokenizer;
-
- public class SecurityManager {
- protected boolean inCheck;
- private boolean initialized = false;
- private static RuntimePermission createClassLoaderPermission;
- private static AWTPermission topLevelWindowPermission;
- private static AWTPermission accessClipboardPermission;
- private static AWTPermission checkAwtEventQueuePermission;
- private static RuntimePermission checkMemberAccessPermission;
- private static AllPermission allPermission;
- private static RuntimePermission threadPermission;
- private static RuntimePermission threadGroupPermission;
- private static ThreadGroup rootGroup = getRootGroup();
- private static SocketPermission localListenPermission;
- private static boolean packageAccessValid = false;
- private static String[] packageAccess = new String[0];
- private static boolean packageDefinitionValid = false;
- private static String[] packageDefinition = new String[0];
- // $FF: synthetic field
- static Class class$java$lang$SecurityManager;
-
- private boolean hasAllPermission() {
- if (allPermission == null) {
- allPermission = new AllPermission();
- }
-
- try {
- this.checkPermission(allPermission);
- return true;
- } catch (SecurityException var2) {
- return false;
- }
- }
-
- public boolean getInCheck() {
- return this.inCheck;
- }
-
- public SecurityManager() {
- Class var1 = class$java$lang$SecurityManager == null ? (class$java$lang$SecurityManager = class$("java.lang.SecurityManager")) : class$java$lang$SecurityManager;
- synchronized(var1) {
- SecurityManager var2 = System.getSecurityManager();
- if (var2 != null) {
- var2.checkPermission(new RuntimePermission("createSecurityManager"));
- }
-
- this.initialized = true;
- }
- }
-
- protected native Class[] getClassContext();
-
- protected ClassLoader currentClassLoader() {
- ClassLoader var1 = this.currentClassLoader0();
- if (var1 != null && this.hasAllPermission()) {
- var1 = null;
- }
-
- return var1;
- }
-
- private native ClassLoader currentClassLoader0();
-
- protected Class currentLoadedClass() {
- Class var1 = this.currentLoadedClass0();
- if (var1 != null && this.hasAllPermission()) {
- var1 = null;
- }
-
- return var1;
- }
-
- protected native int classDepth(String var1);
-
- protected int classLoaderDepth() {
- int var1 = this.classLoaderDepth0();
- if (var1 != -1) {
- if (this.hasAllPermission()) {
- var1 = -1;
- } else {
- --var1;
- }
- }
-
- return var1;
- }
-
- private native int classLoaderDepth0();
-
- protected boolean inClass(String var1) {
- return this.classDepth(var1) >= 0;
- }
-
- protected boolean inClassLoader() {
- return this.currentClassLoader() != null;
- }
-
- public Object getSecurityContext() {
- return AccessController.getContext();
- }
-
- public void checkPermission(Permission var1) {
- AccessController.checkPermission(var1);
- }
-
- public void checkPermission(Permission var1, Object var2) {
- if (var2 instanceof AccessControlContext) {
- ((AccessControlContext)var2).checkPermission(var1);
- } else {
- throw new SecurityException();
- }
- }
-
- public void checkCreateClassLoader() {
- if (createClassLoaderPermission == null) {
- createClassLoaderPermission = new RuntimePermission("createClassLoader");
- }
-
- this.checkPermission(createClassLoaderPermission);
- }
-
- private static ThreadGroup getRootGroup() {
- ThreadGroup var0;
- for(var0 = Thread.currentThread().getThreadGroup(); var0.getParent() != null; var0 = var0.getParent()) {
- }
-
- return var0;
- }
-
- public void checkAccess(Thread var1) {
- if (var1 == null) {
- throw new NullPointerException("thread can't be null");
- } else {
- if (var1.getThreadGroup() == rootGroup) {
- if (threadPermission == null) {
- threadPermission = new RuntimePermission("modifyThread");
- }
-
- this.checkPermission(threadPermission);
- }
-
- }
- }
-
- public void checkAccess(ThreadGroup var1) {
- if (var1 == null) {
- throw new NullPointerException("thread group can't be null");
- } else {
- if (var1 == rootGroup) {
- if (threadGroupPermission == null) {
- threadGroupPermission = new RuntimePermission("modifyThreadGroup");
- }
-
- this.checkPermission(threadGroupPermission);
- }
-
- }
- }
-
- public void checkExit(int var1) {
- this.checkPermission(new RuntimePermission("exitVM"));
- }
-
- public void checkExec(String var1) {
- File var2 = new File(var1);
- if (var2.isAbsolute()) {
- this.checkPermission(new FilePermission(var1, "execute"));
- } else {
- this.checkPermission(new FilePermission("<<ALL FILES>>", "execute"));
- }
-
- }
-
- public void checkLink(String var1) {
- if (var1 == null) {
- throw new NullPointerException("library can't be null");
- } else {
- this.checkPermission(new RuntimePermission("loadLibrary." + var1));
- }
- }
-
- public void checkRead(FileDescriptor var1) {
- if (var1 == null) {
- throw new NullPointerException("file descriptor can't be null");
- } else {
- this.checkPermission(new RuntimePermission("readFileDescriptor"));
- }
- }
-
- public void checkRead(String var1) {
- this.checkPermission(new FilePermission(var1, "read"));
- }
-
- public void checkRead(String var1, Object var2) {
- this.checkPermission(new FilePermission(var1, "read"), var2);
- }
-
- public void checkWrite(FileDescriptor var1) {
- if (var1 == null) {
- throw new NullPointerException("file descriptor can't be null");
- } else {
- this.checkPermission(new RuntimePermission("writeFileDescriptor"));
- }
- }
-
- public void checkWrite(String var1) {
- this.checkPermission(new FilePermission(var1, "write"));
- }
-
- public void checkDelete(String var1) {
- this.checkPermission(new FilePermission(var1, "delete"));
- }
-
- public void checkConnect(String var1, int var2) {
- if (var1 == null) {
- throw new NullPointerException("host can't be null");
- } else {
- if (var2 == -1) {
- this.checkPermission(new SocketPermission(var1, "resolve"));
- } else {
- this.checkPermission(new SocketPermission(var1 + ":" + var2, "connect"));
- }
-
- }
- }
-
- public void checkConnect(String var1, int var2, Object var3) {
- if (var1 == null) {
- throw new NullPointerException("host can't be null");
- } else {
- if (var2 == -1) {
- this.checkPermission(new SocketPermission(var1, "resolve"), var3);
- } else {
- this.checkPermission(new SocketPermission(var1 + ":" + var2, "connect"), var3);
- }
-
- }
- }
-
- public void checkListen(int var1) {
- if (var1 == 0) {
- if (localListenPermission == null) {
- localListenPermission = new SocketPermission("localhost:1024-", "listen");
- }
-
- this.checkPermission(localListenPermission);
- } else {
- this.checkPermission(new SocketPermission("localhost:" + var1, "listen"));
- }
-
- }
-
- public void checkAccept(String var1, int var2) {
- if (var1 == null) {
- throw new NullPointerException("host can't be null");
- } else {
- this.checkPermission(new SocketPermission(var1 + ":" + var2, "accept"));
- }
- }
-
- public void checkMulticast(InetAddress var1) {
- this.checkPermission(new SocketPermission(var1.getHostAddress(), "accept,connect"));
- }
-
- public void checkMulticast(InetAddress var1, byte var2) {
- this.checkPermission(new SocketPermission(var1.getHostAddress(), "accept,connect"));
- }
-
- public void checkPropertiesAccess() {
- this.checkPermission(new PropertyPermission("*", "read,write"));
- }
-
- public void checkPropertyAccess(String var1) {
- this.checkPermission(new PropertyPermission(var1, "read"));
- }
-
- public boolean checkTopLevelWindow(Object var1) {
- if (var1 == null) {
- throw new NullPointerException("window can't be null");
- } else {
- try {
- if (topLevelWindowPermission == null) {
- topLevelWindowPermission = new AWTPermission("showWindowWithoutWarningBanner");
- }
-
- this.checkPermission(topLevelWindowPermission);
- return true;
- } catch (SecurityException var3) {
- return false;
- }
- }
- }
-
- public void checkPrintJobAccess() {
- this.checkPermission(new RuntimePermission("queuePrintJob"));
- }
-
- public void checkSystemClipboardAccess() {
- if (accessClipboardPermission == null) {
- accessClipboardPermission = new AWTPermission("accessClipboard");
- }
-
- this.checkPermission(accessClipboardPermission);
- }
-
- public void checkAwtEventQueueAccess() {
- if (checkAwtEventQueuePermission == null) {
- checkAwtEventQueuePermission = new AWTPermission("accessEventQueue");
- }
-
- this.checkPermission(checkAwtEventQueuePermission);
- }
-
- private static String[] getPackages(String var0) {
- String[] var1 = null;
- if (var0 != null && !var0.equals("")) {
- StringTokenizer var2 = new StringTokenizer(var0, ",");
- int var3 = var2.countTokens();
- if (var3 > 0) {
- var1 = new String[var3];
-
- String var5;
- for(int var4 = 0; var2.hasMoreElements(); var1[var4++] = var5) {
- var5 = var2.nextToken().trim();
- }
- }
- }
-
- if (var1 == null) {
- var1 = new String[0];
- }
-
- return var1;
- }
-
- public void checkPackageAccess(String var1) {
- if (var1 == null) {
- throw new NullPointerException("package name can't be null");
- } else {
- String[] var2 = packageAccess;
- synchronized(var2) {
- if (!packageAccessValid) {
- String var3 = (String)AccessController.doPrivileged(new 1(this));
- packageAccess = getPackages(var3);
- packageAccessValid = true;
- }
-
- for(int var6 = 0; var6 < packageAccess.length; ++var6) {
- if (var1.startsWith(packageAccess[var6]) || var1.equals(packageAccess[var6])) {
- this.checkPermission(new RuntimePermission("accessClassInPackage." + var1));
- }
- }
-
- }
- }
- }
-
- public void checkPackageDefinition(String var1) {
- if (var1 == null) {
- throw new NullPointerException("package name can't be null");
- } else {
- String[] var2 = packageDefinition;
- synchronized(var2) {
- if (!packageDefinitionValid) {
- String var3 = (String)AccessController.doPrivileged(new 2(this));
- packageDefinition = getPackages(var3);
- packageDefinitionValid = true;
- }
-
- for(int var6 = 0; var6 < packageDefinition.length; ++var6) {
- if (var1.startsWith(packageDefinition[var6]) || var1.equals(packageDefinition[var6])) {
- this.checkPermission(new RuntimePermission("defineClassInPackage." + var1));
- }
- }
-
- }
- }
- }
-
- public void checkSetFactory() {
- this.checkPermission(new RuntimePermission("setFactory"));
- }
-
- public void checkMemberAccess(Class var1, int var2) {
- if (var1 == null) {
- throw new NullPointerException("class can't be null");
- } else {
- if (var2 != 0) {
- Class[] var3 = this.getClassContext();
- if (var3.length < 4 || var3[3].getClassLoader() != var1.getClassLoader()) {
- if (checkMemberAccessPermission == null) {
- checkMemberAccessPermission = new RuntimePermission("accessDeclaredMembers");
- }
-
- this.checkPermission(checkMemberAccessPermission);
- }
- }
-
- }
- }
-
- public void checkSecurityAccess(String var1) {
- this.checkPermission(new SecurityPermission(var1));
- }
-
- private native Class currentLoadedClass0();
-
- public ThreadGroup getThreadGroup() {
- return Thread.currentThread().getThreadGroup();
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
- }
-