aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYingpei Zeng <zengyingpei@cmhi.chinamobile.com>2018-04-16 18:47:49 +0800
committerYingpei Zeng <zengyingpei@cmhi.chinamobile.com>2018-04-16 18:47:49 +0800
commit5950ad7ef82c329c56d17c11e9b34810180a7c16 (patch)
tree06a2187fcdeb99ab02ca19d0708beef5d83c8461 /src
parent4b720c4f3c8e74950e1c2b1c6dc10aa2c4c4c73e (diff)
Add length check before several memcmps in msn.c [ASan detected].
Diffstat (limited to 'src')
-rw-r--r--src/lib/protocols/msn.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/protocols/msn.c b/src/lib/protocols/msn.c
index 4c5b73dcd..ec090cf00 100644
--- a/src/lib/protocols/msn.c
+++ b/src/lib/protocols/msn.c
@@ -442,15 +442,16 @@ static void ndpi_search_msn_tcp(struct ndpi_detection_module_struct *ndpi_struct
}
NDPI_LOG_DBG(ndpi_struct, "msn 7\n");
- if (flow->packet_counter <= MAX_PACKETS_FOR_MSN) {
- if (memcmp(&packet->payload[0], "MSG ", 4) == 0
+ if (flow->packet_counter <= MAX_PACKETS_FOR_MSN) {
+ if (packet->payload_packet_len >=4 && (memcmp(&packet->payload[0], "MSG ", 4) == 0
|| memcmp(&packet->payload[0], "PNG", 3) == 0
|| memcmp(&packet->payload[0], "QNG ", 4) == 0
|| memcmp(&packet->payload[0], "OUT", 3) == 0
|| memcmp(&packet->payload[0], "RNG ", 4) == 0
|| memcmp(&packet->payload[0], "NLN ", 4) == 0
|| memcmp(&packet->payload[0], "UBX ", 4) == 0
- || memcmp(&packet->payload[0], "XFR ", 4) == 0) {
+ || memcmp(&packet->payload[0], "XFR ", 4) == 0)
+ ){
ndpi_int_msn_add_connection(ndpi_struct, flow);
NDPI_LOG_INFO(ndpi_struct, "found MSN\n");