summaryrefslogtreecommitdiff
path: root/nDPId.c
diff options
context:
space:
mode:
Diffstat (limited to 'nDPId.c')
-rw-r--r--nDPId.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/nDPId.c b/nDPId.c
index b6db6ca9f..118cb5eab 100644
--- a/nDPId.c
+++ b/nDPId.c
@@ -1356,7 +1356,8 @@ static int alloc_detection_data(struct nDPId_flow * const flow)
goto error;
}
- ndpi_init_data_analysis(&flow->flow_extended.flow_analysis->iat, nDPId_options.max_packets_per_flow_to_analyse);
+ ndpi_init_data_analysis(&flow->flow_extended.flow_analysis->iat,
+ nDPId_options.max_packets_per_flow_to_analyse - 1 /* first packet IAT is always 0 */);
ndpi_init_data_analysis(&flow->flow_extended.flow_analysis->pktlen,
nDPId_options.max_packets_per_flow_to_analyse);
flow->flow_extended.flow_analysis->directions = (uint8_t *)ndpi_malloc(
@@ -2429,7 +2430,7 @@ static void jsonize_data_analysis(struct nDPId_reader_thread * const reader_thre
ndpi_serialize_string_float(&workflow->ndpi_serializer, "ent", ndpi_data_entropy(&analysis->iat), "%.1f");
ndpi_serialize_start_of_list(&workflow->ndpi_serializer, "data");
- for (uint16_t i = 0; i < analysis->iat.num_values_array_len; ++i)
+ for (uint16_t i = 0; i < ndpi_min(analysis->iat.num_data_entries, analysis->iat.num_values_array_len); ++i)
{
ndpi_serialize_string_uint32(&workflow->ndpi_serializer, "", analysis->iat.values[i]);
}
@@ -2445,7 +2446,8 @@ static void jsonize_data_analysis(struct nDPId_reader_thread * const reader_thre
ndpi_serialize_string_float(&workflow->ndpi_serializer, "ent", ndpi_data_entropy(&analysis->pktlen), "%.1f");
ndpi_serialize_start_of_list(&workflow->ndpi_serializer, "data");
- for (uint16_t i = 0; i < analysis->pktlen.num_values_array_len; ++i)
+ for (uint16_t i = 0; i < ndpi_min(analysis->pktlen.num_data_entries, analysis->pktlen.num_values_array_len);
+ ++i)
{
ndpi_serialize_string_uint32(&workflow->ndpi_serializer, "", analysis->pktlen.values[i]);
}