From e338b7c1ab2b6d39bf9d57c85f789279abd0a1ca Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Thu, 30 Apr 2015 06:46:31 +0200 Subject: [PATCH] framework-pkcs15: fixed memory leak when encoding pubkey --- src/pkcs11/framework-pkcs15.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pkcs11/framework-pkcs15.c b/src/pkcs11/framework-pkcs15.c index d841fceb..daf9bcec 100644 --- a/src/pkcs11/framework-pkcs15.c +++ b/src/pkcs11/framework-pkcs15.c @@ -3972,7 +3972,17 @@ pkcs15_pubkey_get_attribute(struct sc_pkcs11_session *session, void *object, CK_ if (sc_pkcs15_encode_pubkey(context, pubkey->pub_data, &value, &len)) return sc_to_cryptoki_error(SC_ERROR_INTERNAL, "C_GetAttributeValue"); - check_attribute_buffer(attr, len); + if (attr->pValue == NULL_PTR) { + attr->ulValueLen = len; + free(value); + return CKR_OK; + } + if (attr->ulValueLen < len) { + attr->ulValueLen = len; + free(value); + return CKR_BUFFER_TOO_SMALL; + } + attr->ulValueLen = len; memcpy(attr->pValue, value, len); free(value);