diff --git a/src/libopensc/pkcs15-pubkey.c b/src/libopensc/pkcs15-pubkey.c index 34dfa279..2f6eaa29 100644 --- a/src/libopensc/pkcs15-pubkey.c +++ b/src/libopensc/pkcs15-pubkey.c @@ -311,6 +311,9 @@ int sc_pkcs15_decode_pukdf_entry(struct sc_pkcs15_card *p15card, memset(gostr3410_params, 0, sizeof(gostr3410_params)); r = sc_asn1_decode(ctx, asn1_pubkey, *buf, *buflen, buf, buflen); + if (r < 0) { + free(der->value); + } if (r == SC_ERROR_ASN1_END_OF_CONTENTS) goto err; LOG_TEST_GOTO_ERR(ctx, r, "ASN.1 decoding failed");