home *** CD-ROM | disk | FTP | other *** search
- package netscape.security;
-
- import java.io.File;
- import java.io.FileDescriptor;
- import java.io.IOException;
- import java.net.InetAddress;
- import java.net.URL;
- import java.net.UnknownHostException;
- import java.util.Hashtable;
- import netscape.applet.CastanetChannelInfo;
-
- public class AppletSecurity extends SecurityManager {
- private static final boolean MARIMBA_ENABLED = true;
- private static boolean debug;
- static final int NETWORK_NONE = 1;
- static final int NETWORK_HOST = 2;
- static final int NETWORK_UNRESTRICTED = 3;
- private static final int PRIVELEGED_PORT = 1024;
- int networkMode;
- private static Hashtable resourceExtTable = new Hashtable();
- private static Thread dlgCreatorThread = null;
- private static Target UniversalThreadAccessTarget;
- private static Target UniversalThreadGroupAccessTarget;
- private static Target UniversalExitAccessTarget;
- private static Target UniversalExecAccessTarget;
- private static Target UniversalLinkAccessTarget;
- private static Target UniversalPropertyWriteTarget;
- private static Target UniversalPropertyReadTarget;
- private static Target UniversalFileReadTarget;
- private static Target ParamFileReadTarget;
- private static Target UniversalFileWriteTarget;
- private static Target UniversalFileDeleteTarget;
- private static Target ParamFileWriteTarget;
- private static Target UniversalFdReadTarget;
- private static Target UniversalFdWriteTarget;
- private static Target UniversalListenTarget;
- private static Target UniversalAcceptTarget;
- private static Target UniversalConnectTarget;
- private static Target UniversalMulticastTarget;
- private static Target UniversalTopLevelWindowTarget;
- private static Target UniversalPackageAccessTarget;
- private static Target UniversalPackageDefinitionTarget;
- private static Target UniversalSetFactoryTarget;
- private static Target UniversalMemberAccessTarget;
- private static Target UniversalPrintJobAccessTarget;
- private static Target UniversalSystemClipboardAccessTarget;
- private static Target UniversalAwtEventQueueAccessTarget;
- private static Target UniversalSecurityProviderTarget;
- private static Target CreateSecurityManagerTarget;
- private static Target SuperUserTarget;
- private static PrivilegeManager privMgr;
- private static Class atg;
-
- public AppletSecurity() {
- this.reset();
- this.initTargets();
- if (dlgCreatorThread == null) {
- dlgCreatorThread = new DialogCreator();
- }
-
- loadResourceExtTable();
- }
-
- void reset() {
- SecurityManager.enablePrivilege("UniversalPropertyRead");
- String var1 = System.getProperty("appletviewer.security.mode");
- if (var1 == null) {
- var1 = "host";
- }
-
- if (var1.equals("unrestricted")) {
- this.networkMode = 3;
- } else if (var1.equals("none")) {
- this.networkMode = 1;
- } else {
- this.networkMode = 2;
- }
- }
-
- private void initTargets() {
- UniversalThreadAccessTarget = Target.findTarget("UniversalThreadAccess");
- UniversalThreadGroupAccessTarget = Target.findTarget("UniversalThreadGroupAccess");
- UniversalExitAccessTarget = Target.findTarget("UniversalExitAccess");
- UniversalExecAccessTarget = Target.findTarget("UniversalExecAccess");
- UniversalLinkAccessTarget = Target.findTarget("UniversalLinkAccess");
- UniversalPropertyWriteTarget = Target.findTarget("UniversalPropertyWrite");
- UniversalPropertyReadTarget = Target.findTarget("UniversalPropertyRead");
- UniversalFileReadTarget = Target.findTarget("UniversalFileRead");
- ParamFileReadTarget = Target.findTarget("FileRead");
- UniversalFileWriteTarget = Target.findTarget("UniversalFileWrite");
- UniversalFileDeleteTarget = Target.findTarget("UniversalFileDelete");
- ParamFileWriteTarget = Target.findTarget("FileWrite");
- UniversalFdReadTarget = Target.findTarget("UniversalFdRead");
- UniversalFdWriteTarget = Target.findTarget("UniversalFdWrite");
- UniversalListenTarget = Target.findTarget("UniversalListen");
- UniversalAcceptTarget = Target.findTarget("UniversalAccept");
- UniversalConnectTarget = Target.findTarget("UniversalConnect");
- UniversalMulticastTarget = Target.findTarget("UniversalMulticast");
- UniversalTopLevelWindowTarget = Target.findTarget("UniversalTopLevelWindow");
- UniversalPackageAccessTarget = Target.findTarget("UniversalPackageAccess");
- UniversalPackageDefinitionTarget = Target.findTarget("UniversalPackageDefinition");
- UniversalSetFactoryTarget = Target.findTarget("UniversalSetFactory");
- UniversalMemberAccessTarget = Target.findTarget("UniversalMemberAccess");
- UniversalPrintJobAccessTarget = Target.findTarget("UniversalPrintJobAccess");
- UniversalSystemClipboardAccessTarget = Target.findTarget("UniversalSystemClipboardAccess");
- UniversalAwtEventQueueAccessTarget = Target.findTarget("UniversalAwtEventQueueAccess");
- UniversalSecurityProviderTarget = Target.findTarget("UniversalSecurityProvider");
- CreateSecurityManagerTarget = Target.findTarget("CreateSecurityManager");
- SuperUserTarget = Target.findTarget("SuperUser");
- }
-
- boolean fromApplet() {
- return ((SecurityManager)this).checkClassLoader(1);
- }
-
- boolean inApplet() {
- return ((SecurityManager)this).inClassLoader();
- }
-
- public Object getSecurityContext() {
- ClassLoader var1 = ((SecurityManager)this).currentClassLoader();
- return var1 == null ? null : var1.getCodeBase();
- }
-
- public static void setPrivilegeManager(PrivilegeManager var0) {
- if (privMgr != null) {
- throw new SecurityException("PrivilegeManager already set");
- } else {
- privMgr = var0;
- }
- }
-
- public static PrivilegeManager getPrivilegeManager() {
- return privMgr;
- }
-
- public static void enablePrivilege(String var0) {
- privMgr.enablePrivilege(var0, 1);
- }
-
- protected void checkCreateClassLoader(int var1) {
- if (privMgr != null) {
- Target var2 = Target.findTarget("MarimbaInternalTarget");
- if (!privMgr.isPrivilegeEnabled(var2, var1 + 1)) {
- if (((SecurityManager)this).checkClassLoader(var1 + 1)) {
- throw new AppletSecurityException("checkcreateclassloader");
- }
- }
- }
- }
-
- private boolean isAppletThreadGroup(ThreadGroup var1) {
- if (atg == null) {
- try {
- atg = Class.forName("netscape.applet.AppletThreadGroup");
- } catch (ClassNotFoundException var3) {
- return false;
- }
- }
-
- if (var1 == null) {
- return false;
- } else {
- for(Class var2 = var1.getClass(); var2 != null; var2 = var2.getSuperclass()) {
- if (var2 == atg) {
- return true;
- }
- }
-
- return false;
- }
- }
-
- protected void checkAccess(Thread var1, int var2) {
- if (privMgr != null) {
- if (this.isAppletThreadGroup(var1.getThreadGroup())) {
- return;
- }
-
- if (!privMgr.isPrivilegeEnabled(UniversalThreadAccessTarget, var2 + 1)) {
- if (this.marimbaCheckThreadGroup(var1.getThreadGroup())) {
- return;
- }
-
- throw new AppletSecurityException(UniversalThreadAccessTarget, "thread");
- }
- }
-
- }
-
- protected void checkAccess(Thread var1, Throwable var2, int var3) {
- if (privMgr != null) {
- if (var2 instanceof ThreadDeath) {
- return;
- }
-
- if (!privMgr.isPrivilegeEnabled(UniversalThreadAccessTarget, var3 + 1)) {
- throw new AppletSecurityException(UniversalThreadAccessTarget, "thread can't send exception");
- }
- }
-
- }
-
- public void checkAccess(ThreadGroup var1, int var2) {
- if (privMgr != null) {
- if (this.isAppletThreadGroup(var1)) {
- return;
- }
-
- if (!privMgr.isPrivilegeEnabled(UniversalThreadGroupAccessTarget, var2 + 1)) {
- if (this.marimbaCheckThreadGroup(var1)) {
- return;
- }
-
- throw new AppletSecurityException(UniversalThreadGroupAccessTarget, "threadgroup", var1.toString());
- }
- }
-
- }
-
- protected void checkExit(int var1, int var2) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalExitAccessTarget, var2 + 1)) {
- throw new AppletSecurityException(UniversalExitAccessTarget, "checkexit", String.valueOf(var1));
- }
- }
-
- protected void checkExec(String var1, int var2) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalExecAccessTarget, var2 + 1)) {
- throw new AppletSecurityException(UniversalExecAccessTarget, "checkexec", var1);
- }
- }
-
- protected void checkLink(String var1, int var2) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalLinkAccessTarget, var2 + 1)) {
- throw new AppletSecurityException(UniversalLinkAccessTarget, "checklink", var1);
- }
- }
-
- protected void checkPropertiesAccess(int var1) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalPropertyWriteTarget, var1 + 1)) {
- throw new AppletSecurityException(UniversalPropertyWriteTarget, "checkpropsaccess");
- }
- }
-
- protected void checkPropertyAccess(String var1, int var2) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalPropertyReadTarget, var2 + 1)) {
- throw new AppletSecurityException(UniversalPropertyReadTarget, "checkpropsaccess.key");
- }
- }
-
- protected void checkRead(String var1, int var2) {
- ClassLoader var3 = ((SecurityManager)this).currentClassLoader();
- if (var3 != null) {
- this.checkRead(var1, var3.getCodeBase(), var2 + 1);
- } else {
- this.checkRead(var1, (URL)null, var2 + 1);
- }
- }
-
- private static boolean directoryContainsFile(String var0, String var1) {
- SecurityManager.enablePrivilege("UniversalFileRead");
- SecurityManager.enablePrivilege("UniversalPropertyRead");
-
- try {
- var1 = (new File(var1)).getCanonicalPath();
- var0 = (new File(var0)).getCanonicalPath();
- } catch (IOException var3) {
- return false;
- }
-
- if (var1.equals(var0)) {
- return true;
- } else if (!var1.startsWith(var0)) {
- return false;
- } else {
- int var2 = var0.length();
- if (var1.charAt(var2) == File.separatorChar) {
- return true;
- } else {
- return var2 > 0 && var0.charAt(var2 - 1) == File.separatorChar;
- }
- }
- }
-
- private static String unEscapeFileSpecificChars(String var0) {
- String var1 = var0;
- int var4 = 0;
-
- int var2;
- while((var2 = var1.indexOf(37, var4)) >= 0) {
- var4 = var2 + 1;
- Object var6 = null;
- int var3 = var2 + 3;
- if (var3 <= var1.length()) {
- String var5 = var1.substring(var2 + 1, var3);
-
- try {
- var8 = (new Character((char)Integer.parseInt(var5, 16))).toString();
- } catch (NumberFormatException var7) {
- continue;
- }
-
- if (":/.\\|".indexOf(var8) != -1) {
- var1 = var1.substring(0, var2) + var8 + var1.substring(var3);
- }
- }
- }
-
- if (File.separatorChar == '\\') {
- if (var1.charAt(0) == '/' && (var1.charAt(2) == '|' || var1.charAt(2) == ':')) {
- var1 = var1.substring(1);
- }
-
- if (var1.charAt(1) == '|') {
- var1 = var1.substring(0, 1) + ":" + var1.substring(2);
- }
-
- var1 = var1.replace('/', '\\');
- }
-
- return var1;
- }
-
- protected void checkRead(String var1, URL var2, int var3) {
- if (privMgr != null) {
- if (!privMgr.isPrivilegeEnabled(UniversalFileReadTarget, var3 + 1)) {
- Target[] var4 = new Target[]{ParamFileReadTarget};
- if (!privMgr.isPrivilegeEnabled(var4, var3 + 1, var1)) {
- String var5 = null;
- if (var2 != null && var2.getProtocol().equals("file")) {
- var5 = unEscapeFileSpecificChars(var2.getFile());
- if (directoryContainsFile(var5, var1)) {
- return;
- }
- }
-
- if (!this.marimbaCheckAccess(var1, true)) {
- if (var5 != null) {
- throw new AppletSecurityException(UniversalFileReadTarget, "checkread", "Codebase '" + var5 + "' does not include '" + var1 + "'");
- } else {
- throw new AppletSecurityException(UniversalFileReadTarget, "checkread", "Read of '" + var1 + "' not permitted");
- }
- }
- }
- }
- }
- }
-
- protected void checkRead(String var1, Object var2, int var3) {
- ((SecurityManager)this).checkRead(var1);
- if (var2 != null) {
- this.checkRead(var1, (URL)var2, var3 + 1);
- }
-
- }
-
- protected void checkWrite(String var1, int var2) {
- if (privMgr != null) {
- if (!privMgr.isPrivilegeEnabled(UniversalFileWriteTarget, var2 + 1)) {
- Target[] var3 = new Target[]{ParamFileWriteTarget};
- if (!privMgr.isPrivilegeEnabled(var3, var2 + 1, var1)) {
- if (!this.marimbaCheckAccess(var1, false)) {
- throw new AppletSecurityException(UniversalFileWriteTarget, "checkwrite", var1);
- }
- }
- }
- }
- }
-
- protected void checkRead(FileDescriptor var1, int var2) {
- if (!var1.valid()) {
- throw new AppletSecurityException("checkread", "invalid file descriptor");
- } else if (privMgr != null) {
- if (!privMgr.isPrivilegeEnabled(UniversalFdReadTarget, var2 + 1)) {
- throw new AppletSecurityException(UniversalFdReadTarget, "checkread");
- }
- }
- }
-
- protected void checkWrite(FileDescriptor var1, int var2) {
- if (!var1.valid()) {
- throw new AppletSecurityException("checkwrite.fd", "invalid file descriptor");
- } else if (privMgr != null) {
- if (!privMgr.isPrivilegeEnabled(UniversalFdWriteTarget, var2 + 1)) {
- throw new AppletSecurityException(UniversalFdWriteTarget, "fd.write");
- }
- }
- }
-
- protected void checkDelete(String var1, int var2) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalFileDeleteTarget, var2 + 1)) {
- if (!this.marimbaCheckAccess(var1, false)) {
- throw new AppletSecurityException(UniversalFileDeleteTarget, "checkdelete", var1);
- }
- }
- }
-
- protected void checkListen(int var1, int var2) {
- if (privMgr != null) {
- if (!privMgr.isPrivilegeEnabled(UniversalListenTarget, var2 + 1)) {
- if (var1 > 0 && var1 < 1024) {
- throw new AppletSecurityException(UniversalListenTarget, "checklisten", String.valueOf(var1));
- }
- }
- }
- }
-
- protected void checkAccept(String var1, int var2, int var3) {
- if (privMgr != null) {
- if (!privMgr.isPrivilegeEnabled(UniversalAcceptTarget, var3 + 1)) {
- if (var2 > 0 && var2 < 1024) {
- throw new AppletSecurityException(UniversalAcceptTarget, "checkaccept", var1, String.valueOf(var2));
- } else {
- this.checkConnect(var1, var2, var3 + 1);
- }
- }
- }
- }
-
- protected void checkConnect(String var1, int var2, int var3) {
- ClassLoader var4 = ((SecurityManager)this).currentClassLoader();
- if (var4 == null) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalConnectTarget, var3 + 1)) {
- if (!privMgr.getBoolPref("signed.applets.low_security_for_local_classes")) {
- throw new AppletSecurityException(UniversalConnectTarget, connectErrorString("local-classpath-classes", var1));
- }
- }
- } else {
- String var5 = CastanetChannelInfo.marimbaGetHost(var4);
- if (var5 == null) {
- var5 = var4.getCodeBase().getHost();
- }
-
- this.checkConnect(var5, var1, var3 + 1);
- }
- }
-
- protected void checkConnect(String var1, int var2, Object var3, int var4) {
- this.checkConnect(var1, var2, var4 + 1);
- if (var3 != null) {
- this.checkConnect(((URL)var3).getHost(), var1, var4 + 1);
- }
-
- }
-
- private static String connectErrorString(String var0, String var1) {
- return "Couldn't connect to '" + var1 + "' with origin from '" + var0 + "'.";
- }
-
- protected void checkConnect(String var1, String var2, boolean var3, int var4) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalConnectTarget, var4 + 1)) {
- if (var1 == null) {
- throw new AppletSecurityException(UniversalConnectTarget, connectErrorString("unspecified-host", var2));
- } else {
- String var5 = null;
- switch (this.networkMode) {
- case 1:
- throw new AppletSecurityException(UniversalConnectTarget, connectErrorString(var1, var2));
- case 2:
- SecurityManager.enablePrivilege("UniversalConnect");
-
- try {
- if (var1.equals(var2)) {
- try {
- InetAddress var16 = InetAddress.getByName(var2);
- return;
- } catch (UnknownHostException var14) {
- if (!var3 && !privMgr.getBoolPref("security.lower_java_network_security_by_trusting_proxies")) {
- var5 = "Could not resolve IP for host " + var2 + ". See the trustProxy property.";
- break;
- }
-
- return;
- }
- }
-
- try {
- InetAddress var8 = InetAddress.getByName(var2);
- InetAddress var9 = InetAddress.getByName(var1);
- if (!var9.equals(var8)) {
- var5 = connectErrorString(var1, var2);
- break;
- }
- } catch (UnknownHostException var13) {
- var5 = "Couldn't resolve IP for host " + var2 + " or for " + var1 + ".";
- break;
- }
- } finally {
- SecurityManager.revertPrivilege();
- }
-
- return;
- case 3:
- return;
- }
-
- throw new AppletSecurityException(UniversalConnectTarget, var5);
- }
- }
- }
-
- protected void checkConnect(String var1, String var2, int var3) {
- this.checkConnect(var1, var2, Boolean.getBoolean("trustProxy"), var3 + 1);
- }
-
- protected void checkURLConnect(URL var1, int var2) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalConnectTarget, var2 + 1)) {
- ClassLoader var3 = ((SecurityManager)this).currentClassLoader();
- if (var3 == null) {
- if (!privMgr.getBoolPref("signed.applets.low_security_for_local_classes")) {
- throw new AppletSecurityException(UniversalConnectTarget, "class from local disk trying to access url", var1.toExternalForm());
- }
- } else {
- this.checkURLConnectHelper(var3.getCodeBase(), var1, var2 + 1);
- }
- }
- }
-
- protected void checkURLConnect(URL var1, URL var2, int var3) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalConnectTarget, var3 + 1)) {
- this.checkURLConnectHelper(var1, var2, var3 + 1);
- }
- }
-
- private void checkURLConnectHelper(URL var1, URL var2, int var3) {
- String var4 = var2.getProtocol();
- String var5 = null;
- ClassLoader var6 = ((SecurityManager)this).currentClassLoader();
- if (var6 != null) {
- var5 = CastanetChannelInfo.marimbaGetHost(var6);
- }
-
- if (var5 == null) {
- var5 = var1.getHost();
- }
-
- this.checkConnect(var5, var2.getHost(), var3 + 1);
- String var7 = var1.getProtocol();
- if (!var4.equals("http") && !var4.equals("https") && !var4.equals("castanet") && !var4.equals("ftp") && !var4.equals("gopher")) {
- if (var4.equals("file") && var7.equals("file")) {
- String var8 = unEscapeFileSpecificChars(var2.getFile());
- this.checkRead(var8, var1, var3 + 1);
- } else {
- throw new AppletSecurityException("protocol", var4);
- }
- } else if (!var7.equals("http") && !var7.equals("https") && !var7.equals("castanet")) {
- throw new AppletSecurityException("protocol", "Cannot access '" + var4 + "' from a codebase protocol of '" + var7 + "'");
- }
- }
-
- protected void checkMulticast(InetAddress var1, int var2) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalMulticastTarget, var2 + 1)) {
- throw new AppletSecurityException(UniversalMulticastTarget, "can not access IP multicast");
- }
- }
-
- protected void checkMulticast(InetAddress var1, byte var2, int var3) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalMulticastTarget, var3 + 1)) {
- throw new AppletSecurityException(UniversalMulticastTarget, "can not access IP multicast");
- }
- }
-
- public boolean checkTopLevelWindow(Object var1) {
- this.marimbaCheckTopLevelWindow(var1);
- return privMgr == null || privMgr.isPrivilegeEnabled(UniversalTopLevelWindowTarget, 2);
- }
-
- public void checkPackageAccess(String var1) {
- if (((SecurityManager)this).inClassLoader()) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalPackageAccessTarget, 2)) {
- for(int var2 = var1.indexOf(46); var2 > 0; var2 = var1.indexOf(46, var2 + 1)) {
- String var3 = var1.substring(0, var2);
- if (Boolean.getBoolean("package.restrict.access." + var3)) {
- throw new AppletSecurityException(UniversalPackageAccessTarget, "checkpackageaccess", var1);
- }
- }
-
- }
- }
- }
-
- public void checkPackageDefinition(String var1) {
- if (((SecurityManager)this).inClassLoader()) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalPackageDefinitionTarget, 2)) {
- for(int var2 = var1.indexOf(46); var2 > 0; var2 = var1.indexOf(46, var2 + 1)) {
- String var3 = var1.substring(0, var2);
- if (Boolean.getBoolean("package.restrict.definition." + var3)) {
- throw new AppletSecurityException(UniversalPackageDefinitionTarget, "cannot define package:" + var1);
- }
- }
-
- }
- }
- }
-
- public void checkSetFactory() {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalSetFactoryTarget, 2)) {
- throw new AppletSecurityException(UniversalSetFactoryTarget, "cannot set factory");
- }
- }
-
- public void checkMemberAccess(Class var1, int var2) {
- this.checkMemberAccess(var1, var2, 2);
- }
-
- protected void checkMemberAccess(Class var1, int var2, int var3) {
- if (var2 != 0) {
- if (privMgr != null) {
- if (!privMgr.isPrivilegeEnabled(UniversalMemberAccessTarget, var3 + 1)) {
- throw new AppletSecurityException(UniversalMemberAccessTarget, "member access");
- }
- }
- }
- }
-
- public void checkPrintJobAccess() {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalPrintJobAccessTarget, 2)) {
- throw new AppletSecurityException(UniversalPrintJobAccessTarget, "checkgetprintjob");
- }
- }
-
- public void checkSystemClipboardAccess() {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalSystemClipboardAccessTarget, 2)) {
- throw new AppletSecurityException(UniversalSystemClipboardAccessTarget, "checksystemclipboardaccess");
- }
- }
-
- public void checkAwtEventQueueAccess() {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalAwtEventQueueAccessTarget, 2)) {
- throw new AppletSecurityException(UniversalAwtEventQueueAccessTarget, "checkawteventqueueaccess");
- }
- }
-
- public void checkSecurityAccess(String var1) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalSecurityProviderTarget, 2)) {
- throw new AppletSecurityException(UniversalSecurityProviderTarget, "security operation: " + var1);
- }
- }
-
- protected void checkCreateSecurityManagerAccess(int var1) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(CreateSecurityManagerTarget, var1 + 1)) {
- throw new AppletSecurityException(CreateSecurityManagerTarget, "can't create SecurityManager");
- }
- }
-
- protected void checkResourceAccess(String var1, int var2) {
- int var3 = var1.lastIndexOf(".");
- if (var3 >= 0) {
- String var4 = var1.substring(var3);
- if (resourceExtTable.get(var4) != null) {
- return;
- }
- }
-
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalPropertyReadTarget, var2 + 1)) {
- throw new AppletSecurityException(UniversalPropertyReadTarget, "checkResourceAccess");
- }
- }
-
- public static void addToResourceExtensionTable(String var0) {
- if (resourceExtTable.get(var0) == null) {
- if (privMgr != null && !privMgr.isPrivilegeEnabled(UniversalPropertyWriteTarget, 1)) {
- throw new AppletSecurityException(UniversalPropertyWriteTarget, "checkResourceAccess");
- } else {
- resourceExtTable.put(var0, Boolean.TRUE);
- }
- }
- }
-
- private static void loadResourceExtTable() {
- Boolean var0 = Boolean.TRUE;
- resourceExtTable.put(".txt", var0);
- resourceExtTable.put(".text", var0);
- resourceExtTable.put(".html", var0);
- resourceExtTable.put(".htm", var0);
- resourceExtTable.put(".rtf", var0);
- resourceExtTable.put(".pdf", var0);
- resourceExtTable.put(".tex", var0);
- resourceExtTable.put(".latex", var0);
- resourceExtTable.put(".dvi", var0);
- resourceExtTable.put(".texi", var0);
- resourceExtTable.put(".texi", var0);
- resourceExtTable.put(".vcf", var0);
- resourceExtTable.put(".gif", var0);
- resourceExtTable.put(".jpeg", var0);
- resourceExtTable.put(".jpg", var0);
- resourceExtTable.put(".jpe", var0);
- resourceExtTable.put(".jfif", var0);
- resourceExtTable.put(".pjpeg", var0);
- resourceExtTable.put(".pjp", var0);
- resourceExtTable.put(".tiff", var0);
- resourceExtTable.put(".tif", var0);
- resourceExtTable.put(".ras", var0);
- resourceExtTable.put(".xbm", var0);
- resourceExtTable.put(".xpm", var0);
- resourceExtTable.put(".xwd", var0);
- resourceExtTable.put(".pnm", var0);
- resourceExtTable.put(".pbm", var0);
- resourceExtTable.put(".pgm", var0);
- resourceExtTable.put(".ppm", var0);
- resourceExtTable.put(".rgb", var0);
- resourceExtTable.put(".bmp", var0);
- resourceExtTable.put(".pcd", var0);
- resourceExtTable.put(".png", var0);
- resourceExtTable.put(".ief", var0);
- resourceExtTable.put(".fif", var0);
- resourceExtTable.put(".au", var0);
- resourceExtTable.put(".snd", var0);
- resourceExtTable.put(".aif", var0);
- resourceExtTable.put(".aiff", var0);
- resourceExtTable.put(".aifc", var0);
- resourceExtTable.put(".wav", var0);
- resourceExtTable.put(".mp2", var0);
- resourceExtTable.put(".mpa", var0);
- resourceExtTable.put(".abs", var0);
- resourceExtTable.put(".mpega", var0);
- resourceExtTable.put(".ra", var0);
- resourceExtTable.put(".ram", var0);
- resourceExtTable.put(".mpeg", var0);
- resourceExtTable.put(".mpg", var0);
- resourceExtTable.put(".mpe", var0);
- resourceExtTable.put(".mpv", var0);
- resourceExtTable.put(".vbs", var0);
- resourceExtTable.put(".mpegv", var0);
- resourceExtTable.put(".mpv2", var0);
- resourceExtTable.put(".mpv2v", var0);
- resourceExtTable.put(".qt", var0);
- resourceExtTable.put(".mov", var0);
- resourceExtTable.put(".moov", var0);
- resourceExtTable.put(".avi", var0);
- resourceExtTable.put(".hqx", var0);
- resourceExtTable.put(".sit", var0);
- resourceExtTable.put(".ai", var0);
- resourceExtTable.put(".eps", var0);
- resourceExtTable.put(".ps", var0);
- resourceExtTable.put(".pac", var0);
- resourceExtTable.put(".jsc", var0);
- resourceExtTable.put(".doc", var0);
- resourceExtTable.put(".dot", var0);
- resourceExtTable.put(".xls", var0);
- resourceExtTable.put(".xlt", var0);
- resourceExtTable.put(".xlm", var0);
- resourceExtTable.put(".xld", var0);
- resourceExtTable.put(".xla", var0);
- resourceExtTable.put(".xlc", var0);
- resourceExtTable.put(".xlw", var0);
- resourceExtTable.put(".xll", var0);
- resourceExtTable.put(".mdb", var0);
- resourceExtTable.put(".mda", var0);
- resourceExtTable.put(".mde", var0);
- resourceExtTable.put(".ppt", var0);
- resourceExtTable.put(".pot", var0);
- resourceExtTable.put(".ppa", var0);
- resourceExtTable.put(".pps", var0);
- resourceExtTable.put(".pwz", var0);
- resourceExtTable.put(".scd", var0);
- resourceExtTable.put(".sch", var0);
- resourceExtTable.put(".sc2", var0);
- resourceExtTable.put(".lwp", var0);
- resourceExtTable.put(".sam", var0);
- resourceExtTable.put(".123", var0);
- resourceExtTable.put(".wk4", var0);
- resourceExtTable.put(".wk3", var0);
- resourceExtTable.put(".wk1", var0);
- resourceExtTable.put(".apr", var0);
- resourceExtTable.put(".vew", var0);
- resourceExtTable.put(".prz", var0);
- resourceExtTable.put(".pre", var0);
- resourceExtTable.put(".or3", var0);
- resourceExtTable.put(".or2", var0);
- resourceExtTable.put(".org", var0);
- resourceExtTable.put(".scm", var0);
- resourceExtTable.put(".wpd", var0);
- resourceExtTable.put(".wp6", var0);
- resourceExtTable.put(".t", var0);
- resourceExtTable.put(".tr", var0);
- resourceExtTable.put(".roff", var0);
- resourceExtTable.put(".me", var0);
- resourceExtTable.put(".ms", var0);
- resourceExtTable.put(".man", var0);
- resourceExtTable.put(".movie", var0);
- resourceExtTable.put(".properties", var0);
- resourceExtTable.put(".ser", var0);
- }
-
- protected void unknownLoaderException(String var1) {
- throw new SecurityException("unknown class loader type.unable to check for " + var1);
- }
-
- public void debug(String var1) {
- if (debug) {
- System.err.println(var1);
- }
-
- }
-
- protected boolean isPrivilegeEnabled(String var1, int var2) {
- if (privMgr != null) {
- Target var3 = Target.findTarget(var1);
- return var3 == null ? false : privMgr.isPrivilegeEnabled(var3, var2 + 1);
- } else {
- return true;
- }
- }
-
- protected boolean securityCheckScopePermission(int var1) {
- return privMgr != null ? privMgr.isPrivilegeEnabled(SuperUserTarget, var1 + 1) : true;
- }
-
- protected Object securitySetScopePermission(int var1) {
- return privMgr != null ? privMgr.setScopePrivilegeAssistant(var1 + 1) : null;
- }
-
- protected Object securitySetScopePermission(int var1, String var2) {
- return privMgr != null ? privMgr.setScopePrivilegeAssistant(var1 + 1, var2) : null;
- }
-
- public boolean checkMatchPrincipalAlways(int var1) {
- ClassLoader var2 = ((SecurityManager)this).currentClassLoader();
- return var2 == null ? true : var2.checkMatchPrincipalAlways(var1 + 1);
- }
-
- public boolean isSecurePrincipalFromStack(Object var1) {
- if (privMgr == null) {
- return false;
- } else if (this.checkTopLevelWindow(var1)) {
- return true;
- } else {
- Class[] var2 = ((SecurityManager)this).getClassContext();
- return privMgr.isSecurePrincipalFromStack(var2);
- }
- }
-
- public String getNonSystemPrincipalFromStack(Object var1) {
- if (privMgr == null) {
- return null;
- } else if (this.checkTopLevelWindow(var1)) {
- return null;
- } else {
- Class[] var2 = ((SecurityManager)this).getClassContext();
- return privMgr.getNonSystemPrincipalFromStack(var2);
- }
- }
-
- private boolean marimbaCheckThreadGroup(ThreadGroup var1) {
- ClassLoader var2 = ((SecurityManager)this).currentClassLoader();
- return var2 == null ? false : CastanetChannelInfo.checkThreadGroup(var2, var1);
- }
-
- private void marimbaCheckTopLevelWindow(Object var1) {
- ClassLoader var2 = ((SecurityManager)this).currentClassLoader();
- CastanetChannelInfo.checkTopLevelWindow(var2, var1);
- }
-
- private boolean marimbaCheckAccess(String var1, boolean var2) {
- boolean var3 = false;
- PrivilegeManager var4 = PrivilegeManager.getPrivilegeManager();
- if (var4 != null) {
- try {
- Target var5 = Target.findTarget("MarimbaAppContextTarget");
- if (var5 != null) {
- var4.checkPrivilegeEnabled(var5);
- var3 = true;
- }
- } catch (ForbiddenTargetException var6) {
- var3 = false;
- }
- }
-
- ClassLoader var7 = ((SecurityManager)this).currentClassLoader();
- return !var3 && var7 == null ? false : CastanetChannelInfo.marimbaCheckAccess(var1, var7, var2, var3);
- }
-
- public ClassLoader getCurrentClassLoader() {
- PrivilegeManager var1 = PrivilegeManager.getPrivilegeManager();
- Target var2 = Target.findTarget("MarimbaAppContextTarget");
- var1.checkPrivilegeEnabled(var2);
- return ((SecurityManager)this).currentClassLoader();
- }
- }
-