diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-04 13:55:32 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-04 13:55:32 +0000 |
commit | b3a0c6d9cb93ea6cc2fe650456515ec68a74941a (patch) | |
tree | 0f265aa768422f0ab474208fb956b6740a881def /libssh/keys.c | |
parent | 1100a22e984e916d68cd13d0617fd761ed719e45 (diff) | |
download | libssh-b3a0c6d9cb93ea6cc2fe650456515ec68a74941a.tar.gz libssh-b3a0c6d9cb93ea6cc2fe650456515ec68a74941a.tar.xz libssh-b3a0c6d9cb93ea6cc2fe650456515ec68a74941a.zip |
Improve key free functions.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@386 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/keys.c')
-rw-r--r-- | libssh/keys.c | 70 |
1 files changed, 37 insertions, 33 deletions
diff --git a/libssh/keys.c b/libssh/keys.c index cdef39fc..c57a45f2 100644 --- a/libssh/keys.c +++ b/libssh/keys.c @@ -152,29 +152,31 @@ PUBLIC_KEY *publickey_make_rsa(SSH_SESSION *session, BUFFER *buffer, char *type) return key; } -void publickey_free(PUBLIC_KEY *key){ - if(!key) - return; - switch(key->type){ - case TYPE_DSS: +void publickey_free(PUBLIC_KEY *key) { + if (key == NULL) { + return; + } + + switch(key->type) { + case TYPE_DSS: #ifdef HAVE_LIBGCRYPT - gcry_sexp_release(key->dsa_pub); + gcry_sexp_release(key->dsa_pub); #elif HAVE_LIBCRYPTO - DSA_free(key->dsa_pub); + DSA_free(key->dsa_pub); #endif - break; - case TYPE_RSA: - case TYPE_RSA1: + break; + case TYPE_RSA: + case TYPE_RSA1: #ifdef HAVE_LIBGCRYPT - gcry_sexp_release(key->rsa_pub); + gcry_sexp_release(key->rsa_pub); #elif defined HAVE_LIBCRYPTO - RSA_free(key->rsa_pub); + RSA_free(key->rsa_pub); #endif - break; - default: - break; - } - free(key); + break; + default: + break; + } + SAFE_FREE(key); } PUBLIC_KEY *publickey_from_string(SSH_SESSION *session, STRING *pubkey_s){ @@ -613,29 +615,31 @@ SIGNATURE *signature_from_string(SSH_SESSION *session, STRING *signature,PUBLIC_ } } -void signature_free(SIGNATURE *sign){ - if(!sign) - return; - switch(sign->type){ - case TYPE_DSS: +void signature_free(SIGNATURE *sign) { + if (sign == NULL) { + return; + } + + switch(sign->type) { + case TYPE_DSS: #ifdef HAVE_LIBGCRYPT - gcry_sexp_release(sign->dsa_sign); + gcry_sexp_release(sign->dsa_sign); #elif defined HAVE_LIBCRYPTO - DSA_SIG_free(sign->dsa_sign); + DSA_SIG_free(sign->dsa_sign); #endif - break; - case TYPE_RSA: - case TYPE_RSA1: + break; + case TYPE_RSA: + case TYPE_RSA1: #ifdef HAVE_LIBGCRYPT - gcry_sexp_release(sign->rsa_sign); + gcry_sexp_release(sign->rsa_sign); #elif defined HAVE_LIBCRYPTO - free(sign->rsa_sign); + SAFE_FREE(sign->rsa_sign); #endif - break; - default: - ssh_log(NULL,SSH_LOG_RARE,"freeing a signature with no type !\n"); + break; + default: + ssh_log(NULL, SSH_LOG_RARE, "Freeing a signature with no type!\n"); } - free(sign); + SAFE_FREE(sign); } #ifdef HAVE_LIBCRYPTO |