Commit 39072dc8 by Mark Wielaard Committed by Mark Wielaard

Security.java (secprops): Initialize.

       * java/security/Security.java (secprops): Initialize.
       (loadProviders): Return boolean.
       (static): Check result of loadProvider calls. If necessary
       display WARNING and fallback to Gnu provider.

From-SVN: r67597
parent 20c1dc5e
2003-06-06 Mark Wielaard <mark@klomp.org>
* java/security/Security.java (secprops): Initialize.
(loadProviders): Return boolean.
(static): Check result of loadProvider calls. If necessary
display WARNING and fallback to Gnu provider.
2002-06-06 James Clark <jjc@jclark.com> 2002-06-06 James Clark <jjc@jclark.com>
Fix for PR libgcj/8738: Fix for PR libgcj/8738:
......
...@@ -64,12 +64,29 @@ public final class Security extends Object ...@@ -64,12 +64,29 @@ public final class Security extends Object
private static final String ALG_ALIAS = "Alg.Alias."; private static final String ALG_ALIAS = "Alg.Alias.";
private static Vector providers = new Vector(); private static Vector providers = new Vector();
private static Properties secprops; private static Properties secprops = new Properties();
static static
{ {
String base = System.getProperty("gnu.classpath.home.url"); String base = System.getProperty("gnu.classpath.home.url");
loadProviders(base, System.getProperty("gnu.classpath.vm.shortname")); String vendor = System.getProperty("gnu.classpath.vm.shortname");
loadProviders(base, "classpath");
// Try VM specific security file
boolean loaded = loadProviders(base, vendor);
// Append classpath standard provider if possible
if (!loadProviders(base, "classpath") && !loaded && providers.size() == 0)
{
// No providers found and both security files failed to load properly.
System.err.println
("WARNING: could not properly read security provider files:");
System.err.println
(" " + base + "/security/" + vendor + ".security");
System.err.println
(" " + base + "/security/" + "classpath" + ".security");
System.err.println
(" Falling back to standard GNU security provider");
providers.addElement(new gnu.java.security.provider.Gnu());
}
} }
// This class can't be instantiated. // This class can't be instantiated.
...@@ -77,16 +94,21 @@ public final class Security extends Object ...@@ -77,16 +94,21 @@ public final class Security extends Object
{ {
} }
private static void loadProviders(String baseUrl, String vendor) /**
* Tries to load the vender specific security providers from the given
* base URL. Returns true if the resource could be read and completely
* parsed successfully, false otherwise.
*/
private static boolean loadProviders(String baseUrl, String vendor)
{ {
if (baseUrl == null || vendor == null) if (baseUrl == null || vendor == null)
return; return false;
boolean result = true;
String secfilestr = baseUrl + "/security/" + vendor + ".security"; String secfilestr = baseUrl + "/security/" + vendor + ".security";
try try
{ {
InputStream fin = new URL(secfilestr).openStream(); InputStream fin = new URL(secfilestr).openStream();
secprops = new Properties();
secprops.load(fin); secprops.load(fin);
int i = 1; int i = 1;
...@@ -112,19 +134,20 @@ public final class Security extends Object ...@@ -112,19 +134,20 @@ public final class Security extends Object
} }
if (exception != null) if (exception != null)
System.err.println ( {
"Error loading security provider " + name + ": " + exception); System.err.println ("WARNING: Error loading security provider "
+ name + ": " + exception);
result = false;
}
i++; i++;
} }
} }
catch (FileNotFoundException ignored)
{
// Actually we probably shouldn't ignore these, once the security
// properties file is actually installed somewhere.
}
catch (IOException ignored) catch (IOException ignored)
{ {
result = false;
} }
return false;
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment