Fixed public key free.
authorPekka Riikonen <priikone@silcnet.org>
Sat, 21 Jul 2007 13:43:34 +0000 (13:43 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sat, 21 Jul 2007 13:43:34 +0000 (13:43 +0000)
lib/silcssh/silcssh.c
lib/silcssh/tests/test_silcssh.c

index 818a0fa2893e96302114f3b50ae8bb1d2d9bd10d..6cb849fc33dc6102bf1c01abcec97512741722a9 100644 (file)
@@ -251,7 +251,7 @@ SilcBool silc_ssh_generate_key(const char *algorithm,
   }
 
   if (subject)
-    silc_ssh_public_key_add_field(pubkey, "Subject", strdup(subject));
+    silc_ssh_public_key_add_field(pubkey, "Subject", subject);
 
   return TRUE;
 }
@@ -383,6 +383,8 @@ void silc_ssh_public_key_free(SilcSshPublicKey public_key)
 {
   if (public_key->fields)
     silc_hash_table_free(public_key->fields);
+  public_key->pkcs->public_key_free(public_key->pkcs,
+                                   public_key->public_key);
   silc_free(public_key);
 }
 
index 7362c3df843a815830553b4d9a876fc65c981d66..e64d2e89e5cd82672e63951a0fd715dfdcee8173 100644 (file)
@@ -37,6 +37,8 @@ int main(int argc, char **argv)
   if (!silc_pkcs_save_private_key("privkey.prv", private_key, "testi", 5,
                                          SILC_PKCS_FILE_BASE64, rng))
     goto err;
+  silc_pkcs_public_key_free(public_key);
+  silc_pkcs_private_key_free(private_key);
 
   SILC_LOG_DEBUG(("Load public key"));
   if (!silc_pkcs_load_public_key("pubkey.pub", SILC_PKCS_ANY,  &public_key))
@@ -51,6 +53,7 @@ int main(int argc, char **argv)
   if (!silc_pkcs_load_private_key("privkey.prv", "testi", 5,
                                  SILC_PKCS_ANY, &private_key))
     goto err;
+  silc_pkcs_private_key_free(private_key);
 
   SILC_LOG_DEBUG(("Save as OpenSSH public key"));
   ssh_pubkey = silc_pkcs_public_key_get_pkcs(SILC_PKCS_SSH2, public_key);
@@ -58,13 +61,16 @@ int main(int argc, char **argv)
   if (!silc_pkcs_save_public_key("pubkey_openssh.pub", public_key,
                                 SILC_PKCS_FILE_BASE64))
     goto err;
+  silc_pkcs_public_key_free(public_key);
 
   SILC_LOG_DEBUG(("Load public key"));
   if (!silc_pkcs_load_public_key("pubkey_openssh.pub", SILC_PKCS_SSH2,
                                 &public_key))
     goto err;
+  silc_pkcs_public_key_free(public_key);
 
   silc_rng_free(rng);
+  silc_crypto_uninit();
 
   success = TRUE;