aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoremanuele-f <faranda@ntop.org>2020-01-02 14:39:51 +0100
committeremanuele-f <faranda@ntop.org>2020-01-02 14:39:51 +0100
commit798bb6e2e113f10d9b710179553e4cef23222a61 (patch)
treee200ef28aca2890291a3a3657a7c1ee3bf20596f /src
parent2332cbfefec9a64c77e5c30530f0e397a1388470 (diff)
Fix leaks and sha1 certificate detection
Diffstat (limited to 'src')
-rw-r--r--src/lib/ndpi_main.c15
-rw-r--r--src/lib/protocols/tls.c4
2 files changed, 11 insertions, 8 deletions
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index 7ad648ee6..9296d10a2 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -3835,12 +3835,10 @@ static int ndpi_init_packet_header(struct ndpi_detection_module_struct *ndpi_str
u_int8_t backup;
u_int16_t backup1, backup2;
- if(flow->http.url) ndpi_free(flow->http.url);
- if(flow->http.content_type) ndpi_free(flow->http.content_type);
- if(flow->http.user_agent) ndpi_free(flow->http.user_agent);
-
- if(flow->l4.tcp.tls.message.buffer)
- ndpi_free(flow->l4.tcp.tls.message.buffer);
+ if(flow->http.url) ndpi_free(flow->http.url), flow->http.url = NULL;
+ if(flow->http.content_type) ndpi_free(flow->http.content_type), flow->http.content_type = NULL;
+ if(flow->http.user_agent) ndpi_free(flow->http.user_agent), flow->http.user_agent = NULL;
+ if(flow->l4.tcp.tls.message.buffer) ndpi_free(flow->l4.tcp.tls.message.buffer), flow->l4.tcp.tls.message.buffer = NULL;
backup = flow->num_processed_pkts;
backup1 = flow->guessed_protocol_id;
@@ -6426,6 +6424,11 @@ void ndpi_free_flow(struct ndpi_flow_struct *flow) {
ndpi_free(flow->l4.tcp.tls.srv_cert_fingerprint_ctx);
}
+ if(flow->l4_proto == IPPROTO_TCP) {
+ if(flow->l4.tcp.tls.message.buffer)
+ ndpi_free(flow->l4.tcp.tls.message.buffer);
+ }
+
ndpi_free(flow);
}
}
diff --git a/src/lib/protocols/tls.c b/src/lib/protocols/tls.c
index 88bfa7590..655de7e2f 100644
--- a/src/lib/protocols/tls.c
+++ b/src/lib/protocols/tls.c
@@ -394,7 +394,7 @@ static void processCertificateElements(struct ndpi_detection_module_struct *ndpi
flow->protos.stun_ssl.ssl.server_names = newstr;
flow->protos.stun_ssl.ssl.server_names[flow->protos.stun_ssl.ssl.server_names_len] = ',';
strncpy(&flow->protos.stun_ssl.ssl.server_names[flow->protos.stun_ssl.ssl.server_names_len+1],
- dNSName, dNSName_len-1);
+ dNSName, dNSName_len+1);
flow->protos.stun_ssl.ssl.server_names[newstr_len] = '\0';
flow->protos.stun_ssl.ssl.server_names_len = newstr_len;
}
@@ -581,7 +581,7 @@ static int ndpi_search_tls_tcp(struct ndpi_detection_module_struct *ndpi_struct,
/* Split the element in blocks */
u_int16_t processed = 5;
- while(processed < len) {
+ while((processed+4) < len) {
const u_int8_t *block = (const u_int8_t *)&flow->l4.tcp.tls.message.buffer[processed];
u_int16_t block_len = (block[1] << 16) + (block[2] << 8) + block[3];