From: Martin Willi Date: Tue, 2 Apr 2013 13:47:55 +0000 (+0200) Subject: leak-detective: call tzset() explicitly before enabling leak detective X-Git-Tag: 5.1.0dr1~155^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7e3f6299d5407445393e336f0c53746fafd344d6;p=thirdparty%2Fstrongswan.git 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. --- diff --git a/src/libstrongswan/utils/leak_detective.c b/src/libstrongswan/utils/leak_detective.c index 69e539d641..2883b88d9d 100644 --- a/src/libstrongswan/utils/leak_detective.c +++ b/src/libstrongswan/utils/leak_detective.c @@ -27,6 +27,7 @@ #include #include #include +#include #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();