diff options
| author | tb <> | 2018-11-09 23:39:45 +0000 |
|---|---|---|
| committer | tb <> | 2018-11-09 23:39:45 +0000 |
| commit | 2feae24d2aed9e9b3713ff77dffe7a373ed0039d (patch) | |
| tree | 0b09897516cc1ad23c508ddd211559448e5eaafe /src/lib/libcrypto/ec/ec_key.c | |
| parent | 6eb54fd85cccb22c327d779aba066f1cb03158a0 (diff) | |
| download | openbsd-2feae24d2aed9e9b3713ff77dffe7a373ed0039d.tar.gz openbsd-2feae24d2aed9e9b3713ff77dffe7a373ed0039d.tar.bz2 openbsd-2feae24d2aed9e9b3713ff77dffe7a373ed0039d.zip | |
Avoid dereferencing eckey before checking it for NULL.
CID 184282
ok beck jsing mestre
Diffstat (limited to 'src/lib/libcrypto/ec/ec_key.c')
| -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 | } |
