diff options
author | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2018-03-15 12:34:12 +0100 |
---|---|---|
committer | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2018-03-17 08:15:31 +0100 |
commit | d288d7fc7beaa1d720a539d6ae27dba2c910ee68 (patch) | |
tree | 9e538e42cf4e1770565e358c6c1b22a7db5ef6d7 /crypto/pem/pvkfmt.c | |
parent | RAND_DRBG: add a function for setting the default DRBG type and flags (diff) | |
download | openssl-d288d7fc7beaa1d720a539d6ae27dba2c910ee68.tar.xz openssl-d288d7fc7beaa1d720a539d6ae27dba2c910ee68.zip |
Fix error handling in b2i_dss and b2i_rsa
Fixes: #5567
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5624)
Diffstat (limited to 'crypto/pem/pvkfmt.c')
-rw-r--r-- | crypto/pem/pvkfmt.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/crypto/pem/pvkfmt.c b/crypto/pem/pvkfmt.c index ebd6913ce9..d6d8ac960f 100644 --- a/crypto/pem/pvkfmt.c +++ b/crypto/pem/pvkfmt.c @@ -285,14 +285,17 @@ static EVP_PKEY *b2i_dss(const unsigned char **in, goto memerr; BN_CTX_free(ctx); + ctx = NULL; } if (!DSA_set0_pqg(dsa, pbn, qbn, gbn)) goto memerr; pbn = qbn = gbn = NULL; if (!DSA_set0_key(dsa, pub_key, priv_key)) goto memerr; + pub_key = priv_key = NULL; - EVP_PKEY_set1_DSA(ret, dsa); + if (!EVP_PKEY_set1_DSA(ret, dsa)) + goto memerr; DSA_free(dsa); *in = p; return ret; @@ -345,12 +348,19 @@ static EVP_PKEY *b2i_rsa(const unsigned char **in, goto memerr; if (!read_lebn(&pin, nbyte, &d)) goto memerr; - RSA_set0_factors(rsa, p, q); - RSA_set0_crt_params(rsa, dmp1, dmq1, iqmp); + if (!RSA_set0_factors(rsa, p, q)) + goto memerr; + p = q = NULL; + if (!RSA_set0_crt_params(rsa, dmp1, dmq1, iqmp)) + goto memerr; + dmp1 = dmq1 = iqmp = NULL; } - RSA_set0_key(rsa, n, e, d); + if (!RSA_set0_key(rsa, n, e, d)) + goto memerr; + n = e = d = NULL; - EVP_PKEY_set1_RSA(ret, rsa); + if (!EVP_PKEY_set1_RSA(ret, rsa)) + goto memerr; RSA_free(rsa); *in = pin; return ret; |