aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2016-04-21 12:04:33 +0200
committerLuca Deri <deri@ntop.org>2016-04-21 12:04:33 +0200
commit1be91947343c6b1737d138d91947cdaa7f5891ad (patch)
tree2241f0e7127e5f49fb8c5f8b05a359554f73c39a /src
parent1d54092c7d58e8c9aaf7ea723c2fe57240624099 (diff)
Code hardening for #181
Diffstat (limited to 'src')
-rw-r--r--src/lib/protocols/bgp.c30
1 files changed, 15 insertions, 15 deletions
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);
}