In crypto/ex_data.c there is a function called "int_dup_ex_data" which calls the ex_data's dup_func. However, the prototype for the dup_func only has "void* ptr" instead of "void** ptr"
It appears that the for loop should either continue if the ex_data has a dup_func (without the subsequent call to CRYPTO_set_ex_data) or that the ptr should be void** * If the CRYPTO_set_ex_data command stays, any values set in the dup_func will be clobbered. * If "ptr" is not a void**, the dup_func doesn't have a chance to modify what "ptr" refers to before the call to CRYPTO_set_ex_data.In crypto/ex_data.c there is a function called "int_dup_ex_data" which calls the ex_data's dup_func. However, the prototype for the dup_func only has "void* ptr" instead of "void** ptr"
It appears that the for loop should either continue if the ex_data has a dup_func (without the subsequent call to CRYPTO_set_ex_data) or that the ptr should be void**
* If the CRYPTO_set_ex_data command stays, any values set in the dup_func will be clobbered.
* If "ptr" is not a void**, the dup_func doesn't have a chance to modify what "ptr" refers to before the call to CRYPTO_set_ex_data.