Relating to a previous question of mine
I\'ve successfully interposed malloc
, but calloc
seems to be more problematic.
That is with ce
I know I am a bit late (6 years). But I wanted to override calloc()
today and faced a problem because dlsym()
internally uses calloc()
. I solved it using a simple technique and thought of sharing it here:
static unsigned char buffer[8192];
void *calloc(size_t nmemb, size_t size)
{
if (calloc_ptr == NULL) // obtained from dlsym
return buffer;
init(); // uses dlsym() to find address of the real calloc()
return calloc_ptr(len);
}
void free(void *in)
{
if (in == buffer)
return;
free_ptr(in);
}
buffer
satisfies the need of dlsym()
till the real calloc()
has been located and my calloc_ptr
function pointer initialized.