summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/dsa/dsa_lib.c
diff options
context:
space:
mode:
authormarkus <>2001-04-23 07:46:00 +0000
committermarkus <>2001-04-23 07:46:00 +0000
commitb32892991f70744ca178482fe884c025b4782b1e (patch)
tree85bc1ff1cac03d5ce1f6f03f4eea6c3886398df1 /src/lib/libcrypto/dsa/dsa_lib.c
parent7bdbb2116dd933f7b4639bd9028ed79bfc1c12f9 (diff)
downloadopenbsd-b32892991f70744ca178482fe884c025b4782b1e.tar.gz
openbsd-b32892991f70744ca178482fe884c025b4782b1e.tar.bz2
openbsd-b32892991f70744ca178482fe884c025b4782b1e.zip
import DSA changes from 0.9.6a (Bleichenbacher attack), ok provos@/deraadt@
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_lib.c')
-rw-r--r--src/lib/libcrypto/dsa/dsa_lib.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_lib.c b/src/lib/libcrypto/dsa/dsa_lib.c
index b31b946ad3..15f667a203 100644
--- a/src/lib/libcrypto/dsa/dsa_lib.c
+++ b/src/lib/libcrypto/dsa/dsa_lib.c
@@ -173,13 +173,13 @@ DSA *DSA_new_method(ENGINE *engine)
173 173
174 ret->references=1; 174 ret->references=1;
175 ret->flags=meth->flags; 175 ret->flags=meth->flags;
176 CRYPTO_new_ex_data(dsa_meth,ret,&ret->ex_data);
176 if ((meth->init != NULL) && !meth->init(ret)) 177 if ((meth->init != NULL) && !meth->init(ret))
177 { 178 {
179 CRYPTO_free_ex_data(dsa_meth,ret,&ret->ex_data);
178 OPENSSL_free(ret); 180 OPENSSL_free(ret);
179 ret=NULL; 181 ret=NULL;
180 } 182 }
181 else
182 CRYPTO_new_ex_data(dsa_meth,ret,&ret->ex_data);
183 183
184 return(ret); 184 return(ret);
185 } 185 }
@@ -204,12 +204,12 @@ void DSA_free(DSA *r)
204 } 204 }
205#endif 205#endif
206 206
207 CRYPTO_free_ex_data(dsa_meth, r, &r->ex_data);
208
209 meth = ENGINE_get_DSA(r->engine); 207 meth = ENGINE_get_DSA(r->engine);
210 if(meth->finish) meth->finish(r); 208 if(meth->finish) meth->finish(r);
211 ENGINE_finish(r->engine); 209 ENGINE_finish(r->engine);
212 210
211 CRYPTO_free_ex_data(dsa_meth, r, &r->ex_data);
212
213 if (r->p != NULL) BN_clear_free(r->p); 213 if (r->p != NULL) BN_clear_free(r->p);
214 if (r->q != NULL) BN_clear_free(r->q); 214 if (r->q != NULL) BN_clear_free(r->q);
215 if (r->g != NULL) BN_clear_free(r->g); 215 if (r->g != NULL) BN_clear_free(r->g);