diff options
Diffstat (limited to 'src/lib/libcrypto/ecdsa/ecs_ossl.c')
-rw-r--r-- | src/lib/libcrypto/ecdsa/ecs_ossl.c | 42 |
1 files changed, 15 insertions, 27 deletions
diff --git a/src/lib/libcrypto/ecdsa/ecs_ossl.c b/src/lib/libcrypto/ecdsa/ecs_ossl.c index e2c4b1d6d1..0dde5386ff 100644 --- a/src/lib/libcrypto/ecdsa/ecs_ossl.c +++ b/src/lib/libcrypto/ecdsa/ecs_ossl.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ecs_ossl.c,v 1.4 2014/07/10 22:45:57 jsing Exp $ */ | 1 | /* $OpenBSD: ecs_ossl.c,v 1.5 2014/07/12 16:03:37 miod Exp $ */ |
2 | /* | 2 | /* |
3 | * Written by Nils Larsch for the OpenSSL project | 3 | * Written by Nils Larsch for the OpenSSL project |
4 | */ | 4 | */ |
@@ -189,28 +189,22 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, | |||
189 | goto err; | 189 | goto err; |
190 | } | 190 | } |
191 | /* clear old values if necessary */ | 191 | /* clear old values if necessary */ |
192 | if (*rp != NULL) | 192 | BN_clear_free(*rp); |
193 | BN_clear_free(*rp); | 193 | BN_clear_free(*kinvp); |
194 | if (*kinvp != NULL) | ||
195 | BN_clear_free(*kinvp); | ||
196 | /* save the pre-computed values */ | 194 | /* save the pre-computed values */ |
197 | *rp = r; | 195 | *rp = r; |
198 | *kinvp = k; | 196 | *kinvp = k; |
199 | ret = 1; | 197 | ret = 1; |
200 | err: | 198 | err: |
201 | if (!ret) | 199 | if (!ret) { |
202 | { | 200 | BN_clear_free(k); |
203 | if (k != NULL) BN_clear_free(k); | 201 | BN_clear_free(r); |
204 | if (r != NULL) BN_clear_free(r); | ||
205 | } | 202 | } |
206 | if (ctx_in == NULL) | 203 | if (ctx_in == NULL) |
207 | BN_CTX_free(ctx); | 204 | BN_CTX_free(ctx); |
208 | if (order != NULL) | 205 | BN_free(order); |
209 | BN_free(order); | 206 | EC_POINT_free(tmp_point); |
210 | if (tmp_point != NULL) | 207 | BN_clear_free(X); |
211 | EC_POINT_free(tmp_point); | ||
212 | if (X) | ||
213 | BN_clear_free(X); | ||
214 | return(ret); | 208 | return(ret); |
215 | } | 209 | } |
216 | 210 | ||
@@ -333,16 +327,11 @@ err: | |||
333 | ECDSA_SIG_free(ret); | 327 | ECDSA_SIG_free(ret); |
334 | ret = NULL; | 328 | ret = NULL; |
335 | } | 329 | } |
336 | if (ctx) | 330 | BN_CTX_free(ctx); |
337 | BN_CTX_free(ctx); | 331 | BN_clear_free(m); |
338 | if (m) | 332 | BN_clear_free(tmp); |
339 | BN_clear_free(m); | 333 | BN_free(order); |
340 | if (tmp) | 334 | BN_clear_free(kinv); |
341 | BN_clear_free(tmp); | ||
342 | if (order) | ||
343 | BN_free(order); | ||
344 | if (kinv) | ||
345 | BN_clear_free(kinv); | ||
346 | return ret; | 335 | return ret; |
347 | } | 336 | } |
348 | 337 | ||
@@ -473,7 +462,6 @@ static int ecdsa_do_verify(const unsigned char *dgst, int dgst_len, | |||
473 | err: | 462 | err: |
474 | BN_CTX_end(ctx); | 463 | BN_CTX_end(ctx); |
475 | BN_CTX_free(ctx); | 464 | BN_CTX_free(ctx); |
476 | if (point) | 465 | EC_POINT_free(point); |
477 | EC_POINT_free(point); | ||
478 | return ret; | 466 | return ret; |
479 | } | 467 | } |