diff options
Diffstat (limited to 'src/lib/protocols')
-rw-r--r-- | src/lib/protocols/tls.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/lib/protocols/tls.c b/src/lib/protocols/tls.c index b0e192baa..08ce81edd 100644 --- a/src/lib/protocols/tls.c +++ b/src/lib/protocols/tls.c @@ -569,10 +569,13 @@ static int ndpi_search_tls_tcp(struct ndpi_detection_module_struct *ndpi_struct, packet->payload = p, packet->payload_packet_len = p_len; /* Restore */ flow->l4.tcp.tls.message.buffer_used -= len; - memmove(flow->l4.tcp.tls.message.buffer, - &flow->l4.tcp.tls.message.buffer[len], - flow->l4.tcp.tls.message.buffer_used); - + if(flow->l4.tcp.tls.message.buffer_used > 0) + memmove(flow->l4.tcp.tls.message.buffer, + &flow->l4.tcp.tls.message.buffer[len], + flow->l4.tcp.tls.message.buffer_used); + else + break; + #ifdef DEBUG_TLS_MEMORY printf("[TLS Mem] Left memory buffer %u bytes\n", flow->l4.tcp.tls.message.buffer_used); #endif |