diff options
author | Andrew Haley <aph@redhat.com> | 2005-02-16 18:51:25 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2005-02-16 18:51:25 +0000 |
commit | 019dac321407d9048889e41e400cdb6381924b77 (patch) | |
tree | 72b158fdd213cd3c9d1c1c7c1c11b22e22998ca2 /libjava/gnu | |
parent | d2638db6537096c72a93d820748b2b9d3bba88ab (diff) | |
download | gcc-019dac321407d9048889e41e400cdb6381924b77.zip gcc-019dac321407d9048889e41e400cdb6381924b77.tar.gz gcc-019dac321407d9048889e41e400cdb6381924b77.tar.bz2 |
Subject.java (doAsPrivileged): If acc is null, create a new AccessControlContext.
2005-02-08 Andrew Haley <aph@redhat.com>
* javax/security/auth/Subject.java (doAsPrivileged): If acc is
null, create a new AccessControlContext.
* java/security/SecureClassLoader.java (protectionDomainCache):
new field.
(defineClass): Create a new protection domain and add it to our
cache.
* java/rmi/server/UnicastRemoteObject.java (exportObject): Call
addStub() to keep track of the stub we've exported.
(unexportObject): Call deleteStub().
* java/rmi/server/RemoteObject.java (stubs): New field.
(addStub): New method.
(deleteStub): New method.
(toStub): Rewrite.
* java/lang/VMCompiler.java (loadSharedLibrary): Pass
true to findHelper (tryParents).
* gnu/gcj/runtime/SharedLibLoader.java (SharedLibLoader):
Likewise.
* java/net/URLClassLoader.java (SoURLLoader): Likewise.
* gnu/gcj/runtime/SharedLibHelper.java (SharedLibHelper): Pass
ProtectionDomain.
If tryParents is false, don't scan parent class loaders.
* java/security/Permissions.java (PermissionsHash.implies):
Iterate over the collection and invoke implies() on each
element.
From-SVN: r95111
Diffstat (limited to 'libjava/gnu')
-rw-r--r-- | libjava/gnu/gcj/runtime/SharedLibHelper.java | 21 | ||||
-rw-r--r-- | libjava/gnu/gcj/runtime/SharedLibLoader.java | 2 |
2 files changed, 16 insertions, 7 deletions
diff --git a/libjava/gnu/gcj/runtime/SharedLibHelper.java b/libjava/gnu/gcj/runtime/SharedLibHelper.java index a0bfe68..912c58e 100644 --- a/libjava/gnu/gcj/runtime/SharedLibHelper.java +++ b/libjava/gnu/gcj/runtime/SharedLibHelper.java @@ -28,13 +28,15 @@ public class SharedLibHelper * @parem flags passed to dlopen */ SharedLibHelper(String libname, ClassLoader parent, CodeSource source, - int flags) + ProtectionDomain domain, int flags) { // FIXME: ask security manager first. loader = parent; baseName = libname; - domain = new ProtectionDomain(source, - Policy.getPolicy().getPermissions(source)); + if (domain == null) + domain = new ProtectionDomain(source, + Policy.getPolicy().getPermissions(source)); + this.domain = domain; this.flags = flags; } @@ -65,7 +67,14 @@ public class SharedLibHelper } public static SharedLibHelper findHelper (ClassLoader loader, String libname, - CodeSource source) + CodeSource source, boolean tryParents) + { + return findHelper (loader, libname, source, null, tryParents); + } + + public static SharedLibHelper findHelper (ClassLoader loader, String libname, + CodeSource source, ProtectionDomain domain, + boolean tryParents) { synchronized (map) { @@ -95,7 +104,7 @@ public class SharedLibHelper return result; l = l.getParent(); } - while (l != null); + while (tryParents && l != null); } } } @@ -116,7 +125,7 @@ public class SharedLibHelper return null; } } - result = new SharedLibHelper(libname, loader, source, 0); + result = new SharedLibHelper(libname, loader, source, domain, 0); s.add(new WeakReference(result)); return result; } diff --git a/libjava/gnu/gcj/runtime/SharedLibLoader.java b/libjava/gnu/gcj/runtime/SharedLibLoader.java index 1f80bbc..b8e6a57d 100644 --- a/libjava/gnu/gcj/runtime/SharedLibLoader.java +++ b/libjava/gnu/gcj/runtime/SharedLibLoader.java @@ -39,7 +39,7 @@ public class SharedLibLoader extends ClassLoader url = null; } helper = SharedLibHelper.findHelper(this, libname, - new CodeSource(url, null)); + new CodeSource(url, null), true); } /** Load a shared library, and asociate a ClassLoader with it. |