aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols/tls.c
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2021-08-17 19:04:07 +0200
committerLuca Deri <deri@ntop.org>2021-08-17 19:04:07 +0200
commit821f4c924945496f4ef6f943669b5be621d56381 (patch)
tree4b7e6ebdd7daa32e0a54864b8de848f527fc4583 /src/lib/protocols/tls.c
parenta2ea67152c63f28b75b639196681dc0ad7b1030e (diff)
Fixed some invalid TLS guesses
Diffstat (limited to 'src/lib/protocols/tls.c')
-rw-r--r--src/lib/protocols/tls.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lib/protocols/tls.c b/src/lib/protocols/tls.c
index ecd5f177e..67909fc87 100644
--- a/src/lib/protocols/tls.c
+++ b/src/lib/protocols/tls.c
@@ -918,10 +918,14 @@ static int ndpi_search_tls_tcp(struct ndpi_detection_module_struct *ndpi_struct,
processed += packet->payload_packet_len;
}
- } else {
+ } else if(len > 5 /* Minimum block size */) {
/* Process element as a whole */
if(content_type == 0x17 /* Application Data */) {
- ndpi_looks_like_tls(ndpi_struct, flow);
+ u_int32_t block_len = ntohs((flow->l4.tcp.tls.message.buffer[3] << 16) + (flow->l4.tcp.tls.message.buffer[4] << 8));
+
+ /* Let's do a quick check to make sure this really looks like TLS */
+ if(block_len < 16384 /* Max TLS block size */)
+ ndpi_looks_like_tls(ndpi_struct, flow);
if(flow->l4.tcp.tls.certificate_processed) {
if(flow->l4.tcp.tls.num_tls_blocks < ndpi_struct->num_tls_blocks_to_follow)