From f28e95b0781e2bdeeb1e812cf39e378b70c352ca Mon Sep 17 00:00:00 2001 From: Jeremy Lakeman Date: Thu, 6 Dec 2012 10:42:34 +1030 Subject: [PATCH] Don't scan broadcast address, limit network size --- overlay_mdp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/overlay_mdp.c b/overlay_mdp.c index 35d59a4c..ee928727 100644 --- a/overlay_mdp.c +++ b/overlay_mdp.c @@ -1005,8 +1005,12 @@ void overlay_mdp_poll(struct sched_ent *alarm) continue; scans[i].interface = interface; - scans[i].current = ntohl(interface->address.sin_addr.s_addr & interface->netmask.s_addr); - scans[i].last = ntohl(interface->broadcast_address.sin_addr.s_addr); + scans[i].current = ntohl(interface->address.sin_addr.s_addr & interface->netmask.s_addr)+1; + scans[i].last = ntohl(interface->broadcast_address.sin_addr.s_addr)-1; + if (scans[i].last - scans[i].current>0x10000){ + INFOF("Skipping scan on interface %s as the address space is too large",interface->name); + continue; + } scans[i].alarm.alarm=start; scans[i].alarm.function=overlay_mdp_scan; start+=100;