summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormiod <>2015-02-14 15:08:37 +0000
committermiod <>2015-02-14 15:08:37 +0000
commit6a4ab9711b4115f8a6cc669e925100cfef113829 (patch)
tree20254298f15ddb100f1a59b4dfd171065b5ce2cb
parent2791a64273a747cd4e23d72ddbe479c32314b754 (diff)
downloadopenbsd-6a4ab9711b4115f8a6cc669e925100cfef113829.tar.gz
openbsd-6a4ab9711b4115f8a6cc669e925100cfef113829.tar.bz2
openbsd-6a4ab9711b4115f8a6cc669e925100cfef113829.zip
Memory leaks upon error. Coverity CID 78874.
ok jsing@
-rw-r--r--src/lib/libcrypto/gost/gostr341001_pmeth.c20
-rw-r--r--src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c20
2 files changed, 20 insertions, 20 deletions
diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c
index a297587c62..1454f3f0a2 100644
--- a/src/lib/libcrypto/gost/gostr341001_pmeth.c
+++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_pmeth.c,v 1.11 2015/02/14 06:40:04 jsing Exp $ */ 1/* $OpenBSD: gostr341001_pmeth.c,v 1.12 2015/02/14 15:08:37 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -184,9 +184,9 @@ static int
184pkey_gost01_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) 184pkey_gost01_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
185{ 185{
186 struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); 186 struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx);
187 EC_GROUP *group; 187 EC_GROUP *group = NULL;
188 GOST_KEY *gost; 188 GOST_KEY *gost = NULL;
189 int ret; 189 int ret = 0;
190 190
191 if (data->sign_param_nid == NID_undef || 191 if (data->sign_param_nid == NID_undef ||
192 data->digest_nid == NID_undef) { 192 data->digest_nid == NID_undef) {
@@ -196,23 +196,23 @@ pkey_gost01_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
196 196
197 group = EC_GROUP_new_by_curve_name(data->sign_param_nid); 197 group = EC_GROUP_new_by_curve_name(data->sign_param_nid);
198 if (group == NULL) 198 if (group == NULL)
199 return 0; 199 goto done;
200 200
201 EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE); 201 EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE);
202 202
203 gost = GOST_KEY_new(); 203 gost = GOST_KEY_new();
204 if (gost == NULL) 204 if (gost == NULL)
205 return 0; 205 goto done;
206 206
207 if (GOST_KEY_set_digest(gost, data->digest_nid) == 0) 207 if (GOST_KEY_set_digest(gost, data->digest_nid) == 0)
208 return 0; 208 goto done;
209 209
210 ret = GOST_KEY_set_group(gost, group); 210 if (GOST_KEY_set_group(gost, group) != 0)
211 if (ret != 0)
212 ret = EVP_PKEY_assign_GOST(pkey, gost); 211 ret = EVP_PKEY_assign_GOST(pkey, gost);
212
213done:
213 if (ret == 0) 214 if (ret == 0)
214 GOST_KEY_free(gost); 215 GOST_KEY_free(gost);
215
216 EC_GROUP_free(group); 216 EC_GROUP_free(group);
217 return ret; 217 return ret;
218} 218}
diff --git a/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c b/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c
index a297587c62..1454f3f0a2 100644
--- a/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c
+++ b/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_pmeth.c,v 1.11 2015/02/14 06:40:04 jsing Exp $ */ 1/* $OpenBSD: gostr341001_pmeth.c,v 1.12 2015/02/14 15:08:37 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -184,9 +184,9 @@ static int
184pkey_gost01_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) 184pkey_gost01_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
185{ 185{
186 struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx); 186 struct gost_pmeth_data *data = EVP_PKEY_CTX_get_data(ctx);
187 EC_GROUP *group; 187 EC_GROUP *group = NULL;
188 GOST_KEY *gost; 188 GOST_KEY *gost = NULL;
189 int ret; 189 int ret = 0;
190 190
191 if (data->sign_param_nid == NID_undef || 191 if (data->sign_param_nid == NID_undef ||
192 data->digest_nid == NID_undef) { 192 data->digest_nid == NID_undef) {
@@ -196,23 +196,23 @@ pkey_gost01_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)
196 196
197 group = EC_GROUP_new_by_curve_name(data->sign_param_nid); 197 group = EC_GROUP_new_by_curve_name(data->sign_param_nid);
198 if (group == NULL) 198 if (group == NULL)
199 return 0; 199 goto done;
200 200
201 EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE); 201 EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE);
202 202
203 gost = GOST_KEY_new(); 203 gost = GOST_KEY_new();
204 if (gost == NULL) 204 if (gost == NULL)
205 return 0; 205 goto done;
206 206
207 if (GOST_KEY_set_digest(gost, data->digest_nid) == 0) 207 if (GOST_KEY_set_digest(gost, data->digest_nid) == 0)
208 return 0; 208 goto done;
209 209
210 ret = GOST_KEY_set_group(gost, group); 210 if (GOST_KEY_set_group(gost, group) != 0)
211 if (ret != 0)
212 ret = EVP_PKEY_assign_GOST(pkey, gost); 211 ret = EVP_PKEY_assign_GOST(pkey, gost);
212
213done:
213 if (ret == 0) 214 if (ret == 0)
214 GOST_KEY_free(gost); 215 GOST_KEY_free(gost);
215
216 EC_GROUP_free(group); 216 EC_GROUP_free(group);
217 return ret; 217 return ret;
218} 218}