static void x509_pubkey_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it)
{
- X509_PUBKEY *pubkey = (X509_PUBKEY *)*pval;
+ X509_PUBKEY *pubkey;
- X509_ALGOR_free(pubkey->algor);
- ASN1_BIT_STRING_free(pubkey->public_key);
- EVP_PKEY_free(pubkey->pkey);
- OPENSSL_free(pubkey->propq);
- OPENSSL_free(pubkey);
- *pval = NULL;
+ if (pval != NULL && (pubkey = (X509_PUBKEY *)*pval) != NULL) {
+ X509_ALGOR_free(pubkey->algor);
+ ASN1_BIT_STRING_free(pubkey->public_key);
+ EVP_PKEY_free(pubkey->pkey);
+ OPENSSL_free(pubkey->propq);
+ OPENSSL_free(pubkey);
+ *pval = NULL;
+ }
}
static int x509_pubkey_ex_populate(ASN1_VALUE **pval, const ASN1_ITEM *it)