Fixed OID encoding.
[crypto.git] / lib / silccrypt / silcpkcs.c
index 7aeb3d1c09ecf41979fafe3abf4eefc8af9a93eb..baf042be51372bd5fc78749e49e597f771ec4123 100644 (file)
@@ -672,13 +672,17 @@ SilcBool silc_pkcs_load_public_key(const char *filename,
 
     if (public_key->pkcs->import_public_key_file(data, data_len,
                                                 SILC_PKCS_FILE_BASE64,
-                                                &public_key->public_key))
+                                                &public_key->public_key)) {
+      silc_free(data);
       return TRUE;
+    }
 
     if (public_key->pkcs->import_public_key_file(data, data_len,
                                                 SILC_PKCS_FILE_BIN,
-                                                &public_key->public_key))
+                                                &public_key->public_key)) {
+      silc_free(data);
       return TRUE;
+    }
   }
 
   silc_free(data);
@@ -745,19 +749,25 @@ SilcBool silc_pkcs_load_private_key(const char *filename,
     if (!private_key->pkcs)
       continue;
 
-    if (private_key->pkcs->import_private_key_file(data, data_len,
-                                                  passphrase,
-                                                  passphrase_len,
-                                                  SILC_PKCS_FILE_BIN,
-                                                  &private_key->private_key))
+    if (private_key->pkcs->import_private_key_file(
+                                             data, data_len,
+                                             passphrase,
+                                             passphrase_len,
+                                             SILC_PKCS_FILE_BIN,
+                                             &private_key->private_key)) {
+      silc_free(data);
       return TRUE;
+    }
 
-    if (private_key->pkcs->import_private_key_file(data, data_len,
-                                                  passphrase,
-                                                  passphrase_len,
-                                                  SILC_PKCS_FILE_BASE64,
-                                                  &private_key->private_key))
+    if (private_key->pkcs->import_private_key_file(
+                                             data, data_len,
+                                             passphrase,
+                                             passphrase_len,
+                                             SILC_PKCS_FILE_BASE64,
+                                             &private_key->private_key)) {
+      silc_free(data);
       return TRUE;
+    }
   }
 
   silc_free(data);