summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFraser Tweedale <ftweedal@redhat.com>2016-03-18 10:53:18 +1100
committerFraser Tweedale <ftweedal@redhat.com>2016-03-22 16:38:27 +1100
commit93421622ce1ba1bf97d45bca8f346a112c4cf246 (patch)
treee2927b2cee3bdc9826a405e0f888d57e9b9fd8b8
parentfeaa0b8f2c277f7633ba4f46cdeb124004cb1ba3 (diff)
downloadpki-93421622ce1ba1bf97d45bca8f346a112c4cf246.tar.gz
pki-93421622ce1ba1bf97d45bca8f346a112c4cf246.tar.xz
pki-93421622ce1ba1bf97d45bca8f346a112c4cf246.zip
Add CRL dist points extension to OIDMap unconditionally
It is possible to encounter a case where the CRLDistributionPointsExtension static initialiser, which adds the class to the OIDMap, has not been invoked. This can cause a ClassCastException, e.g. in CRLDistributionPointsExtDefault. Update OIDMap to add CRLDistributionPointsExtension in its own static initialiser. Fixes: https://fedorahosted.org/pki/ticket/2237
-rw-r--r--base/util/src/netscape/security/x509/CRLDistributionPointsExtension.java8
-rw-r--r--base/util/src/netscape/security/x509/OIDMap.java17
2 files changed, 17 insertions, 8 deletions
diff --git a/base/util/src/netscape/security/x509/CRLDistributionPointsExtension.java b/base/util/src/netscape/security/x509/CRLDistributionPointsExtension.java
index d8dee03a7..1cfb770df 100644
--- a/base/util/src/netscape/security/x509/CRLDistributionPointsExtension.java
+++ b/base/util/src/netscape/security/x509/CRLDistributionPointsExtension.java
@@ -178,14 +178,6 @@ public class CRLDistributionPointsExtension extends Extension
/////////////////////////////////////////////////////////////
public static final String NAME = "CRLDistributionPoints";
- static {
- try {
- OIDMap.addAttribute(CRLDistributionPointsExtension.class.getName(),
- OID, NAME);
- } catch (CertificateException e) {
- }
- }
-
@Override
public String toString() {
return NAME;
diff --git a/base/util/src/netscape/security/x509/OIDMap.java b/base/util/src/netscape/security/x509/OIDMap.java
index 4cebcf2c8..20765c934 100644
--- a/base/util/src/netscape/security/x509/OIDMap.java
+++ b/base/util/src/netscape/security/x509/OIDMap.java
@@ -99,6 +99,7 @@ public class OIDMap {
static {
loadNames();
loadClasses();
+ addClass(CRLDistributionPointsExtension.class);
}
// Load the default name to oid map (EXTENSIONS_OIDS)
@@ -228,6 +229,22 @@ public class OIDMap {
}
/**
+ * Add an extension to the OIDMap.
+ *
+ * Assumes existence of static OID and NAME fields with unique values.
+ */
+ public static void addClass(Class<? extends Extension> clazz) {
+ try {
+ addAttribute(clazz.getName(),
+ (String) clazz.getField("OID").get(null),
+ (String) clazz.getField("NAME").get(null));
+ } catch (Throwable e) {
+ System.out.println(
+ "Error adding class " + clazz.getName() + " to OIDMap: " + e);
+ }
+ }
+
+ /**
* Add a name to lookup table.
*
* @param className the name of the fully qualified class implementing