/*FreeMind - A Program for creating and viewing Mindmaps
*Copyright (C) 2000-2008 Christian Foltin and others.
*
*See COPYING for Details
*
*This program 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
*of the License, or (at your option) any later version.
*
*This program 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 General Public License for more details.
*
*You should have received a copy of the GNU General Public License
*along with this program; if not, write to the Free Software
*Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Created on 06.03.2008
*/
/*$Id: FreeMindSecurityManager.java,v 1.1.2.1 2008/03/14 21:15:22 christianfoltin Exp $*/
package freemind.main;
import java.io.FileDescriptor;
import java.net.InetAddress;
import java.security.Permission;
/**
* By default, everything is allowed. But you can install a different security
* controller once, until you install it again. Thus, the code executed in
* between is securely controlled by that different security manager. Moreover,
* only by double registering the manager is removed. So, no malicious code can
* remove the active security manager.
*
* @author foltin
*
*/
public final class FreeMindSecurityManager extends SecurityManager {
private SecurityManager mFinalSecurityManager = null;
public FreeMindSecurityManager() {
}
/**
* @param pFinalSecurityManager
* set twice the same to remove it.
*
*/
public void setFinalSecurityManager(SecurityManager pFinalSecurityManager) {
if (pFinalSecurityManager == mFinalSecurityManager) {
mFinalSecurityManager = null;
return;
}
if (mFinalSecurityManager != null) {
throw new SecurityException(
"There is a SecurityManager installed already.");
}
mFinalSecurityManager = pFinalSecurityManager;
}
public void checkAccept(String pHost, int pPort) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkAccept(pHost, pPort);
}
public void checkAccess(Thread pT) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkAccess(pT);
}
public void checkAccess(ThreadGroup pG) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkAccess(pG);
}
public void checkAwtEventQueueAccess() {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkAwtEventQueueAccess();
}
public void checkConnect(String pHost, int pPort, Object pContext) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkConnect(pHost, pPort, pContext);
}
public void checkConnect(String pHost, int pPort) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkConnect(pHost, pPort);
}
public void checkCreateClassLoader() {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkCreateClassLoader();
}
public void checkDelete(String pFile) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkDelete(pFile);
}
public void checkExec(String pCmd) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkExec(pCmd);
}
public void checkExit(int pStatus) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkExit(pStatus);
}
public void checkLink(String pLib) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkLink(pLib);
}
public void checkListen(int pPort) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkListen(pPort);
}
public void checkMemberAccess(Class arg0, int arg1) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkMemberAccess(arg0, arg1);
}
public void checkMulticast(InetAddress pMaddr, byte pTtl) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkMulticast(pMaddr, pTtl);
}
public void checkMulticast(InetAddress pMaddr) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkMulticast(pMaddr);
}
public void checkPackageAccess(String pPkg) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkPackageAccess(pPkg);
}
public void checkPackageDefinition(String pPkg) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkPackageDefinition(pPkg);
}
public void checkPermission(Permission pPerm, Object pContext) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkPermission(pPerm, pContext);
}
public void checkPermission(Permission pPerm) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkPermission(pPerm);
}
public void checkPrintJobAccess() {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkPrintJobAccess();
}
public void checkPropertiesAccess() {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkPropertiesAccess();
}
public void checkPropertyAccess(String pKey) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkPropertyAccess(pKey);
}
public void checkRead(FileDescriptor pFd) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkRead(pFd);
}
public void checkRead(String pFile, Object pContext) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkRead(pFile, pContext);
}
public void checkRead(String pFile) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkRead(pFile);
}
public void checkSecurityAccess(String pTarget) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkSecurityAccess(pTarget);
}
public void checkSetFactory() {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkSetFactory();
}
public void checkSystemClipboardAccess() {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkSystemClipboardAccess();
}
public boolean checkTopLevelWindow(Object pWindow) {
if (mFinalSecurityManager == null)
return true;
return mFinalSecurityManager.checkTopLevelWindow(pWindow);
}
public void checkWrite(FileDescriptor pFd) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkWrite(pFd);
}
public void checkWrite(String pFile) {
if (mFinalSecurityManager == null)
return;
mFinalSecurityManager.checkWrite(pFile);
}
public Object getSecurityContext() {
if (mFinalSecurityManager == null)
return super.getSecurityContext();
return mFinalSecurityManager.getSecurityContext();
}
}