Fixed crash (SIGSEGV) when freeing of ex_data stumbles upon a NULL-pointer.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
Mouse 2016-01-01 23:30:02 -05:00 committed by Richard Levitte
parent d65a8d0b7e
commit ad81ca9061

View File

@ -522,8 +522,9 @@ static void int_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad)
for (i = 0; i < mx; i++) {
if (storage[i] && storage[i]->free_func) {
ptr = CRYPTO_get_ex_data(ad, i);
storage[i]->free_func(obj, ptr, ad, i,
storage[i]->argl, storage[i]->argp);
if (ptr)
storage[i]->free_func(obj, ptr, ad, i,
storage[i]->argl, storage[i]->argp);
}
}
if (storage)