diff options
Diffstat (limited to 'src/lib/libcrypto/dh/dh_lib.c')
-rw-r--r-- | src/lib/libcrypto/dh/dh_lib.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/libcrypto/dh/dh_lib.c b/src/lib/libcrypto/dh/dh_lib.c index 66803b5565..96f118c153 100644 --- a/src/lib/libcrypto/dh/dh_lib.c +++ b/src/lib/libcrypto/dh/dh_lib.c | |||
@@ -168,13 +168,13 @@ DH *DH_new_method(ENGINE *engine) | |||
168 | ret->method_mont_p=NULL; | 168 | ret->method_mont_p=NULL; |
169 | ret->references = 1; | 169 | ret->references = 1; |
170 | ret->flags=meth->flags; | 170 | ret->flags=meth->flags; |
171 | CRYPTO_new_ex_data(dh_meth,ret,&ret->ex_data); | ||
171 | if ((meth->init != NULL) && !meth->init(ret)) | 172 | if ((meth->init != NULL) && !meth->init(ret)) |
172 | { | 173 | { |
174 | CRYPTO_free_ex_data(dh_meth,ret,&ret->ex_data); | ||
173 | OPENSSL_free(ret); | 175 | OPENSSL_free(ret); |
174 | ret=NULL; | 176 | ret=NULL; |
175 | } | 177 | } |
176 | else | ||
177 | CRYPTO_new_ex_data(dh_meth,ret,&ret->ex_data); | ||
178 | return(ret); | 178 | return(ret); |
179 | } | 179 | } |
180 | 180 | ||
@@ -196,12 +196,12 @@ void DH_free(DH *r) | |||
196 | } | 196 | } |
197 | #endif | 197 | #endif |
198 | 198 | ||
199 | CRYPTO_free_ex_data(dh_meth, r, &r->ex_data); | ||
200 | |||
201 | meth = ENGINE_get_DH(r->engine); | 199 | meth = ENGINE_get_DH(r->engine); |
202 | if(meth->finish) meth->finish(r); | 200 | if(meth->finish) meth->finish(r); |
203 | ENGINE_finish(r->engine); | 201 | ENGINE_finish(r->engine); |
204 | 202 | ||
203 | CRYPTO_free_ex_data(dh_meth, r, &r->ex_data); | ||
204 | |||
205 | if (r->p != NULL) BN_clear_free(r->p); | 205 | if (r->p != NULL) BN_clear_free(r->p); |
206 | if (r->g != NULL) BN_clear_free(r->g); | 206 | if (r->g != NULL) BN_clear_free(r->g); |
207 | if (r->q != NULL) BN_clear_free(r->q); | 207 | if (r->q != NULL) BN_clear_free(r->q); |