Hello all, The attached patch fixes https://fedorahosted.org/pki/ticket/2237.
Cheers, Fraser
From 54d1a922789c500d5e2aebbbb828105861227093 Mon Sep 17 00:00:00 2001 From: Fraser Tweedale <ftwee...@redhat.com> Date: Fri, 18 Mar 2016 10:53:18 +1100 Subject: [PATCH] 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 --- .../security/x509/CRLDistributionPointsExtension.java | 8 -------- 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 d8dee03a7f3fcbc21c9392d55d577acbfaa907c8..1cfb770df60b26a7a849b8bc4bea70424e9416df 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 4cebcf2c82f7cba3b773cc4911f1df749f9c1213..20765c934df16ee4fba2bad99c1d7abdfb910280 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 -- 2.5.0
_______________________________________________ Pki-devel mailing list Pki-devel@redhat.com https://www.redhat.com/mailman/listinfo/pki-devel