From 9f5e5b90e5f460a9038f5e7ec2d8672049f861c1 Mon Sep 17 00:00:00 2001 From: "Oleg A. Arkhangelsky" Date: Tue, 29 Oct 2019 21:11:31 +0300 Subject: Don't leak memory in live capture mode --- example/ndpiReader.c | 1 + example/reader_util.c | 10 ++++++++-- example/reader_util.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) (limited to 'example') diff --git a/example/ndpiReader.c b/example/ndpiReader.c index a5481d342..5efa7bdc8 100644 --- a/example/ndpiReader.c +++ b/example/ndpiReader.c @@ -1784,6 +1784,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 6cb150d87..be150ecf8 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 3374f993f..9165ee1e6 100644 --- a/example/reader_util.h +++ b/example/reader_util.h @@ -299,6 +299,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); -- cgit v1.2.3 From cfcbfe1e8fe3f98476ca464f36e7efd106637dc3 Mon Sep 17 00:00:00 2001 From: "Oleg A. Arkhangelsky" Date: Tue, 29 Oct 2019 21:20:56 +0300 Subject: Align CSV header with actual row data --- example/ndpiReader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'example') diff --git a/example/ndpiReader.c b/example/ndpiReader.c index a5481d342..f44781d39 100644 --- a/example/ndpiReader.c +++ b/example/ndpiReader.c @@ -602,7 +602,7 @@ void printCSVHeader() { /* Flow info */ fprintf(csv_fp, "client_info,server_info,"); fprintf(csv_fp, "tls_version,ja3c,tls_client_unsafe,"); - fprintf(csv_fp, "tls_server_info,ja3s,tls_server_unsafe,"); + fprintf(csv_fp, "ja3s,tls_server_unsafe,"); fprintf(csv_fp, "ssh_client_hassh,ssh_server_hassh"); fprintf(csv_fp, "\n"); } -- cgit v1.2.3 From dfd962a8bc09286e426d728d65ae37bf2f122257 Mon Sep 17 00:00:00 2001 From: "Oleg A. Arkhangelsky" Date: Tue, 29 Oct 2019 21:23:42 +0300 Subject: Change type Use double type instead of float when printing time for CSV file. Float type is too small for 64 bit int time so cast corrupts value. --- example/ndpiReader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'example') diff --git a/example/ndpiReader.c b/example/ndpiReader.c index a5481d342..b8d914d08 100644 --- a/example/ndpiReader.c +++ b/example/ndpiReader.c @@ -1011,7 +1011,7 @@ static void printFlow(u_int16_t id, struct ndpi_flow_info *flow, u_int16_t threa if(csv_fp != NULL) { float data_ratio = ndpi_data_ratio(flow->src2dst_bytes, flow->dst2src_bytes); - float f = (float)flow->first_seen, l = (float)flow->last_seen; + double f = (double)flow->first_seen, l = (double)flow->last_seen; /* PLEASE KEEP IN SYNC WITH printCSVHeader() */ -- cgit v1.2.3