diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2017-01-04 09:32:17 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2017-01-04 13:41:43 +0100 |
commit | c9c189038d8a80b4e676479465ab75a3efd9a7ea (patch) | |
tree | 0002a5097b470db002acb8fc612da4fa26e671e2 /lib/x509/privkey_pkcs8.c | |
parent | c6af27511f3568b81675965c6907bf0c45725bcd (diff) | |
download | gnutls-c9c189038d8a80b4e676479465ab75a3efd9a7ea.tar.gz |
_decode_pkcs8_dsa_key: fixed memory leak on error path
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
Diffstat (limited to 'lib/x509/privkey_pkcs8.c')
-rw-r--r-- | lib/x509/privkey_pkcs8.c | 12 |
1 files changed, 7 insertions, 5 deletions
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; } |