summaryrefslogtreecommitdiffstats
path: root/crypto/pem/pvkfmt.c
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2018-03-15 12:34:12 +0100
committerBernd Edlinger <bernd.edlinger@hotmail.de>2018-03-17 08:15:31 +0100
commitd288d7fc7beaa1d720a539d6ae27dba2c910ee68 (patch)
tree9e538e42cf4e1770565e358c6c1b22a7db5ef6d7 /crypto/pem/pvkfmt.c
parentRAND_DRBG: add a function for setting the default DRBG type and flags (diff)
downloadopenssl-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.c20
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;