Commit 9c7a780b authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Fix memory leak reporting.



Free up bio_err after memory leak data has been printed to it.

In int_free_ex_data if ex_data is NULL there is nothing to free up
so return immediately and don't reallocate it.
Reviewed-by: default avatarTim Hudson <tjh@openssl.org>
parent 259c360d
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -423,10 +423,6 @@ int main(int Argc, char *ARGV[])
    if (arg.data != NULL)
        OPENSSL_free(arg.data);

    if (bio_err != NULL) {
        BIO_free(bio_err);
        bio_err = NULL;
    }
#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
    /* Free any duplicate Argv[] storage. */
    if (free_Argv) {
@@ -435,6 +431,10 @@ int main(int Argc, char *ARGV[])
#endif
    apps_shutdown();
    CRYPTO_mem_leaks(bio_err);
    if (bio_err != NULL) {
        BIO_free(bio_err);
        bio_err = NULL;
    }

    OPENSSL_EXIT(ret);
}
+2 −0
Original line number Diff line number Diff line
@@ -500,6 +500,8 @@ static void int_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad)
    EX_CLASS_ITEM *item;
    void *ptr;
    CRYPTO_EX_DATA_FUNCS **storage = NULL;
    if (ex_data == NULL)
        return;
    if ((item = def_get_class(class_index)) == NULL)
        return;
    CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA);