home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / lang / SecurityManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  7.7 KB  |  436 lines

  1. package java.lang;
  2.  
  3. import java.awt.AWTPermission;
  4. import java.io.File;
  5. import java.io.FileDescriptor;
  6. import java.io.FilePermission;
  7. import java.net.InetAddress;
  8. import java.net.SocketPermission;
  9. import java.security.AccessControlContext;
  10. import java.security.AccessController;
  11. import java.security.AllPermission;
  12. import java.security.Permission;
  13. import java.security.SecurityPermission;
  14. import java.util.PropertyPermission;
  15. import java.util.StringTokenizer;
  16.  
  17. public class SecurityManager {
  18.    protected boolean inCheck;
  19.    private boolean initialized = false;
  20.    private static RuntimePermission createClassLoaderPermission;
  21.    private static AWTPermission topLevelWindowPermission;
  22.    private static AWTPermission accessClipboardPermission;
  23.    private static AWTPermission checkAwtEventQueuePermission;
  24.    private static RuntimePermission checkMemberAccessPermission;
  25.    private static AllPermission allPermission;
  26.    private static RuntimePermission threadPermission;
  27.    private static RuntimePermission threadGroupPermission;
  28.    private static ThreadGroup rootGroup = getRootGroup();
  29.    private static SocketPermission localListenPermission;
  30.    private static boolean packageAccessValid = false;
  31.    private static String[] packageAccess = new String[0];
  32.    private static boolean packageDefinitionValid = false;
  33.    private static String[] packageDefinition = new String[0];
  34.    // $FF: synthetic field
  35.    static Class class$java$lang$SecurityManager;
  36.  
  37.    private boolean hasAllPermission() {
  38.       if (allPermission == null) {
  39.          allPermission = new AllPermission();
  40.       }
  41.  
  42.       try {
  43.          this.checkPermission(allPermission);
  44.          return true;
  45.       } catch (SecurityException var2) {
  46.          return false;
  47.       }
  48.    }
  49.  
  50.    public boolean getInCheck() {
  51.       return this.inCheck;
  52.    }
  53.  
  54.    public SecurityManager() {
  55.       Class var1 = class$java$lang$SecurityManager == null ? (class$java$lang$SecurityManager = class$("java.lang.SecurityManager")) : class$java$lang$SecurityManager;
  56.       synchronized(var1) {
  57.          SecurityManager var2 = System.getSecurityManager();
  58.          if (var2 != null) {
  59.             var2.checkPermission(new RuntimePermission("createSecurityManager"));
  60.          }
  61.  
  62.          this.initialized = true;
  63.       }
  64.    }
  65.  
  66.    protected native Class[] getClassContext();
  67.  
  68.    protected ClassLoader currentClassLoader() {
  69.       ClassLoader var1 = this.currentClassLoader0();
  70.       if (var1 != null && this.hasAllPermission()) {
  71.          var1 = null;
  72.       }
  73.  
  74.       return var1;
  75.    }
  76.  
  77.    private native ClassLoader currentClassLoader0();
  78.  
  79.    protected Class currentLoadedClass() {
  80.       Class var1 = this.currentLoadedClass0();
  81.       if (var1 != null && this.hasAllPermission()) {
  82.          var1 = null;
  83.       }
  84.  
  85.       return var1;
  86.    }
  87.  
  88.    protected native int classDepth(String var1);
  89.  
  90.    protected int classLoaderDepth() {
  91.       int var1 = this.classLoaderDepth0();
  92.       if (var1 != -1) {
  93.          if (this.hasAllPermission()) {
  94.             var1 = -1;
  95.          } else {
  96.             --var1;
  97.          }
  98.       }
  99.  
  100.       return var1;
  101.    }
  102.  
  103.    private native int classLoaderDepth0();
  104.  
  105.    protected boolean inClass(String var1) {
  106.       return this.classDepth(var1) >= 0;
  107.    }
  108.  
  109.    protected boolean inClassLoader() {
  110.       return this.currentClassLoader() != null;
  111.    }
  112.  
  113.    public Object getSecurityContext() {
  114.       return AccessController.getContext();
  115.    }
  116.  
  117.    public void checkPermission(Permission var1) {
  118.       AccessController.checkPermission(var1);
  119.    }
  120.  
  121.    public void checkPermission(Permission var1, Object var2) {
  122.       if (var2 instanceof AccessControlContext) {
  123.          ((AccessControlContext)var2).checkPermission(var1);
  124.       } else {
  125.          throw new SecurityException();
  126.       }
  127.    }
  128.  
  129.    public void checkCreateClassLoader() {
  130.       if (createClassLoaderPermission == null) {
  131.          createClassLoaderPermission = new RuntimePermission("createClassLoader");
  132.       }
  133.  
  134.       this.checkPermission(createClassLoaderPermission);
  135.    }
  136.  
  137.    private static ThreadGroup getRootGroup() {
  138.       ThreadGroup var0;
  139.       for(var0 = Thread.currentThread().getThreadGroup(); var0.getParent() != null; var0 = var0.getParent()) {
  140.       }
  141.  
  142.       return var0;
  143.    }
  144.  
  145.    public void checkAccess(Thread var1) {
  146.       if (var1 == null) {
  147.          throw new NullPointerException("thread can't be null");
  148.       } else {
  149.          if (var1.getThreadGroup() == rootGroup) {
  150.             if (threadPermission == null) {
  151.                threadPermission = new RuntimePermission("modifyThread");
  152.             }
  153.  
  154.             this.checkPermission(threadPermission);
  155.          }
  156.  
  157.       }
  158.    }
  159.  
  160.    public void checkAccess(ThreadGroup var1) {
  161.       if (var1 == null) {
  162.          throw new NullPointerException("thread group can't be null");
  163.       } else {
  164.          if (var1 == rootGroup) {
  165.             if (threadGroupPermission == null) {
  166.                threadGroupPermission = new RuntimePermission("modifyThreadGroup");
  167.             }
  168.  
  169.             this.checkPermission(threadGroupPermission);
  170.          }
  171.  
  172.       }
  173.    }
  174.  
  175.    public void checkExit(int var1) {
  176.       this.checkPermission(new RuntimePermission("exitVM"));
  177.    }
  178.  
  179.    public void checkExec(String var1) {
  180.       File var2 = new File(var1);
  181.       if (var2.isAbsolute()) {
  182.          this.checkPermission(new FilePermission(var1, "execute"));
  183.       } else {
  184.          this.checkPermission(new FilePermission("<<ALL FILES>>", "execute"));
  185.       }
  186.  
  187.    }
  188.  
  189.    public void checkLink(String var1) {
  190.       if (var1 == null) {
  191.          throw new NullPointerException("library can't be null");
  192.       } else {
  193.          this.checkPermission(new RuntimePermission("loadLibrary." + var1));
  194.       }
  195.    }
  196.  
  197.    public void checkRead(FileDescriptor var1) {
  198.       if (var1 == null) {
  199.          throw new NullPointerException("file descriptor can't be null");
  200.       } else {
  201.          this.checkPermission(new RuntimePermission("readFileDescriptor"));
  202.       }
  203.    }
  204.  
  205.    public void checkRead(String var1) {
  206.       this.checkPermission(new FilePermission(var1, "read"));
  207.    }
  208.  
  209.    public void checkRead(String var1, Object var2) {
  210.       this.checkPermission(new FilePermission(var1, "read"), var2);
  211.    }
  212.  
  213.    public void checkWrite(FileDescriptor var1) {
  214.       if (var1 == null) {
  215.          throw new NullPointerException("file descriptor can't be null");
  216.       } else {
  217.          this.checkPermission(new RuntimePermission("writeFileDescriptor"));
  218.       }
  219.    }
  220.  
  221.    public void checkWrite(String var1) {
  222.       this.checkPermission(new FilePermission(var1, "write"));
  223.    }
  224.  
  225.    public void checkDelete(String var1) {
  226.       this.checkPermission(new FilePermission(var1, "delete"));
  227.    }
  228.  
  229.    public void checkConnect(String var1, int var2) {
  230.       if (var1 == null) {
  231.          throw new NullPointerException("host can't be null");
  232.       } else {
  233.          if (var2 == -1) {
  234.             this.checkPermission(new SocketPermission(var1, "resolve"));
  235.          } else {
  236.             this.checkPermission(new SocketPermission(var1 + ":" + var2, "connect"));
  237.          }
  238.  
  239.       }
  240.    }
  241.  
  242.    public void checkConnect(String var1, int var2, Object var3) {
  243.       if (var1 == null) {
  244.          throw new NullPointerException("host can't be null");
  245.       } else {
  246.          if (var2 == -1) {
  247.             this.checkPermission(new SocketPermission(var1, "resolve"), var3);
  248.          } else {
  249.             this.checkPermission(new SocketPermission(var1 + ":" + var2, "connect"), var3);
  250.          }
  251.  
  252.       }
  253.    }
  254.  
  255.    public void checkListen(int var1) {
  256.       if (var1 == 0) {
  257.          if (localListenPermission == null) {
  258.             localListenPermission = new SocketPermission("localhost:1024-", "listen");
  259.          }
  260.  
  261.          this.checkPermission(localListenPermission);
  262.       } else {
  263.          this.checkPermission(new SocketPermission("localhost:" + var1, "listen"));
  264.       }
  265.  
  266.    }
  267.  
  268.    public void checkAccept(String var1, int var2) {
  269.       if (var1 == null) {
  270.          throw new NullPointerException("host can't be null");
  271.       } else {
  272.          this.checkPermission(new SocketPermission(var1 + ":" + var2, "accept"));
  273.       }
  274.    }
  275.  
  276.    public void checkMulticast(InetAddress var1) {
  277.       this.checkPermission(new SocketPermission(var1.getHostAddress(), "accept,connect"));
  278.    }
  279.  
  280.    public void checkMulticast(InetAddress var1, byte var2) {
  281.       this.checkPermission(new SocketPermission(var1.getHostAddress(), "accept,connect"));
  282.    }
  283.  
  284.    public void checkPropertiesAccess() {
  285.       this.checkPermission(new PropertyPermission("*", "read,write"));
  286.    }
  287.  
  288.    public void checkPropertyAccess(String var1) {
  289.       this.checkPermission(new PropertyPermission(var1, "read"));
  290.    }
  291.  
  292.    public boolean checkTopLevelWindow(Object var1) {
  293.       if (var1 == null) {
  294.          throw new NullPointerException("window can't be null");
  295.       } else {
  296.          try {
  297.             if (topLevelWindowPermission == null) {
  298.                topLevelWindowPermission = new AWTPermission("showWindowWithoutWarningBanner");
  299.             }
  300.  
  301.             this.checkPermission(topLevelWindowPermission);
  302.             return true;
  303.          } catch (SecurityException var3) {
  304.             return false;
  305.          }
  306.       }
  307.    }
  308.  
  309.    public void checkPrintJobAccess() {
  310.       this.checkPermission(new RuntimePermission("queuePrintJob"));
  311.    }
  312.  
  313.    public void checkSystemClipboardAccess() {
  314.       if (accessClipboardPermission == null) {
  315.          accessClipboardPermission = new AWTPermission("accessClipboard");
  316.       }
  317.  
  318.       this.checkPermission(accessClipboardPermission);
  319.    }
  320.  
  321.    public void checkAwtEventQueueAccess() {
  322.       if (checkAwtEventQueuePermission == null) {
  323.          checkAwtEventQueuePermission = new AWTPermission("accessEventQueue");
  324.       }
  325.  
  326.       this.checkPermission(checkAwtEventQueuePermission);
  327.    }
  328.  
  329.    private static String[] getPackages(String var0) {
  330.       String[] var1 = null;
  331.       if (var0 != null && !var0.equals("")) {
  332.          StringTokenizer var2 = new StringTokenizer(var0, ",");
  333.          int var3 = var2.countTokens();
  334.          if (var3 > 0) {
  335.             var1 = new String[var3];
  336.  
  337.             String var5;
  338.             for(int var4 = 0; var2.hasMoreElements(); var1[var4++] = var5) {
  339.                var5 = var2.nextToken().trim();
  340.             }
  341.          }
  342.       }
  343.  
  344.       if (var1 == null) {
  345.          var1 = new String[0];
  346.       }
  347.  
  348.       return var1;
  349.    }
  350.  
  351.    public void checkPackageAccess(String var1) {
  352.       if (var1 == null) {
  353.          throw new NullPointerException("package name can't be null");
  354.       } else {
  355.          String[] var2 = packageAccess;
  356.          synchronized(var2) {
  357.             if (!packageAccessValid) {
  358.                String var3 = (String)AccessController.doPrivileged(new 1(this));
  359.                packageAccess = getPackages(var3);
  360.                packageAccessValid = true;
  361.             }
  362.  
  363.             for(int var6 = 0; var6 < packageAccess.length; ++var6) {
  364.                if (var1.startsWith(packageAccess[var6]) || var1.equals(packageAccess[var6])) {
  365.                   this.checkPermission(new RuntimePermission("accessClassInPackage." + var1));
  366.                }
  367.             }
  368.  
  369.          }
  370.       }
  371.    }
  372.  
  373.    public void checkPackageDefinition(String var1) {
  374.       if (var1 == null) {
  375.          throw new NullPointerException("package name can't be null");
  376.       } else {
  377.          String[] var2 = packageDefinition;
  378.          synchronized(var2) {
  379.             if (!packageDefinitionValid) {
  380.                String var3 = (String)AccessController.doPrivileged(new 2(this));
  381.                packageDefinition = getPackages(var3);
  382.                packageDefinitionValid = true;
  383.             }
  384.  
  385.             for(int var6 = 0; var6 < packageDefinition.length; ++var6) {
  386.                if (var1.startsWith(packageDefinition[var6]) || var1.equals(packageDefinition[var6])) {
  387.                   this.checkPermission(new RuntimePermission("defineClassInPackage." + var1));
  388.                }
  389.             }
  390.  
  391.          }
  392.       }
  393.    }
  394.  
  395.    public void checkSetFactory() {
  396.       this.checkPermission(new RuntimePermission("setFactory"));
  397.    }
  398.  
  399.    public void checkMemberAccess(Class var1, int var2) {
  400.       if (var1 == null) {
  401.          throw new NullPointerException("class can't be null");
  402.       } else {
  403.          if (var2 != 0) {
  404.             Class[] var3 = this.getClassContext();
  405.             if (var3.length < 4 || var3[3].getClassLoader() != var1.getClassLoader()) {
  406.                if (checkMemberAccessPermission == null) {
  407.                   checkMemberAccessPermission = new RuntimePermission("accessDeclaredMembers");
  408.                }
  409.  
  410.                this.checkPermission(checkMemberAccessPermission);
  411.             }
  412.          }
  413.  
  414.       }
  415.    }
  416.  
  417.    public void checkSecurityAccess(String var1) {
  418.       this.checkPermission(new SecurityPermission(var1));
  419.    }
  420.  
  421.    private native Class currentLoadedClass0();
  422.  
  423.    public ThreadGroup getThreadGroup() {
  424.       return Thread.currentThread().getThreadGroup();
  425.    }
  426.  
  427.    // $FF: synthetic method
  428.    static Class class$(String var0) {
  429.       try {
  430.          return Class.forName(var0);
  431.       } catch (ClassNotFoundException var2) {
  432.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  433.       }
  434.    }
  435. }
  436.