From: Nikos Mavrogiannopoulos Date: Wed, 4 Jan 2017 08:32:17 +0000 (+0100) Subject: _decode_pkcs8_dsa_key: fixed memory leak on error path X-Git-Tag: gnutls_3_6_0~1092 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c9c189038d8a80b4e676479465ab75a3efd9a7ea;p=thirdparty%2Fgnutls.git _decode_pkcs8_dsa_key: fixed memory leak on error path Signed-off-by: Nikos Mavrogiannopoulos --- diff --git a/lib/x509/privkey_pkcs8.c b/lib/x509/privkey_pkcs8.c index f7ada0234b..4e1e2686e2 100644 --- a/lib/x509/privkey_pkcs8.c +++ b/lib/x509/privkey_pkcs8.c @@ -1025,6 +1025,9 @@ _decode_pkcs8_dsa_key(ASN1_TYPE pkcs8_asn, gnutls_x509_privkey_t pkey) goto error; } + pkey->params.algo = GNUTLS_PK_DSA; + pkey->params.params_nr = DSA_PRIVATE_PARAMS; + ret = _gnutls_asn1_encode_privkey(GNUTLS_PK_DSA, &pkey->key, &pkey->params, pkey->flags&GNUTLS_PRIVKEY_FLAG_EXPORT_COMPAT); @@ -1033,12 +1036,11 @@ _decode_pkcs8_dsa_key(ASN1_TYPE pkcs8_asn, gnutls_x509_privkey_t pkey) goto error; } - pkey->params.algo = GNUTLS_PK_DSA; - pkey->params.params_nr = DSA_PRIVATE_PARAMS; - - ret = 0; + return 0; - error: + error: + if (pkey->params.params_nr != DSA_PRIVATE_PARAMS) + _gnutls_mpi_release(&pkey->params.params[4]); return ret; }