diff options
author | Rich Salz <rsalz@openssl.org> | 2015-04-30 21:37:06 -0400 |
---|---|---|
committer | Rich Salz <rsalz@openssl.org> | 2015-04-30 21:37:06 -0400 |
commit | 23a1d5e97cd543d2b8e1b01dbf0f619b2e5ce540 (patch) | |
tree | 2d9372864fc2b34939d21b3706768ec225c9548f /engines | |
parent | 34166d41892643a36ad2d1f53cc0025e2edc2a39 (diff) | |
download | openssl-23a1d5e97cd543d2b8e1b01dbf0f619b2e5ce540.tar.gz |
free NULL cleanup 7
This gets BN_.*free:
BN_BLINDING_free BN_CTX_free BN_FLG_FREE BN_GENCB_free
BN_MONT_CTX_free BN_RECP_CTX_free BN_clear_free BN_free BUF_MEM_free
Also fix a call to DSA_SIG_free to ccgost engine and remove some #ifdef'd
dead code in engines/e_ubsec.
Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'engines')
-rw-r--r-- | engines/ccgost/gost2001.c | 27 | ||||
-rw-r--r-- | engines/ccgost/gost_ameth.c | 20 | ||||
-rw-r--r-- | engines/ccgost/gost_sign.c | 30 | ||||
-rw-r--r-- | engines/e_cswift.c | 16 | ||||
-rw-r--r-- | engines/e_ubsec.c | 40 |
5 files changed, 39 insertions, 94 deletions
diff --git a/engines/ccgost/gost2001.c b/engines/ccgost/gost2001.c index 83cc693f75..5490a5d760 100644 --- a/engines/ccgost/gost2001.c +++ b/engines/ccgost/gost2001.c @@ -111,10 +111,9 @@ int fill_GOST2001_params(EC_KEY *eckey, int nid) err: if (P) EC_POINT_free(P); if (grp) EC_GROUP_free(grp); - if (ctx) { + if (ctx) BN_CTX_end(ctx); - BN_CTX_free(ctx); - } + BN_CTX_free(ctx); return ok; } @@ -241,15 +240,13 @@ DSA_SIG *gost2001_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey) ret = newsig; err: - if (ctx) { + if (ctx) BN_CTX_end(ctx); - BN_CTX_free(ctx); - } + BN_CTX_free(ctx); if (C) EC_POINT_free(C); - if (md) BN_free(md); - if (!ret && newsig) { + BN_free(md); + if (!ret) DSA_SIG_free(newsig); - } return ret; } @@ -365,11 +362,10 @@ int gost2001_do_verify(const unsigned char *dgst, int dgst_len, } err: if (C) EC_POINT_free(C); - if (ctx) { + if (ctx) BN_CTX_end(ctx); - BN_CTX_free(ctx); - } - if (md) BN_free(md); + BN_CTX_free(ctx); + BN_free(md); return ok; } @@ -418,10 +414,9 @@ int gost2001_compute_public(EC_KEY *ec) ok = 256; err: if (pub_key) EC_POINT_free(pub_key); - if (ctx) { + if (ctx) BN_CTX_end(ctx); - BN_CTX_free(ctx); - } + BN_CTX_free(ctx); return ok; } diff --git a/engines/ccgost/gost_ameth.c b/engines/ccgost/gost_ameth.c index b1615bfa6c..0b694f5cf1 100644 --- a/engines/ccgost/gost_ameth.c +++ b/engines/ccgost/gost_ameth.c @@ -525,12 +525,14 @@ static int param_copy_gost94(EVP_PKEY *to, const EVP_PKEY *from) dto = DSA_new(); EVP_PKEY_assign(to, EVP_PKEY_base_id(from), dto); } -#define COPYBIGNUM(a,b,x) if (a->x) BN_free(a->x); a->x=BN_dup(b->x); - COPYBIGNUM(dto, dfrom, p) - COPYBIGNUM(dto, dfrom, q) - COPYBIGNUM(dto, dfrom, g) - - if (dto->priv_key) + BN_free(dto->p); + dto->p = BN_dup(dfrom->p); + BN_free(dto->q); + dto->q = BN_dup(dfrom->q); + BN_free(dto->g); + dto->g = BN_dup(dfrom->g); + + if (dto->priv_key) gost94_compute_public(dto); return 1; } @@ -758,10 +760,8 @@ static int pub_encode_gost01(X509_PUBKEY *pub, const EVP_PKEY *pk) Y = BN_new(); if (!X || !Y) { GOSTerr(GOST_F_PUB_ENCODE_GOST01, ERR_R_MALLOC_FAILURE); - if (X) - BN_free(X); - if (Y) - BN_free(Y); + BN_free(X); + BN_free(Y); BN_free(order); return 0; } diff --git a/engines/ccgost/gost_sign.c b/engines/ccgost/gost_sign.c index c2516ead0e..543c399688 100644 --- a/engines/ccgost/gost_sign.c +++ b/engines/ccgost/gost_sign.c @@ -114,13 +114,11 @@ DSA_SIG *gost_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) ret = newsig; err: BN_free(md); - if (ctx) { + if (ctx) BN_CTX_end(ctx); - BN_CTX_free(ctx); - } - if (!ret && newsig) { + BN_CTX_free(ctx); + if (!ret) DSA_SIG_free(newsig); - } return ret; } @@ -214,13 +212,11 @@ int gost_do_verify(const unsigned char *dgst, int dgst_len, GOSTerr(GOST_F_GOST_DO_VERIFY, GOST_R_SIGNATURE_MISMATCH); } err: - if (md) - BN_free(md); - if (ctx) { + BN_free(md); + if (ctx) BN_CTX_end(ctx); - BN_CTX_free(ctx); - } - return ok; + BN_CTX_free(ctx); + return (ok == 0); } /* @@ -268,19 +264,13 @@ int fill_GOST94_params(DSA *dsa, int nid) return 0; } #define dump_signature(a,b,c) - if (dsa->p) { - BN_free(dsa->p); - } + BN_free(dsa->p); dsa->p = NULL; BN_dec2bn(&(dsa->p), params->p); - if (dsa->q) { - BN_free(dsa->q); - } + BN_free(dsa->q); dsa->q = NULL; BN_dec2bn(&(dsa->q), params->q); - if (dsa->g) { - BN_free(dsa->g); - } + BN_free(dsa->g); dsa->g = NULL; BN_dec2bn(&(dsa->g), params->a); return 1; diff --git a/engines/e_cswift.c b/engines/e_cswift.c index adab4d4188..848d10f018 100644 --- a/engines/e_cswift.c +++ b/engines/e_cswift.c @@ -717,10 +717,8 @@ static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, OPENSSL_free(sw_param.up.crt.dmq1.value); if (sw_param.up.crt.iqmp.value) OPENSSL_free(sw_param.up.crt.iqmp.value); - if (result) - BN_free(result); - if (argument) - BN_free(argument); + BN_free(result); + BN_free(argument); if (acquired) release_context(hac); return to_return; @@ -877,10 +875,9 @@ static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa) err: if (acquired) release_context(hac); - if (ctx) { + if (ctx) BN_CTX_end(ctx); - BN_CTX_free(ctx); - } + BN_CTX_free(ctx); return to_return; } @@ -980,10 +977,9 @@ static int cswift_dsa_verify(const unsigned char *dgst, int dgst_len, err: if (acquired) release_context(hac); - if (ctx) { + if (ctx) BN_CTX_end(ctx); - BN_CTX_free(ctx); - } + BN_CTX_free(ctx); return to_return; } # endif diff --git a/engines/e_ubsec.c b/engines/e_ubsec.c index 6f09ffb965..9e2662e981 100644 --- a/engines/e_ubsec.c +++ b/engines/e_ubsec.c @@ -680,40 +680,6 @@ static int ubsec_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, } # endif -# ifndef OPENSSL_NO_DSA -# ifdef NOT_USED -static int ubsec_dsa_mod_exp(DSA *dsa, BIGNUM *rr, BIGNUM *a1, - BIGNUM *p1, BIGNUM *a2, BIGNUM *p2, BIGNUM *m, - BN_CTX *ctx, BN_MONT_CTX *in_mont) -{ - BIGNUM t; - int to_return = 0; - - BN_init(&t); - /* let rr = a1 ^ p1 mod m */ - if (!ubsec_mod_exp(rr, a1, p1, m, ctx)) - goto end; - /* let t = a2 ^ p2 mod m */ - if (!ubsec_mod_exp(&t, a2, p2, m, ctx)) - goto end; - /* let rr = rr * t mod m */ - if (!BN_mod_mul(rr, rr, &t, m, ctx)) - goto end; - to_return = 1; - end: - BN_free(&t); - return to_return; -} - -static int ubsec_mod_exp_dsa(DSA *dsa, BIGNUM *r, BIGNUM *a, - const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, - BN_MONT_CTX *m_ctx) -{ - return ubsec_mod_exp(r, a, p, m, ctx); -} -# endif -# endif - # ifndef OPENSSL_NO_RSA /* @@ -825,10 +791,8 @@ static DSA_SIG *ubsec_dsa_do_sign(const unsigned char *dgst, int dlen, err: if (!to_return) { - if (r) - BN_free(r); - if (s) - BN_free(s); + BN_free(r); + BN_free(s); } BN_clear_free(&m); return to_return; |