diff options
Diffstat (limited to 'src/lib/protocols/oscar.c')
-rw-r--r-- | src/lib/protocols/oscar.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/protocols/oscar.c b/src/lib/protocols/oscar.c index 8be944993..869b36378 100644 --- a/src/lib/protocols/oscar.c +++ b/src/lib/protocols/oscar.c @@ -244,11 +244,19 @@ static void ndpi_search_oscar_tcp_connect(struct ndpi_detection_module_struct */ if (channel == DATA) { - family = get_u_int16_t(packet->payload, 6); + if (packet->payload_packet_len >= 8) + family = get_u_int16_t(packet->payload, 6); + else + family = 0; if (packet->payload_packet_len >= 10) type = get_u_int16_t(packet->payload, 8); else type = 0; + if (family == 0 || type == 0) + { + NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_OSCAR); + return; + } /* Family 0x0001 */ if (family == htons(GE_SE_CTL)) |