summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/ec/ec_lib.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c
index b136753be9..b1580d653f 100644
--- a/src/lib/libcrypto/ec/ec_lib.c
+++ b/src/lib/libcrypto/ec/ec_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_lib.c,v 1.81 2024/11/06 09:10:55 tb Exp $ */ 1/* $OpenBSD: ec_lib.c,v 1.82 2024/11/06 09:13:11 tb Exp $ */
2/* 2/*
3 * Originally written by Bodo Moeller for the OpenSSL project. 3 * Originally written by Bodo Moeller for the OpenSSL project.
4 */ 4 */
@@ -183,16 +183,24 @@ EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src)
183LCRYPTO_ALIAS(EC_GROUP_copy); 183LCRYPTO_ALIAS(EC_GROUP_copy);
184 184
185EC_GROUP * 185EC_GROUP *
186EC_GROUP_dup(const EC_GROUP *a) 186EC_GROUP_dup(const EC_GROUP *in_group)
187{ 187{
188 EC_GROUP *t = NULL; 188 EC_GROUP *group = NULL;
189 189
190 if ((a != NULL) && ((t = EC_GROUP_new(a->meth)) != NULL) && 190 if (in_group == NULL)
191 (!EC_GROUP_copy(t, a))) { 191 goto err;
192 EC_GROUP_free(t); 192
193 t = NULL; 193 if ((group = EC_GROUP_new(in_group->meth)) == NULL)
194 } 194 goto err;
195 return t; 195 if (!EC_GROUP_copy(group, in_group))
196 goto err;
197
198 return group;
199
200 err:
201 EC_GROUP_free(group);
202
203 return group;
196} 204}
197LCRYPTO_ALIAS(EC_GROUP_dup); 205LCRYPTO_ALIAS(EC_GROUP_dup);
198 206