diff --git a/lib/krb5/crypto.c b/lib/krb5/crypto.c index 16bea70ad..e30b3ff64 100644 --- a/lib/krb5/crypto.c +++ b/lib/krb5/crypto.c @@ -3677,18 +3677,21 @@ krb5_crypto_init(krb5_context context, (*crypto)->et = _find_enctype(etype); if((*crypto)->et == NULL || ((*crypto)->et->flags & F_DISABLED)) { free(*crypto); + *crypto = NULL; krb5_set_error_string (context, "encryption type %d not supported", etype); return KRB5_PROG_ETYPE_NOSUPP; } if((*crypto)->et->keytype->size != key->keyvalue.length) { free(*crypto); + *crypto = NULL; krb5_set_error_string (context, "encryption key has bad length"); return KRB5_BAD_KEYSIZE; } ret = krb5_copy_keyblock(context, key, &(*crypto)->key.key); if(ret) { free(*crypto); + *crypto = NULL; return ret; } (*crypto)->key.schedule = NULL;