summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/dsa/dsa_ossl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_ossl.c')
-rw-r--r--src/lib/libcrypto/dsa/dsa_ossl.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_ossl.c b/src/lib/libcrypto/dsa/dsa_ossl.c
index 5bff836c50..e372853063 100644
--- a/src/lib/libcrypto/dsa/dsa_ossl.c
+++ b/src/lib/libcrypto/dsa/dsa_ossl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: dsa_ossl.c,v 1.20 2014/07/11 08:44:48 jsing Exp $ */ 1/* $OpenBSD: dsa_ossl.c,v 1.21 2014/07/12 16:03:37 miod Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -212,12 +212,10 @@ err:
212 BN_free(r); 212 BN_free(r);
213 BN_free(s); 213 BN_free(s);
214 } 214 }
215 if (ctx != NULL) 215 BN_CTX_free(ctx);
216 BN_CTX_free(ctx);
217 BN_clear_free(&m); 216 BN_clear_free(&m);
218 BN_clear_free(&xr); 217 BN_clear_free(&xr);
219 if (kinv != NULL) /* dsa->kinv is NULL now if we used it */ 218 BN_clear_free(kinv);
220 BN_clear_free(kinv);
221 return ret; 219 return ret;
222} 220}
223 221
@@ -295,19 +293,16 @@ dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
295 if ((kinv = BN_mod_inverse(NULL, &k, dsa->q, ctx)) == NULL) 293 if ((kinv = BN_mod_inverse(NULL, &k, dsa->q, ctx)) == NULL)
296 goto err; 294 goto err;
297 295
298 if (*kinvp != NULL) 296 BN_clear_free(*kinvp);
299 BN_clear_free(*kinvp);
300 *kinvp = kinv; 297 *kinvp = kinv;
301 kinv = NULL; 298 kinv = NULL;
302 if (*rp != NULL) 299 BN_clear_free(*rp);
303 BN_clear_free(*rp);
304 *rp = r; 300 *rp = r;
305 ret = 1; 301 ret = 1;
306err: 302err:
307 if (!ret) { 303 if (!ret) {
308 DSAerr(DSA_F_DSA_SIGN_SETUP, ERR_R_BN_LIB); 304 DSAerr(DSA_F_DSA_SIGN_SETUP, ERR_R_BN_LIB);
309 if (r != NULL) 305 BN_clear_free(r);
310 BN_clear_free(r);
311 } 306 }
312 if (ctx_in == NULL) 307 if (ctx_in == NULL)
313 BN_CTX_free(ctx); 308 BN_CTX_free(ctx);
@@ -406,8 +401,7 @@ err:
406 there is no error in BN. Test should be ret == -1 (Ben) */ 401 there is no error in BN. Test should be ret == -1 (Ben) */
407 if (ret != 1) 402 if (ret != 1)
408 DSAerr(DSA_F_DSA_DO_VERIFY, ERR_R_BN_LIB); 403 DSAerr(DSA_F_DSA_DO_VERIFY, ERR_R_BN_LIB);
409 if (ctx != NULL) 404 BN_CTX_free(ctx);
410 BN_CTX_free(ctx);
411 BN_free(&u1); 405 BN_free(&u1);
412 BN_free(&u2); 406 BN_free(&u2);
413 BN_free(&t1); 407 BN_free(&t1);
@@ -424,8 +418,7 @@ dsa_init(DSA *dsa)
424static int 418static int
425dsa_finish(DSA *dsa) 419dsa_finish(DSA *dsa)
426{ 420{
427 if (dsa->method_mont_p) 421 BN_MONT_CTX_free(dsa->method_mont_p);
428 BN_MONT_CTX_free(dsa->method_mont_p);
429 return 1; 422 return 1;
430} 423}
431 424