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.

Reply via email to