summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2018-11-09 23:39:45 +0000
committertb <>2018-11-09 23:39:45 +0000
commit28dd9c81ffd34c0c904c0d9f784dab23617b5626 (patch)
tree0b09897516cc1ad23c508ddd211559448e5eaafe /src
parentd2fe8ed782f8ef53d8ea2616c5820064884d2420 (diff)
downloadopenbsd-28dd9c81ffd34c0c904c0d9f784dab23617b5626.tar.gz
openbsd-28dd9c81ffd34c0c904c0d9f784dab23617b5626.tar.bz2
openbsd-28dd9c81ffd34c0c904c0d9f784dab23617b5626.zip
Avoid dereferencing eckey before checking it for NULL.
CID 184282 ok beck jsing mestre
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/ec/ec_key.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/lib/libcrypto/ec/ec_key.c b/src/lib/libcrypto/ec/ec_key.c
index 6ab4d3c9a4..fcdf461d20 100644
--- a/src/lib/libcrypto/ec/ec_key.c
+++ b/src/lib/libcrypto/ec/ec_key.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_key.c,v 1.21 2018/11/06 07:02:33 tb Exp $ */ 1/* $OpenBSD: ec_key.c,v 1.22 2018/11/09 23:39:45 tb Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -212,19 +212,20 @@ EC_KEY_generate_key(EC_KEY *eckey)
212{ 212{
213 int ok = 0; 213 int ok = 0;
214 BN_CTX *ctx = NULL; 214 BN_CTX *ctx = NULL;
215 BIGNUM *priv_key = eckey->priv_key, *order = NULL; 215 BIGNUM *priv_key = NULL, *order = NULL;
216 EC_POINT *pub_key = eckey->pub_key; 216 EC_POINT *pub_key = NULL;
217 217
218 if (!eckey || !eckey->group) { 218 if (!eckey || !eckey->group) {
219 ECerror(ERR_R_PASSED_NULL_PARAMETER); 219 ECerror(ERR_R_PASSED_NULL_PARAMETER);
220 return 0; 220 return 0;
221 } 221 }
222
222 if ((order = BN_new()) == NULL) 223 if ((order = BN_new()) == NULL)
223 goto err; 224 goto err;
224 if ((ctx = BN_CTX_new()) == NULL) 225 if ((ctx = BN_CTX_new()) == NULL)
225 goto err; 226 goto err;
226 227
227 if (priv_key == NULL) { 228 if ((priv_key = eckey->priv_key) == NULL) {
228 if ((priv_key = BN_new()) == NULL) 229 if ((priv_key = BN_new()) == NULL)
229 goto err; 230 goto err;
230 } 231 }
@@ -235,7 +236,7 @@ EC_KEY_generate_key(EC_KEY *eckey)
235 if (!bn_rand_interval(priv_key, BN_value_one(), order)) 236 if (!bn_rand_interval(priv_key, BN_value_one(), order))
236 goto err; 237 goto err;
237 238
238 if (pub_key == NULL) { 239 if ((pub_key = eckey->pub_key) == NULL) {
239 if ((pub_key = EC_POINT_new(eckey->group)) == NULL) 240 if ((pub_key = EC_POINT_new(eckey->group)) == NULL)
240 goto err; 241 goto err;
241 } 242 }