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
This commit is contained in:
committed by
Andrew Haley
parent
d2638db653
commit
019dac3214
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user