From: Eric Leblond Date: Fri, 4 Mar 2016 19:52:45 +0000 (+0100) Subject: defrag: free defrag tree at exit X-Git-Tag: suricata-3.0.1RC1~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3677506333e47323093fadc7c24621ae98699a8;p=thirdparty%2Fsuricata.git defrag: free defrag tree at exit This fixes: 72 bytes in 3 blocks are definitely lost in loss record 153 of 316 at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x9AF041: SCRadixCreateRadixTree (util-radix-tree.c:430) by 0x50FF5D: DefragPolicyLoadFromConfig (defrag-config.c:138) by 0x5129F5: DefragInit (defrag.c:962) by 0x87ECFD: UnixSocketPcapFilesCheck (runmode-unix-socket.c:386) by 0x90FEC0: UnixCommandBackgroundTasks (unix-manager.c:430) by 0x913C6D: UnixManager (unix-manager.c:980) by 0x9072F3: TmThreadsManagement (tm-threads.c:602) by 0x68DE283: start_thread (pthread_create.c:333) by 0x80A6A4C: clone (in /lib/x86_64-linux-gnu/libc-2.21.so) --- diff --git a/src/defrag-config.c b/src/defrag-config.c index 5bc4be36b6..a1e1b4f94a 100644 --- a/src/defrag-config.c +++ b/src/defrag-config.c @@ -160,3 +160,11 @@ void DefragPolicyLoadFromConfig(void) } } } + +void DefragTreeDestroy(void) +{ + if (defrag_tree != NULL) { + SCRadixReleaseRadixTree(defrag_tree); + } + defrag_tree = NULL; +} diff --git a/src/defrag-config.h b/src/defrag-config.h index a6c086ff03..08abd00b9c 100644 --- a/src/defrag-config.h +++ b/src/defrag-config.h @@ -28,5 +28,6 @@ void DefragSetDefaultTimeout(intmax_t timeout); void DefragPolicyLoadFromConfig(void); int DefragPolicyGetHostTimeout(Packet *p); +void DefragTreeDestroy(void); #endif /* DEFRAG_CONFIG_H_ */ diff --git a/src/defrag.c b/src/defrag.c index 1d86c44868..484a0994d6 100644 --- a/src/defrag.c +++ b/src/defrag.c @@ -978,6 +978,7 @@ void DefragDestroy(void) DefragHashShutdown(); DefragContextDestroy(defrag_context); defrag_context = NULL; + DefragTreeDestroy(); } #ifdef UNITTESTS