aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNardi Ivan <nardi.ivan@gmail.com>2020-04-08 15:13:48 +0200
committerNardi Ivan <nardi.ivan@gmail.com>2020-04-08 15:15:34 +0200
commite84563f9710ca1996eb7428a22a058527e604431 (patch)
tree3db8529f93e779e4ad900c0a391577cad98fc338
parenta60854bae683c3b16c023d03b02bdcd139ca0bfd (diff)
ndpiReader: fix memory leak in idle sessions purging
-rw-r--r--example/ndpiReader.c1
-rw-r--r--example/reader_util.c10
-rw-r--r--example/reader_util.h1
3 files changed, 10 insertions, 2 deletions
diff --git a/example/ndpiReader.c b/example/ndpiReader.c
index 6457cbf09..91eca9bd2 100644
--- a/example/ndpiReader.c
+++ b/example/ndpiReader.c
@@ -1753,6 +1753,7 @@ static void node_idle_scan_walker(const void *node, ndpi_VISIT which, int depth,
ndpi_free_flow_info_half(flow);
ndpi_free_flow_data_analysis(flow);
+ ndpi_free_flow_tls_data(flow);
ndpi_thread_info[thread_id].workflow->stats.ndpi_flow_count--;
/* adding to a queue (we can't delete it from the tree inline ) */
diff --git a/example/reader_util.c b/example/reader_util.c
index dd1a15d2f..97aa940bd 100644
--- a/example/reader_util.c
+++ b/example/reader_util.c
@@ -456,6 +456,14 @@ void ndpi_flow_info_freer(void *node) {
ndpi_free_flow_info_half(flow);
ndpi_free_flow_data_analysis(flow);
+ ndpi_free_flow_tls_data(flow);
+
+ ndpi_free(flow);
+}
+
+/* ***************************************************** */
+
+void ndpi_free_flow_tls_data(struct ndpi_flow_info *flow) {
if(flow->ssh_tls.server_names) {
ndpi_free(flow->ssh_tls.server_names);
@@ -471,8 +479,6 @@ void ndpi_flow_info_freer(void *node) {
ndpi_free(flow->ssh_tls.tls_supported_versions);
flow->ssh_tls.tls_supported_versions = NULL;
}
-
- ndpi_free(flow);
}
/* ***************************************************** */
diff --git a/example/reader_util.h b/example/reader_util.h
index 942c1f361..c726c9672 100644
--- a/example/reader_util.h
+++ b/example/reader_util.h
@@ -318,6 +318,7 @@ void process_ndpi_collected_info(struct ndpi_workflow * workflow, struct ndpi_fl
u_int32_t ethernet_crc32(const void* data, size_t n_bytes);
void ndpi_flow_info_freer(void *node);
void ndpi_free_flow_data_analysis(struct ndpi_flow_info *flow);
+void ndpi_free_flow_tls_data(struct ndpi_flow_info *flow);
const char* print_cipher_id(u_int32_t cipher);
float ndpi_flow_get_byte_count_entropy(const uint32_t byte_count[256], unsigned int num_bytes);