diff options
| author | miod <> | 2015-02-14 15:08:37 +0000 |
|---|---|---|
| committer | miod <> | 2015-02-14 15:08:37 +0000 |
| commit | 7341d58e175443f35d3593a484e60ce81d090a15 (patch) | |
| tree | 20254298f15ddb100f1a59b4dfd171065b5ce2cb /src/lib/libc | |
| parent | cf070938980397dcaffa0ec800c735ddc1155af9 (diff) | |
| download | openbsd-7341d58e175443f35d3593a484e60ce81d090a15.tar.gz openbsd-7341d58e175443f35d3593a484e60ce81d090a15.tar.bz2 openbsd-7341d58e175443f35d3593a484e60ce81d090a15.zip | |
Memory leaks upon error. Coverity CID 78874.
ok jsing@
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/gost/gostr341001_pmeth.c | 20 |
1 files changed, 10 insertions, 10 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 | } |
