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

Reply via email to