From 1be91947343c6b1737d138d91947cdaa7f5891ad Mon Sep 17 00:00:00 2001 From: Luca Deri Date: Thu, 21 Apr 2016 12:04:33 +0200 Subject: Code hardening for #181 --- src/lib/protocols/bgp.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/lib/protocols/bgp.c b/src/lib/protocols/bgp.c index 8f293b611..3b0d8d5cb 100644 --- a/src/lib/protocols/bgp.c +++ b/src/lib/protocols/bgp.c @@ -35,23 +35,23 @@ static void ndpi_int_bgp_add_connection(struct ndpi_detection_module_struct *ndp /* this detection also works asymmetrically */ void ndpi_search_bgp(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) { - struct ndpi_packet_struct *packet = &flow->packet; - -// struct ndpi_id_struct *src=ndpi_struct->src; -// struct ndpi_id_struct *dst=ndpi_struct->dst; + struct ndpi_packet_struct *packet = &flow->packet; + u_int16_t bgp_port = htons(179); - if (packet->payload_packet_len > 18 && - get_u_int64_t(packet->payload, 0) == 0xffffffffffffffffULL && - get_u_int64_t(packet->payload, 8) == 0xffffffffffffffffULL && - ntohs(get_u_int16_t(packet->payload, 16)) <= packet->payload_packet_len && - (packet->tcp->dest == htons(179) || packet->tcp->source == htons(179)) - && packet->payload[18] < 5) { - NDPI_LOG(NDPI_PROTOCOL_BGP, ndpi_struct, NDPI_LOG_DEBUG, "BGP detected.\n"); - ndpi_int_bgp_add_connection(ndpi_struct, flow); - return; - } + if(packet->tcp + && (packet->payload[18] < 5) + && ((packet->tcp->dest == bgp_port) || (packet->tcp->source == bgp_port)) + && (packet->payload_packet_len > 18) + && (get_u_int64_t(packet->payload, 0) == 0xffffffffffffffffULL) + && (get_u_int64_t(packet->payload, 8) == 0xffffffffffffffffULL) + && (ntohs(get_u_int16_t(packet->payload, 16)) <= packet->payload_packet_len) + ) { + NDPI_LOG(NDPI_PROTOCOL_BGP, ndpi_struct, NDPI_LOG_DEBUG, "BGP detected.\n"); + ndpi_int_bgp_add_connection(ndpi_struct, flow); + return; + } - NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_BGP); + NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_BGP); } -- cgit v1.2.3