Fix memory leak in BIO_free if there is no destroy function.
authorMatt Caswell <matt@openssl.org>
Wed, 9 Jul 2014 22:29:17 +0000 (23:29 +0100)
committerMatt Caswell <matt@openssl.org>
Wed, 9 Jul 2014 22:29:17 +0000 (23:29 +0100)
Based on an original patch by Neitrino Photonov <neitrinoph@gmail.com>

PR#3439

crypto/bio/bio_lib.c

index 9c9646afa8a22c3a6a208877c76e7f92d8458f31..4793a453e4afa22f3431c9daf39eec93e71fc020 100644 (file)
@@ -132,8 +132,8 @@ int BIO_free(BIO *a)
 
        CRYPTO_free_ex_data(CRYPTO_EX_INDEX_BIO, a, &a->ex_data);
 
 
        CRYPTO_free_ex_data(CRYPTO_EX_INDEX_BIO, a, &a->ex_data);
 
-       if ((a->method == NULL) || (a->method->destroy == NULL)) return(1);
-       a->method->destroy(a);
+       if ((a->method != NULL) && (a->method->destroy != NULL))
+               a->method->destroy(a);
        OPENSSL_free(a);
        return(1);
        }
        OPENSSL_free(a);
        return(1);
        }