From 56f4c6c34acef42237d68da8836639d9a5eea7e9 Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Wed, 10 Jun 2020 13:54:13 +0200 Subject: [PATCH] piv: Free pubkey on error Thanks oss-fuzz https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22297 --- src/libopensc/pkcs15-piv.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libopensc/pkcs15-piv.c b/src/libopensc/pkcs15-piv.c index 3641372d..3b0cc289 100644 --- a/src/libopensc/pkcs15-piv.c +++ b/src/libopensc/pkcs15-piv.c @@ -1078,7 +1078,10 @@ sc_log(card->ctx, "DEE Adding pin %d label=%s",i, label); } else if (ckis[i].pubkey_from_cert) { r = sc_pkcs15_encode_pubkey_as_spki(card->ctx, ckis[i].pubkey_from_cert, &pubkey_info.direct.spki.value, &pubkey_info.direct.spki.len); - LOG_TEST_RET(card->ctx, r, "SPKI encode public key error"); + if (r != SC_SUCCESS) { + sc_pkcs15_free_pubkey(ckis[i].pubkey_from_cert); + LOG_TEST_RET(card->ctx, r, "SPKI encode public key error"); + } pubkey_obj.emulated = ckis[i].pubkey_from_cert; }