]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
defrag: free defrag tree at exit
authorEric Leblond <eric@regit.org>
Fri, 4 Mar 2016 19:52:45 +0000 (20:52 +0100)
committerEric Leblond <eric@regit.org>
Mon, 7 Mar 2016 22:29:58 +0000 (23:29 +0100)
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)

src/defrag-config.c
src/defrag-config.h
src/defrag.c

index 5bc4be36b67a4a101d9b8d68e09b57e1d7a3047f..a1e1b4f94a94c557b650c92e7a6282a3edfc6b30 100644 (file)
@@ -160,3 +160,11 @@ void DefragPolicyLoadFromConfig(void)
         }
     }
 }
+
+void DefragTreeDestroy(void)
+{
+    if (defrag_tree != NULL) {
+        SCRadixReleaseRadixTree(defrag_tree);
+    }
+    defrag_tree = NULL;
+}
index a6c086ff0313a8667c8eab0eabd782f10fee2302..08abd00b9c1652ecb99dd55da631350c0740537c 100644 (file)
@@ -28,5 +28,6 @@
 void DefragSetDefaultTimeout(intmax_t timeout);
 void DefragPolicyLoadFromConfig(void);
 int DefragPolicyGetHostTimeout(Packet *p);
+void DefragTreeDestroy(void);
 
 #endif /* DEFRAG_CONFIG_H_ */
index 1d86c44868bf5912674143b013e7b59664fd3ddd..484a0994d625cdf5b8b82d8d53b90792fd60a532 100644 (file)
@@ -978,6 +978,7 @@ void DefragDestroy(void)
     DefragHashShutdown();
     DefragContextDestroy(defrag_context);
     defrag_context = NULL;
+    DefragTreeDestroy();
 }
 
 #ifdef UNITTESTS