Fixed to not allow duplicate PKCS registering. Bug #17.
[silc.git] / lib / silccrypt / silcpkcs.c
index d9662663de4bae0e377b9daf27482ebd0cc4fddc..e079e40aa4be939b0bc7fe0cdd5dd41b4703425e 100644 (file)
@@ -71,6 +71,16 @@ bool silc_pkcs_register(const SilcPKCSObject *pkcs)
 
   SILC_LOG_DEBUG(("Registering new PKCS `%s'", pkcs->name));
 
+  /* Check if exists already */
+  if (silc_pkcs_list) {
+    SilcPKCSObject *entry;
+    silc_dlist_start(silc_pkcs_list);
+    while ((entry = silc_dlist_get(silc_pkcs_list)) != SILC_LIST_END) {
+      if (!strcmp(entry->name, pkcs->name))
+        return FALSE;
+    }
+  }
+
   new = silc_calloc(1, sizeof(*new));
   new->name = strdup(pkcs->name);
   new->init = pkcs->init;