diff options
author | tb <> | 2018-11-09 23:39:45 +0000 |
---|---|---|
committer | tb <> | 2018-11-09 23:39:45 +0000 |
commit | 28dd9c81ffd34c0c904c0d9f784dab23617b5626 (patch) | |
tree | 0b09897516cc1ad23c508ddd211559448e5eaafe /src | |
parent | d2fe8ed782f8ef53d8ea2616c5820064884d2420 (diff) | |
download | openbsd-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.c | 11 |
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 | } |