Connection.java: Use GetPropertyAction for privileged getProperty calls.

2004-07-23  Bryce McKinlay  <mckinlay@redhat.com>

	* gnu/java/net/protocol/http/Connection.java: Use GetPropertyAction
	for privileged getProperty calls.
	* java/io/ObjectOutputStream.java (getField): No longer static. Use
	SetAccessibleAction instead of anonymous class for doPrivileged
	call.
	(getMethod): Likewise.
	(setAccessible): New field. PrivilegedAction object to use when
	calling setAccessible.
	* java/io/ObjectStreamClass.java (calculateOffsets): Use
	SetAccessibleAction instead of anonymous class for diPrivileged
	call.
	(setFields): Likewise.
	(getClassUID): Likewise.
	(findMethod): Likewise.
	* gnu/java/security/action/GetPropertyAction.java: New class.
	* gnu/java/security/action/SetAccessibleAction.java: New class.

From-SVN: r85097
This commit is contained in:
Bryce McKinlay 2004-07-23 22:20:14 +00:00 committed by Bryce McKinlay
parent ae066484df
commit ec5c28ece1
6 changed files with 217 additions and 83 deletions

View file

@ -57,6 +57,7 @@ import java.util.Hashtable;
import java.util.Vector;
import gnu.java.io.NullOutputStream;
import gnu.java.lang.reflect.TypeSignature;
import gnu.java.security.action.SetAccessibleAction;
import gnu.java.security.provider.Gnu;
@ -470,14 +471,8 @@ outer:
}
}
final Method m = methods[i];
AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
m.setAccessible(true);
return null;
}
});
SetAccessibleAction setAccessible = new SetAccessibleAction(m);
AccessController.doPrivileged(setAccessible);
return m;
}
}
@ -543,6 +538,8 @@ outer:
// clazz.
private void setFields(Class cl)
{
SetAccessibleAction setAccessible = new SetAccessibleAction();
if (!isSerializable() || isExternalizable())
{
fields = NO_FIELDS;
@ -551,17 +548,11 @@ outer:
try
{
final Field serialPersistentFields =
final Field f =
cl.getDeclaredField("serialPersistentFields");
AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
serialPersistentFields.setAccessible(true);
return null;
}
});
int modifiers = serialPersistentFields.getModifiers();
setAccessible.setMember(f);
AccessController.doPrivileged(setAccessible);
int modifiers = f.getModifiers();
if (Modifier.isStatic(modifiers)
&& Modifier.isFinal(modifiers)
@ -617,14 +608,8 @@ outer:
if (all_fields[from] != null)
{
final Field f = all_fields[from];
AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
f.setAccessible(true);
return null;
}
});
setAccessible.setMember(f);
AccessController.doPrivileged(setAccessible);
fields[to] = new ObjectStreamField(all_fields[from]);
to++;
}
@ -651,14 +636,8 @@ outer:
// may not be public AND we only want the serialVersionUID of this
// class, not a superclass or interface.
final Field suid = cl.getDeclaredField("serialVersionUID");
AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
suid.setAccessible(true);
return null;
}
});
SetAccessibleAction setAccessible = new SetAccessibleAction(suid);
AccessController.doPrivileged(setAccessible);
int modifiers = suid.getModifiers();
if (Modifier.isStatic(modifiers)