BIO_free should call method->destroy before free'ing member fields
Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/1007)
This commit is contained in:
parent
2bbf0baa95
commit
a14a740dbe
1 changed files with 4 additions and 3 deletions
|
@ -98,6 +98,7 @@ int BIO_set(BIO *bio, const BIO_METHOD *method)
|
|||
|
||||
bio->lock = CRYPTO_THREAD_lock_new();
|
||||
if (bio->lock == NULL) {
|
||||
BIOerr(BIO_F_BIO_SET, ERR_R_MALLOC_FAILURE);
|
||||
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_BIO, bio, &bio->ex_data);
|
||||
return 0;
|
||||
}
|
||||
|
@ -131,13 +132,13 @@ int BIO_free(BIO *a)
|
|||
((i = (int)a->callback(a, BIO_CB_FREE, NULL, 0, 0L, 1L)) <= 0))
|
||||
return i;
|
||||
|
||||
if ((a->method != NULL) && (a->method->destroy != NULL))
|
||||
a->method->destroy(a);
|
||||
|
||||
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_BIO, a, &a->ex_data);
|
||||
|
||||
CRYPTO_THREAD_lock_free(a->lock);
|
||||
|
||||
if ((a->method != NULL) && (a->method->destroy != NULL))
|
||||
a->method->destroy(a);
|
||||
|
||||
OPENSSL_free(a);
|
||||
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue