Improve key free functions.

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@386 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Andreas Schneider
2009-04-04 13:55:32 +00:00
parent 1100a22e98
commit b3a0c6d9cb

View File

@@ -152,29 +152,31 @@ PUBLIC_KEY *publickey_make_rsa(SSH_SESSION *session, BUFFER *buffer, char *type)
return key; return key;
} }
void publickey_free(PUBLIC_KEY *key){ void publickey_free(PUBLIC_KEY *key) {
if(!key) if (key == NULL) {
return; return;
switch(key->type){ }
case TYPE_DSS:
switch(key->type) {
case TYPE_DSS:
#ifdef HAVE_LIBGCRYPT #ifdef HAVE_LIBGCRYPT
gcry_sexp_release(key->dsa_pub); gcry_sexp_release(key->dsa_pub);
#elif HAVE_LIBCRYPTO #elif HAVE_LIBCRYPTO
DSA_free(key->dsa_pub); DSA_free(key->dsa_pub);
#endif #endif
break; break;
case TYPE_RSA: case TYPE_RSA:
case TYPE_RSA1: case TYPE_RSA1:
#ifdef HAVE_LIBGCRYPT #ifdef HAVE_LIBGCRYPT
gcry_sexp_release(key->rsa_pub); gcry_sexp_release(key->rsa_pub);
#elif defined HAVE_LIBCRYPTO #elif defined HAVE_LIBCRYPTO
RSA_free(key->rsa_pub); RSA_free(key->rsa_pub);
#endif #endif
break; break;
default: default:
break; break;
} }
free(key); SAFE_FREE(key);
} }
PUBLIC_KEY *publickey_from_string(SSH_SESSION *session, STRING *pubkey_s){ 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){ void signature_free(SIGNATURE *sign) {
if(!sign) if (sign == NULL) {
return; return;
switch(sign->type){ }
case TYPE_DSS:
switch(sign->type) {
case TYPE_DSS:
#ifdef HAVE_LIBGCRYPT #ifdef HAVE_LIBGCRYPT
gcry_sexp_release(sign->dsa_sign); gcry_sexp_release(sign->dsa_sign);
#elif defined HAVE_LIBCRYPTO #elif defined HAVE_LIBCRYPTO
DSA_SIG_free(sign->dsa_sign); DSA_SIG_free(sign->dsa_sign);
#endif #endif
break; break;
case TYPE_RSA: case TYPE_RSA:
case TYPE_RSA1: case TYPE_RSA1:
#ifdef HAVE_LIBGCRYPT #ifdef HAVE_LIBGCRYPT
gcry_sexp_release(sign->rsa_sign); gcry_sexp_release(sign->rsa_sign);
#elif defined HAVE_LIBCRYPTO #elif defined HAVE_LIBCRYPTO
free(sign->rsa_sign); SAFE_FREE(sign->rsa_sign);
#endif #endif
break; break;
default: default:
ssh_log(NULL,SSH_LOG_RARE,"freeing a signature with no type !\n"); ssh_log(NULL, SSH_LOG_RARE, "Freeing a signature with no type!\n");
} }
free(sign); SAFE_FREE(sign);
} }
#ifdef HAVE_LIBCRYPTO #ifdef HAVE_LIBCRYPTO