summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/dh/dh_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/dh/dh_lib.c')
-rw-r--r--src/lib/libcrypto/dh/dh_lib.c8
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);