TAINTED_BUG = 0x00000020, /* a BUG_ON triggered */
TAINTED_SHARED_LIBS = 0x00000040, /* a shared library was loaded */
TAINTED_REDEFINITION = 0x00000080, /* symbol redefinition detected */
+ TAINTED_REPLACED_MEM_ALLOCATOR = 0x00000100, /* memory allocator was replaced using LD_PRELOAD */
};
/* this is a bit field made of TAINTED_*, and is declared in haproxy.c */
/* set of POOL_DBG_* flags */
extern uint pool_debugging;
-int is_trim_enabled(void);
int malloc_trim(size_t pad);
void trim_all_pools(void);
_malloc_trim = get_sym_next_addr("malloc_trim");
}
-int is_trim_enabled(void)
-{
- return !disable_trim && using_default_allocator;
-}
-
/* replace the libc's malloc_trim() so that we can also intercept the calls
* from child libraries when the allocator is not the default one.
*/
/* Report in build options if trim is supported */
static void pools_register_build_options(void)
{
- if (is_trim_enabled() && _malloc_trim) {
+ if (!using_default_allocator) {
char *ptr = NULL;
- memprintf(&ptr, "Support for malloc_trim() is enabled.");
+ memprintf(&ptr, "Running with a replaced memory allocator (e.g. via LD_PRELOAD).");
hap_register_build_opts(ptr, 1);
+ mark_tainted(TAINTED_REPLACED_MEM_ALLOCATOR);
}
}
INITCALL0(STG_REGISTER, pools_register_build_options);