leak-detective: call tzset() explicitly before enabling leak detective
tzset() is hard to whitelist on some systems, as there is no symbol involved. Call tzset() explicitly before initialization to avoid false positives.
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
#include <netdb.h>
|
||||
#include <locale.h>
|
||||
#include <dlfcn.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "leak_detective.h"
|
||||
|
||||
@@ -283,12 +284,6 @@ char *whitelist[] = {
|
||||
"pthread_setspecific",
|
||||
"__pthread_setspecific",
|
||||
/* glibc functions */
|
||||
"mktime",
|
||||
"ctime",
|
||||
"__gmtime_r",
|
||||
"localtime_r",
|
||||
"tzset",
|
||||
"time_printf_hook",
|
||||
"inet_ntoa",
|
||||
"strerror",
|
||||
"getprotobyname",
|
||||
@@ -366,6 +361,14 @@ char *whitelist[] = {
|
||||
"gnutls_global_init",
|
||||
};
|
||||
|
||||
/**
|
||||
* Some functions are hard to whitelist, as they don't use a symbol directly.
|
||||
* Use some static initialization to suppress them on leak reports
|
||||
*/
|
||||
static void init_static_allocations()
|
||||
{
|
||||
tzset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Hashtable hash function
|
||||
@@ -748,6 +751,8 @@ leak_detective_t *leak_detective_create()
|
||||
lock = spinlock_create();
|
||||
thread_disabled = thread_value_create(NULL);
|
||||
|
||||
init_static_allocations();
|
||||
|
||||
if (getenv("LEAK_DETECTIVE_DISABLE") == NULL)
|
||||
{
|
||||
enable_leak_detective();
|
||||
|
||||
Reference in New Issue
Block a user