This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Patch: FYI: Security fixes
- To: Java Patch List <java-patches at gcc dot gnu dot org>
- Subject: Patch: FYI: Security fixes
- From: Tom Tromey <tromey at redhat dot com>
- Date: 18 Oct 2001 12:03:21 -0600
- Reply-To: tromey at redhat dot com
I'm checking this in. This fixes a Security bug I introduced with
yesterday's changes, and it also cleans up Security by removing a
redundant field. I tested this against some code in rhug. It is also
going in to Classpath.
Tom
Index: ChangeLog
from Tom Tromey <tromey@redhat.com>
* java/security/Security.java (loadProviders): Removed unused
`pname' variable. Don't create `File' object. Don't update
`providerCount'.
(providerCount): Removed.
(insertProviderAt): Don't use `providerCount'.
(addProvider(Provider,int)): Likewise.
(removeProvider): Likewise.
(addProvider(Provider)): Rewrote.
(getProviders): Rewrote.
(getProvider): Don't use `providerCount'.
Index: java/security/Security.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/security/Security.java,v
retrieving revision 1.5
diff -u -r1.5 Security.java
--- java/security/Security.java 2001/10/18 00:01:49 1.5
+++ java/security/Security.java 2001/10/18 17:37:01
@@ -44,7 +44,6 @@
public final class Security extends Object
{
private static Vector providers = new Vector();
- private static int providerCount = 0;
private static Properties secprops;
static
@@ -69,17 +68,14 @@
separator + "security" +
separator + vendor + ".security");
- providerCount = 0;
try
{
- File secFile = new File(secfilestr);
- FileInputStream fin = new FileInputStream(secFile);
+ FileInputStream fin = new FileInputStream(secfilestr);
secprops = new Properties();
secprops.load(fin);
int i = 1;
String name;
- StringBuffer pname = new StringBuffer("security.provider.");
while ((name = secprops.getProperty("security.provider." + i++)) !=
null)
@@ -89,7 +85,6 @@
try
{
providers.addElement(Class.forName(name).newInstance());
- providerCount++;
i++;
}
catch (ClassNotFoundException x)
@@ -162,7 +157,8 @@
if (sm != null)
sm.checkSecurityAccess("insertProvider." + provider.getName());
- for (int i = 0; i < providerCount; i++)
+ int max = providers.size ();
+ for (int i = 0; i < max; i++)
{
if (((Provider) providers.elementAt(i)).getName() ==
provider.getName())
@@ -170,12 +166,11 @@
}
if (position < 0)
- position = 0;
- if (position > providerCount)
- position = providerCount;
+ position = 0;
+ if (position > max)
+ position = max;
providers.insertElementAt(provider, position);
- providerCount++;
return position;
}
@@ -199,22 +194,7 @@
*/
public static int addProvider(Provider provider)
{
- SecurityManager sm = System.getSecurityManager();
-
- if (sm != null)
- sm.checkSecurityAccess("insertProvider." + provider.getName());
-
- for (int i = 0; i < providerCount; i++)
- {
- if (((Provider) providers.elementAt(i)).getName() ==
- provider.getName())
- return -1;
- }
-
- providers.addElement(provider);
- providerCount++;
-
- return providerCount - 1;
+ return insertProviderAt (provider, providers.size ());
}
/**
@@ -238,19 +218,15 @@
sm.checkSecurityAccess("removeProvider." + name);
Provider p = null;
- for (int i = 0; i < providerCount; i++)
+ int max = providers.size ();
+ for (int i = 0; i < max; i++)
{
if (((Provider) providers.elementAt(i)).getName() == name)
{
- p = (Provider) providers.elementAt(i);
+ providers.remove(i);
break;
}
}
-
- if (p != null)
- if (providers.removeElement(p))
- providerCount--;
-
}
/**
@@ -261,9 +237,8 @@
*/
public static Provider[] getProviders()
{
- Provider array[] = new Provider[providerCount];
- for (int i = 0; i < providerCount; i++)
- array[i] = (Provider) providers.elementAt(i);
+ Provider array[] = new Provider[providers.size ()];
+ providers.copyInto (array);
return array;
}
@@ -278,7 +253,8 @@
public static Provider getProvider(String name)
{
Provider p = null;
- for (int i = 0; i < providerCount; i++)
+ int max = providers.size ();
+ for (int i = 0; i < max; i++)
{
p = (Provider) providers.elementAt(i);
if (p.getName() == name)