diff options
author | emanuele-f <faranda@ntop.org> | 2020-01-02 14:39:51 +0100 |
---|---|---|
committer | emanuele-f <faranda@ntop.org> | 2020-01-02 14:39:51 +0100 |
commit | 798bb6e2e113f10d9b710179553e4cef23222a61 (patch) | |
tree | e200ef28aca2890291a3a3657a7c1ee3bf20596f /src | |
parent | 2332cbfefec9a64c77e5c30530f0e397a1388470 (diff) |
Fix leaks and sha1 certificate detection
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/ndpi_main.c | 15 | ||||
-rw-r--r-- | src/lib/protocols/tls.c | 4 |
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]; |