diff options
author | Fraser Tweedale <ftweedal@redhat.com> | 2016-03-18 10:53:18 +1100 |
---|---|---|
committer | Fraser Tweedale <ftweedal@redhat.com> | 2016-03-22 16:38:27 +1100 |
commit | 93421622ce1ba1bf97d45bca8f346a112c4cf246 (patch) | |
tree | e2927b2cee3bdc9826a405e0f888d57e9b9fd8b8 /base/util | |
parent | feaa0b8f2c277f7633ba4f46cdeb124004cb1ba3 (diff) | |
download | pki-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
Diffstat (limited to 'base/util')
-rw-r--r-- | base/util/src/netscape/security/x509/CRLDistributionPointsExtension.java | 8 | ||||
-rw-r--r-- | base/util/src/netscape/security/x509/OIDMap.java | 17 |
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 |