Overriding malloc

Florian Weimer fweimer@redhat.com
Tue Jul 1 09:10:00 GMT 2014


On 07/01/2014 10:56 AM, Will Newton wrote:
> On 1 July 2014 09:28, Florian Weimer <fweimer@redhat.com> wrote:
>> We need to support overriding malloc through LD_PRELOAD and other forms of
>> symbol interposition.  Once you override malloc, you also have to override
>> free, realloc and calloc at least.
>>
>> If the application (or one of its libraries) uses posix_memalign etc., these
>> have to be overridden as well.  Same for the malloc_usable_size.
>>
>> The question is if overriding those should is required even if the
>> application does not call those fringe malloc-related functions, i.e. if
>> glibc should behave as if it never calls them if malloc has been overridden.
>>
>> If yes, we should likely remove the remaining call to malloc_usable_size
>> from the code base.
>
> Are you referring to the assert in nis/nss_nis/nis-netgrp.c?

Yes, indeed.  I'm somewhat surprised there aren't any other callers left.

> IMO malloc_usable_size should not be called from within glibc because
> it is almost always a sign of bad code.

It could help to avoid the common case of bad exponential resizing 
behavior.  Allocating power-of-two buffer sizes tends to waste a lot of 
memory.  But that's not relevant for glibc, I admit.

 > A good subset of the allocator
> functions to require to be overridden would be the union of C90, C11
> and POSIX:

Should we put this into the manual?

-- 
Florian Weimer / Red Hat Product Security



More information about the Libc-alpha mailing list