diff options
author | miod <> | 2015-02-14 15:08:37 +0000 |
---|---|---|
committer | miod <> | 2015-02-14 15:08:37 +0000 |
commit | 6a4ab9711b4115f8a6cc669e925100cfef113829 (patch) | |
tree | 20254298f15ddb100f1a59b4dfd171065b5ce2cb | |
parent | 2791a64273a747cd4e23d72ddbe479c32314b754 (diff) | |
download | openbsd-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.c | 20 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c | 20 |
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 | |||
184 | pkey_gost01_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) | 184 | pkey_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 | |||
213 | done: | ||
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 | |||
184 | pkey_gost01_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) | 184 | pkey_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 | |||
213 | done: | ||
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 | } |