diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/ec/ec_key.c | 34 | 
1 files changed, 20 insertions, 14 deletions
| diff --git a/src/lib/libcrypto/ec/ec_key.c b/src/lib/libcrypto/ec/ec_key.c index 21c22823f9..c8f4c15bb5 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.42 2024/11/05 08:56:57 tb Exp $ */ | 1 | /* $OpenBSD: ec_key.c,v 1.43 2024/11/08 21:53:54 tb Exp $ */ | 
| 2 | /* | 2 | /* | 
| 3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. | 
| 4 | */ | 4 | */ | 
| @@ -80,20 +80,26 @@ LCRYPTO_ALIAS(EC_KEY_new); | |||
| 80 | EC_KEY * | 80 | EC_KEY * | 
| 81 | EC_KEY_new_by_curve_name(int nid) | 81 | EC_KEY_new_by_curve_name(int nid) | 
| 82 | { | 82 | { | 
| 83 | EC_KEY *ret = EC_KEY_new(); | 83 | EC_KEY *ec_key; | 
| 84 | if (ret == NULL) | 84 | |
| 85 | return NULL; | 85 | if ((ec_key = EC_KEY_new()) == NULL) | 
| 86 | ret->group = EC_GROUP_new_by_curve_name(nid); | 86 | goto err; | 
| 87 | if (ret->group == NULL) { | 87 | |
| 88 | EC_KEY_free(ret); | 88 | if ((ec_key->group = EC_GROUP_new_by_curve_name(nid)) == NULL) | 
| 89 | return NULL; | 89 | goto err; | 
| 90 | } | 90 | |
| 91 | if (ret->meth->set_group != NULL && | 91 | /* XXX - do we want an ec_key_set0_group()? */ | 
| 92 | ret->meth->set_group(ret, ret->group) == 0) { | 92 | if (ec_key->meth->set_group != NULL) { | 
| 93 | EC_KEY_free(ret); | 93 | if (!ec_key->meth->set_group(ec_key, ec_key->group)) | 
| 94 | return NULL; | 94 | goto err; | 
| 95 | } | 95 | } | 
| 96 | return ret; | 96 | |
| 97 | return ec_key; | ||
| 98 | |||
| 99 | err: | ||
| 100 | EC_KEY_free(ec_key); | ||
| 101 | |||
| 102 | return NULL; | ||
| 97 | } | 103 | } | 
| 98 | LCRYPTO_ALIAS(EC_KEY_new_by_curve_name); | 104 | LCRYPTO_ALIAS(EC_KEY_new_by_curve_name); | 
| 99 | 105 | ||
