Makefile.in: Rebuilt.
* Makefile.in: Rebuilt. * Makefile.am (core_java_source_files): Added RuntimePermission.java. * java/lang/RuntimePermission.java: Imported from Classpath. * java/lang/Thread.java (getContextClassLoader): Now synchronized. Added security code. (setContextClassLoader): Likewise. From-SVN: r37772
This commit is contained in:
parent
2721806e98
commit
0cf17a8051
8 changed files with 241 additions and 37 deletions
|
@ -1,5 +1,13 @@
|
||||||
2000-11-26 Tom Tromey <tromey@cygnus.com>
|
2000-11-26 Tom Tromey <tromey@cygnus.com>
|
||||||
|
|
||||||
|
* Makefile.in: Rebuilt.
|
||||||
|
* Makefile.am (core_java_source_files): Added
|
||||||
|
RuntimePermission.java.
|
||||||
|
* java/lang/RuntimePermission.java: Imported from Classpath.
|
||||||
|
* java/lang/Thread.java (getContextClassLoader): Now
|
||||||
|
synchronized. Added security code.
|
||||||
|
(setContextClassLoader): Likewise.
|
||||||
|
|
||||||
* prims.cc (_Jv_NewObjectArray): Use const_cast to initialize
|
* prims.cc (_Jv_NewObjectArray): Use const_cast to initialize
|
||||||
length field of array.
|
length field of array.
|
||||||
(_Jv_NewPrimArray): Likewise.
|
(_Jv_NewPrimArray): Likewise.
|
||||||
|
|
|
@ -816,6 +816,7 @@ java/lang/Process.java \
|
||||||
java/lang/Runnable.java \
|
java/lang/Runnable.java \
|
||||||
java/lang/Runtime.java \
|
java/lang/Runtime.java \
|
||||||
java/lang/RuntimeException.java \
|
java/lang/RuntimeException.java \
|
||||||
|
java/lang/RuntimePermission.java \
|
||||||
java/lang/SecurityException.java \
|
java/lang/SecurityException.java \
|
||||||
java/lang/SecurityManager.java \
|
java/lang/SecurityManager.java \
|
||||||
java/lang/Short.java \
|
java/lang/Short.java \
|
||||||
|
@ -941,6 +942,7 @@ java/util/EventListener.java \
|
||||||
java/util/EventObject.java \
|
java/util/EventObject.java \
|
||||||
java/util/GregorianCalendar.java \
|
java/util/GregorianCalendar.java \
|
||||||
java/util/HashMap.java \
|
java/util/HashMap.java \
|
||||||
|
java/util/HashSet.java \
|
||||||
java/util/Hashtable.java \
|
java/util/Hashtable.java \
|
||||||
java/util/Iterator.java \
|
java/util/Iterator.java \
|
||||||
java/util/LinkedList.java \
|
java/util/LinkedList.java \
|
||||||
|
@ -968,6 +970,8 @@ java/util/TimeZone.java \
|
||||||
java/util/Timer.java \
|
java/util/Timer.java \
|
||||||
java/util/TimerTask.java \
|
java/util/TimerTask.java \
|
||||||
java/util/TooManyListenersException.java \
|
java/util/TooManyListenersException.java \
|
||||||
|
java/util/TreeMap.java \
|
||||||
|
java/util/TreeSet.java \
|
||||||
java/util/Vector.java
|
java/util/Vector.java
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -120,29 +120,43 @@ here = @here@
|
||||||
libgcj_basedir = @libgcj_basedir@
|
libgcj_basedir = @libgcj_basedir@
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = foreign no-installinfo
|
AUTOMAKE_OPTIONS = foreign no-installinfo
|
||||||
@TESTSUBDIR_TRUE@SUBDIRS = @TESTSUBDIR_TRUE@$(DIRLTDL) testsuite gcj include
|
@TESTSUBDIR_TRUE@SUBDIRS = \
|
||||||
@TESTSUBDIR_FALSE@SUBDIRS = @TESTSUBDIR_FALSE@$(DIRLTDL) gcj include
|
@TESTSUBDIR_TRUE@$(DIRLTDL) testsuite gcj include
|
||||||
@USE_LIBDIR_TRUE@toolexeclibdir = @USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR)
|
@TESTSUBDIR_FALSE@SUBDIRS = \
|
||||||
@USE_LIBDIR_FALSE@toolexeclibdir = @USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR)
|
@TESTSUBDIR_FALSE@$(DIRLTDL) gcj include
|
||||||
@USE_LIBDIR_FALSE@toolexecdir = @USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias)
|
@USE_LIBDIR_TRUE@toolexeclibdir = \
|
||||||
@NO_X_TRUE@cond_x_ltlibrary =
|
@USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR)
|
||||||
@NO_X_FALSE@cond_x_ltlibrary = @NO_X_FALSE@libgcjx.la
|
@USE_LIBDIR_FALSE@toolexeclibdir = \
|
||||||
|
@USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR)
|
||||||
|
@USE_LIBDIR_FALSE@toolexecdir = \
|
||||||
|
@USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias)
|
||||||
|
@NO_X_TRUE@cond_x_ltlibrary = \
|
||||||
|
@NO_X_FALSE@cond_x_ltlibrary = \
|
||||||
|
@NO_X_FALSE@libgcjx.la
|
||||||
|
|
||||||
toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary)
|
toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary)
|
||||||
toolexeclib_DATA = libgcj.spec
|
toolexeclib_DATA = libgcj.spec
|
||||||
data_DATA = libgcj.zip
|
data_DATA = libgcj.zip
|
||||||
|
|
||||||
@NEEDS_DATA_START_TRUE@toolexeclib_LIBRARIES = @NEEDS_DATA_START_TRUE@libgcjdata.a
|
@NEEDS_DATA_START_TRUE@toolexeclib_LIBRARIES = \
|
||||||
@NEEDS_DATA_START_TRUE@libgcjdata_a_SOURCES = @NEEDS_DATA_START_TRUE@libgcjdata.c
|
@NEEDS_DATA_START_TRUE@libgcjdata.a
|
||||||
|
@NEEDS_DATA_START_TRUE@libgcjdata_a_SOURCES = \
|
||||||
|
@NEEDS_DATA_START_TRUE@libgcjdata.c
|
||||||
|
|
||||||
@NATIVE_TRUE@bin_PROGRAMS = @NATIVE_TRUE@jv-convert gij
|
@NATIVE_TRUE@bin_PROGRAMS = \
|
||||||
|
@NATIVE_TRUE@jv-convert gij
|
||||||
|
|
||||||
bin_SCRIPTS = addr2name.awk
|
bin_SCRIPTS = addr2name.awk
|
||||||
@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT)
|
@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = \
|
||||||
@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_FALSE@zip
|
@CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT)
|
||||||
@CANADIAN_FALSE@ZIP = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT)
|
@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = \
|
||||||
@CANADIAN_TRUE@GCJH = @CANADIAN_TRUE@gcjh
|
@CANADIAN_TRUE@@NULL_TARGET_FALSE@zip
|
||||||
@CANADIAN_FALSE@GCJH = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT)
|
@CANADIAN_FALSE@ZIP = \
|
||||||
|
@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/zip/zip$(EXEEXT)
|
||||||
|
@CANADIAN_TRUE@GCJH = \
|
||||||
|
@CANADIAN_TRUE@gcjh
|
||||||
|
@CANADIAN_FALSE@GCJH = \
|
||||||
|
@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT)
|
||||||
|
|
||||||
GCJCOMPILE = $(LIBTOOL) --tag=GCJ --mode=compile $(GCJ) -fassume-compiled -fclasspath=$(here) -L$(here) $(JC1FLAGS) -MD -MT $@ -MF $(@:.lo=.d) -c
|
GCJCOMPILE = $(LIBTOOL) --tag=GCJ --mode=compile $(GCJ) -fassume-compiled -fclasspath=$(here) -L$(here) $(JC1FLAGS) -MD -MT $@ -MF $(@:.lo=.d) -c
|
||||||
GCJLINK = $(LIBTOOL) --mode=link $(GCJ) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@
|
GCJLINK = $(LIBTOOL) --mode=link $(GCJ) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@
|
||||||
|
@ -157,8 +171,10 @@ AM_CXXFLAGS = -fno-rtti -fvtable-thunks -fasynchronous-exceptions \
|
||||||
-fdollars-in-identifiers \
|
-fdollars-in-identifiers \
|
||||||
@LIBGCJ_CXXFLAGS@ @EXCEPTIONSPEC@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE
|
@LIBGCJ_CXXFLAGS@ @EXCEPTIONSPEC@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE
|
||||||
|
|
||||||
@USING_GCC_TRUE@AM_CFLAGS = @USING_GCC_TRUE@@LIBGCJ_CFLAGS@ $(WARNINGS)
|
@USING_GCC_TRUE@AM_CFLAGS = \
|
||||||
@USING_GCC_FALSE@AM_CFLAGS = @USING_GCC_FALSE@@LIBGCJ_CFLAGS@
|
@USING_GCC_TRUE@@LIBGCJ_CFLAGS@ $(WARNINGS)
|
||||||
|
@USING_GCC_FALSE@AM_CFLAGS = \
|
||||||
|
@USING_GCC_FALSE@@LIBGCJ_CFLAGS@
|
||||||
|
|
||||||
JCFLAGS = -g
|
JCFLAGS = -g
|
||||||
JC1FLAGS = -g @LIBGCJ_JAVAFLAGS@
|
JC1FLAGS = -g @LIBGCJ_JAVAFLAGS@
|
||||||
|
@ -225,7 +241,8 @@ extra_headers = java/lang/Object.h java/lang/Class.h
|
||||||
|
|
||||||
NM = nm
|
NM = nm
|
||||||
|
|
||||||
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = @NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS
|
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = \
|
||||||
|
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS
|
||||||
|
|
||||||
CONVERT_DIR = gnu/gcj/convert
|
CONVERT_DIR = gnu/gcj/convert
|
||||||
|
|
||||||
|
@ -567,6 +584,7 @@ java/lang/Process.java \
|
||||||
java/lang/Runnable.java \
|
java/lang/Runnable.java \
|
||||||
java/lang/Runtime.java \
|
java/lang/Runtime.java \
|
||||||
java/lang/RuntimeException.java \
|
java/lang/RuntimeException.java \
|
||||||
|
java/lang/RuntimePermission.java \
|
||||||
java/lang/SecurityException.java \
|
java/lang/SecurityException.java \
|
||||||
java/lang/SecurityManager.java \
|
java/lang/SecurityManager.java \
|
||||||
java/lang/Short.java \
|
java/lang/Short.java \
|
||||||
|
@ -692,6 +710,7 @@ java/util/EventListener.java \
|
||||||
java/util/EventObject.java \
|
java/util/EventObject.java \
|
||||||
java/util/GregorianCalendar.java \
|
java/util/GregorianCalendar.java \
|
||||||
java/util/HashMap.java \
|
java/util/HashMap.java \
|
||||||
|
java/util/HashSet.java \
|
||||||
java/util/Hashtable.java \
|
java/util/Hashtable.java \
|
||||||
java/util/Iterator.java \
|
java/util/Iterator.java \
|
||||||
java/util/LinkedList.java \
|
java/util/LinkedList.java \
|
||||||
|
@ -719,6 +738,8 @@ java/util/TimeZone.java \
|
||||||
java/util/Timer.java \
|
java/util/Timer.java \
|
||||||
java/util/TimerTask.java \
|
java/util/TimerTask.java \
|
||||||
java/util/TooManyListenersException.java \
|
java/util/TooManyListenersException.java \
|
||||||
|
java/util/TreeMap.java \
|
||||||
|
java/util/TreeSet.java \
|
||||||
java/util/Vector.java
|
java/util/Vector.java
|
||||||
|
|
||||||
|
|
||||||
|
@ -1167,7 +1188,7 @@ libgcj-test.spec.in libgcj.spec.in
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
|
||||||
TAR = gtar
|
TAR = tar
|
||||||
GZIP_ENV = --best
|
GZIP_ENV = --best
|
||||||
DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
|
DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
|
||||||
DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||||
|
@ -1497,10 +1518,10 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||||
.deps/java/lang/NumberFormatException.P .deps/java/lang/Object.P \
|
.deps/java/lang/NumberFormatException.P .deps/java/lang/Object.P \
|
||||||
.deps/java/lang/OutOfMemoryError.P .deps/java/lang/Process.P \
|
.deps/java/lang/OutOfMemoryError.P .deps/java/lang/Process.P \
|
||||||
.deps/java/lang/Runnable.P .deps/java/lang/Runtime.P \
|
.deps/java/lang/Runnable.P .deps/java/lang/Runtime.P \
|
||||||
.deps/java/lang/RuntimeException.P .deps/java/lang/SecurityException.P \
|
.deps/java/lang/RuntimeException.P .deps/java/lang/RuntimePermission.P \
|
||||||
.deps/java/lang/SecurityManager.P .deps/java/lang/Short.P \
|
.deps/java/lang/SecurityException.P .deps/java/lang/SecurityManager.P \
|
||||||
.deps/java/lang/StackOverflowError.P .deps/java/lang/String.P \
|
.deps/java/lang/Short.P .deps/java/lang/StackOverflowError.P \
|
||||||
.deps/java/lang/StringBuffer.P \
|
.deps/java/lang/String.P .deps/java/lang/StringBuffer.P \
|
||||||
.deps/java/lang/StringIndexOutOfBoundsException.P \
|
.deps/java/lang/StringIndexOutOfBoundsException.P \
|
||||||
.deps/java/lang/System.P .deps/java/lang/Thread.P \
|
.deps/java/lang/System.P .deps/java/lang/Thread.P \
|
||||||
.deps/java/lang/ThreadDeath.P .deps/java/lang/ThreadGroup.P \
|
.deps/java/lang/ThreadDeath.P .deps/java/lang/ThreadGroup.P \
|
||||||
|
@ -1647,11 +1668,11 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||||
.deps/java/util/EmptyStackException.P .deps/java/util/Enumeration.P \
|
.deps/java/util/EmptyStackException.P .deps/java/util/Enumeration.P \
|
||||||
.deps/java/util/EventListener.P .deps/java/util/EventObject.P \
|
.deps/java/util/EventListener.P .deps/java/util/EventObject.P \
|
||||||
.deps/java/util/GregorianCalendar.P .deps/java/util/HashMap.P \
|
.deps/java/util/GregorianCalendar.P .deps/java/util/HashMap.P \
|
||||||
.deps/java/util/Hashtable.P .deps/java/util/Iterator.P \
|
.deps/java/util/HashSet.P .deps/java/util/Hashtable.P \
|
||||||
.deps/java/util/LinkedList.P .deps/java/util/List.P \
|
.deps/java/util/Iterator.P .deps/java/util/LinkedList.P \
|
||||||
.deps/java/util/ListIterator.P .deps/java/util/ListResourceBundle.P \
|
.deps/java/util/List.P .deps/java/util/ListIterator.P \
|
||||||
.deps/java/util/Locale.P .deps/java/util/Map.P \
|
.deps/java/util/ListResourceBundle.P .deps/java/util/Locale.P \
|
||||||
.deps/java/util/MissingResourceException.P \
|
.deps/java/util/Map.P .deps/java/util/MissingResourceException.P \
|
||||||
.deps/java/util/NoSuchElementException.P .deps/java/util/Observable.P \
|
.deps/java/util/NoSuchElementException.P .deps/java/util/Observable.P \
|
||||||
.deps/java/util/Observer.P .deps/java/util/Properties.P \
|
.deps/java/util/Observer.P .deps/java/util/Properties.P \
|
||||||
.deps/java/util/PropertyPermission.P \
|
.deps/java/util/PropertyPermission.P \
|
||||||
|
@ -1661,7 +1682,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
|
||||||
.deps/java/util/SortedSet.P .deps/java/util/Stack.P \
|
.deps/java/util/SortedSet.P .deps/java/util/Stack.P \
|
||||||
.deps/java/util/StringTokenizer.P .deps/java/util/TimeZone.P \
|
.deps/java/util/StringTokenizer.P .deps/java/util/TimeZone.P \
|
||||||
.deps/java/util/Timer.P .deps/java/util/TimerTask.P \
|
.deps/java/util/Timer.P .deps/java/util/TimerTask.P \
|
||||||
.deps/java/util/TooManyListenersException.P .deps/java/util/Vector.P \
|
.deps/java/util/TooManyListenersException.P .deps/java/util/TreeMap.P \
|
||||||
|
.deps/java/util/TreeSet.P .deps/java/util/Vector.P \
|
||||||
.deps/java/util/jar/Attributes.P .deps/java/util/jar/JarEntry.P \
|
.deps/java/util/jar/Attributes.P .deps/java/util/jar/JarEntry.P \
|
||||||
.deps/java/util/jar/JarException.P .deps/java/util/jar/JarFile.P \
|
.deps/java/util/jar/JarException.P .deps/java/util/jar/JarFile.P \
|
||||||
.deps/java/util/jar/JarInputStream.P \
|
.deps/java/util/jar/JarInputStream.P \
|
||||||
|
@ -2058,7 +2080,7 @@ distdir: $(DISTFILES)
|
||||||
@for file in $(DISTFILES); do \
|
@for file in $(DISTFILES); do \
|
||||||
d=$(srcdir); \
|
d=$(srcdir); \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
cp -pr $$/$$file $(distdir)/$$file; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f $(distdir)/$$file \
|
||||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||||
|
|
|
@ -88,6 +88,7 @@ GCTESTSPEC = @GCTESTSPEC@
|
||||||
INCLTDL = @INCLTDL@
|
INCLTDL = @INCLTDL@
|
||||||
JC1GCSPEC = @JC1GCSPEC@
|
JC1GCSPEC = @JC1GCSPEC@
|
||||||
LIBDATASTARTSPEC = @LIBDATASTARTSPEC@
|
LIBDATASTARTSPEC = @LIBDATASTARTSPEC@
|
||||||
|
LIBGCJDEBUG = @LIBGCJDEBUG@
|
||||||
LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
|
LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
|
||||||
LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
|
LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
|
||||||
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
|
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
|
||||||
|
|
|
@ -88,6 +88,7 @@ GCTESTSPEC = @GCTESTSPEC@
|
||||||
INCLTDL = @INCLTDL@
|
INCLTDL = @INCLTDL@
|
||||||
JC1GCSPEC = @JC1GCSPEC@
|
JC1GCSPEC = @JC1GCSPEC@
|
||||||
LIBDATASTARTSPEC = @LIBDATASTARTSPEC@
|
LIBDATASTARTSPEC = @LIBDATASTARTSPEC@
|
||||||
|
LIBGCJDEBUG = @LIBGCJDEBUG@
|
||||||
LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
|
LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
|
||||||
LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
|
LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
|
||||||
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
|
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
|
||||||
|
|
|
@ -426,4 +426,3 @@ public abstract class ClassLoader {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
153
libjava/java/lang/RuntimePermission.java
Normal file
153
libjava/java/lang/RuntimePermission.java
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
/* RuntimePermission.java
|
||||||
|
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
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
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
02111-1307 USA.
|
||||||
|
|
||||||
|
As a special exception, if you link this library with other files to
|
||||||
|
produce an executable, this library does not by itself cause the
|
||||||
|
resulting executable to be covered by the GNU General Public License.
|
||||||
|
This exception does not however invalidate any other reasons why the
|
||||||
|
executable file might be covered by the GNU General Public License. */
|
||||||
|
|
||||||
|
|
||||||
|
package java.lang;
|
||||||
|
|
||||||
|
import java.security.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
|
* name if following a period or by itself.
|
||||||
|
*
|
||||||
|
* <table border=1>
|
||||||
|
* <tr><th>Valid names</th><th>Invalid names</th></tr>
|
||||||
|
* <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>
|
||||||
|
* <table border=1>
|
||||||
|
* <tr><th>Permission Name</th><th>Permission Allows</th></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>createClassLoader</code></td>
|
||||||
|
* <td>creation of a class loader</td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>getClassLoader</code></td>
|
||||||
|
* <td>retrieval of the class loader for the calling class</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>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>setSecurityManager</code></td>
|
||||||
|
* <td>allows the application to replace the security manager with
|
||||||
|
* another, possibly less restrictive one.</td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>createSecurityManager</code></td>
|
||||||
|
* <td>allows the application to create a new security manager</td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>exitVM</code></td>
|
||||||
|
* <td>allows the application to halt the virtual machine</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>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>setIO</code></td>
|
||||||
|
* <td>allows the application to set System.out, System.in, and
|
||||||
|
* System.err</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>
|
||||||
|
* <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>
|
||||||
|
* <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>,
|
||||||
|
* <code>stop</code>, and <code>suspend</code> of the class
|
||||||
|
* <code>ThreadGroup</code></td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>getProtectionDomain</code></td>
|
||||||
|
* <td></td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>readFileDescriptor</code></td>
|
||||||
|
* <td></td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>writeFileDescriptor</code</td>
|
||||||
|
* <td></td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>loadLibrary.{library name}</code></td>
|
||||||
|
* <td></td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>accessClassInPackage.{package name}</code></td>
|
||||||
|
* <td></td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>defineClassInPackage.{package name}</code></td>
|
||||||
|
* <td></td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>accessDeclaredMembers</code></td>
|
||||||
|
* <td></td></tr>
|
||||||
|
* <tr>
|
||||||
|
* <td><code>queuePrintJob</code></td>
|
||||||
|
* <td></td></tr>
|
||||||
|
* </table>
|
||||||
|
*
|
||||||
|
* @since JDK 1.2
|
||||||
|
*
|
||||||
|
* @author Brian Jones
|
||||||
|
*/
|
||||||
|
public class RuntimePermission extends java.security.BasicPermission
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param permissionName the name of the granted permission
|
||||||
|
*
|
||||||
|
* @throws IllegalArgumentException thrown if the name contains an invalid
|
||||||
|
* wildcard character
|
||||||
|
*/
|
||||||
|
public RuntimePermission(String permissionName)
|
||||||
|
{
|
||||||
|
this(permissionName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
public RuntimePermission(String permissionName, String actions)
|
||||||
|
{
|
||||||
|
super(permissionName, actions);
|
||||||
|
}
|
||||||
|
}
|
|
@ -145,21 +145,37 @@ public class Thread implements Runnable
|
||||||
daemon_flag = status;
|
daemon_flag = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ClassLoader getContextClassLoader()
|
public synchronized ClassLoader getContextClassLoader()
|
||||||
{
|
{
|
||||||
if (context_class_loader == null)
|
if (context_class_loader == null)
|
||||||
|
context_class_loader = ClassLoader.getSystemClassLoader ();
|
||||||
|
|
||||||
|
SecurityManager s = System.getSecurityManager();
|
||||||
|
// FIXME: we can't currently find the caller's class loader.
|
||||||
|
ClassLoader callers = null;
|
||||||
|
if (s != null && callers != null)
|
||||||
{
|
{
|
||||||
context_class_loader = ClassLoader.getSystemClassLoader ();
|
// See if the caller's class loader is the same as or an
|
||||||
return context_class_loader;
|
// ancestor of this thread's class loader.
|
||||||
|
while (callers != null && callers != context_class_loader)
|
||||||
|
{
|
||||||
|
// FIXME: should use some internal version of getParent
|
||||||
|
// that avoids security checks.
|
||||||
|
callers = callers.getParent ();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (callers != context_class_loader)
|
||||||
|
s.checkPermission (new RuntimePermission ("getClassLoader"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Add security manager stuff here.
|
|
||||||
return context_class_loader;
|
return context_class_loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setContextClassLoader(ClassLoader cl)
|
public synchronized void setContextClassLoader(ClassLoader cl)
|
||||||
{
|
{
|
||||||
// FIXME: Add security manager stuff here.
|
SecurityManager s = System.getSecurityManager ();
|
||||||
|
if (s != null)
|
||||||
|
s.checkPermission (new RuntimePermission ("setContextClassLoader"));
|
||||||
context_class_loader = cl;
|
context_class_loader = cl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue