aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Deri <lucaderi@users.noreply.github.com>2019-11-03 17:13:49 +0100
committerGitHub <noreply@github.com>2019-11-03 17:13:49 +0100
commit9e42b525ecc5bcf618be3e0ff97e8ba0fe3d305c (patch)
treed48d6faf5e96bfe72817f8f1689f8ddd4627c0a4
parent02d69b72f54a30ec48045832fc40e0909e0f413d (diff)
parent9f5e5b90e5f460a9038f5e7ec2d8672049f861c1 (diff)
Merge pull request #806 from oleg-umnik/fix_1
Don't leak memory in live capture mode
-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 f70ebd785..b1a45f280 100644
--- a/example/ndpiReader.c
+++ b/example/ndpiReader.c
@@ -1805,6 +1805,7 @@ static void node_idle_scan_walker(const void *node, ndpi_VISIT which, int depth,
undetected_flows_deleted = 1;
ndpi_free_flow_info_half(flow);
+ ndpi_free_flow_data_analysis(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 44e02616e..d72a494fa 100644
--- a/example/reader_util.c
+++ b/example/reader_util.c
@@ -457,6 +457,14 @@ void ndpi_flow_info_freer(void *node) {
ndpi_free_flow_info_half(flow);
+ ndpi_free_flow_data_analysis(flow);
+
+ ndpi_free(flow);
+}
+
+/* ***************************************************** */
+
+void ndpi_free_flow_data_analysis(struct ndpi_flow_info *flow) {
if(flow->iat_c_to_s) ndpi_free_data_analysis(flow->iat_c_to_s);
if(flow->iat_s_to_c) ndpi_free_data_analysis(flow->iat_s_to_c);
@@ -464,8 +472,6 @@ void ndpi_flow_info_freer(void *node) {
if(flow->pktlen_s_to_c) ndpi_free_data_analysis(flow->pktlen_s_to_c);
if(flow->iat_flow) ndpi_free_data_analysis(flow->iat_flow);
-
- ndpi_free(flow);
}
/* ***************************************************** */
diff --git a/example/reader_util.h b/example/reader_util.h
index 93df6b03a..1b9b6babd 100644
--- a/example/reader_util.h
+++ b/example/reader_util.h
@@ -303,6 +303,7 @@ int ndpi_workflow_node_cmp(const void *a, const void *b);
void process_ndpi_collected_info(struct ndpi_workflow * workflow, struct ndpi_flow_info *flow);
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);
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);