diff --git a/CHANGELOG b/CHANGELOG
index f59e7c5..5b7dfb8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -14,6 +14,12 @@
 	    Fix failure to build against Nettle-3.0. Thanks to Steven 
 	    Barth for spotting this and finding the fix. 
 	    
+	    When assigning existing DHCP leases to intefaces by comparing 
+	    networks, handle the case that two or more interfaces have the
+	    same network part, but different prefix lengths (favour the
+	    longer prefix length.) Thanks to Lung-Pin Chang for the 
+	    patch.
+	    
 
 version 2.71
             Subtle change to error handling to help DNSSEC validation 
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
index 8e103d3..e70d10a 100644
--- a/src/dnsmasq.h
+++ b/src/dnsmasq.h
@@ -1247,7 +1247,6 @@
 #ifdef HAVE_DHCP
 void lease_update_file(time_t now);
 void lease_update_dns(int force);
-void lease_update_interface(time_t now);
 void lease_init(time_t now);
 struct dhcp_lease *lease4_allocate(struct in_addr addr);
 #ifdef HAVE_DHCP6
diff --git a/src/lease.c b/src/lease.c
index 9479afc..5d56b1b 100644
--- a/src/lease.c
+++ b/src/lease.c
@@ -352,20 +352,20 @@
 			     struct in_addr netmask, struct in_addr broadcast, void *vparam)
 {
   struct dhcp_lease *lease;
-  int prefix;
+  int prefix = netmask_length(netmask);
 
   (void) label;
   (void) broadcast;
   (void) vparam;
 
   for (lease = leases; lease; lease = lease->next)
-    if (!(lease->flags & (LEASE_TA | LEASE_NA))) {
-      prefix = netmask_length(netmask);
-      if (is_same_net(local, lease->addr, netmask) && prefix > lease->new_prefixlen) {
-        lease->new_interface = if_index;
+    if (!(lease->flags & (LEASE_TA | LEASE_NA)) &&
+	is_same_net(local, lease->addr, netmask) && 
+	prefix > lease->new_prefixlen) 
+      {
+	lease->new_interface = if_index;
         lease->new_prefixlen = prefix;
       }
-    }
 
   return 1;
 }
@@ -425,11 +425,19 @@
    start-time. */
 void lease_find_interfaces(time_t now)
 {
+  struct dhcp_lease *lease;
+  
+  for (lease = leases; lease; lease = lease->next)
+    lease->new_prefixlen = lease->new_interface = 0;
+
   iface_enumerate(AF_INET, &now, find_interface_v4);
 #ifdef HAVE_DHCP6
   iface_enumerate(AF_INET6, &now, find_interface_v6);
 #endif
-  lease_update_interface(now);
+
+  for (lease = leases; lease; lease = lease->next)
+    if (lease->new_interface != 0) 
+      lease_set_interface(lease, lease->new_interface, now);
 }
 
 #ifdef HAVE_DHCP6
@@ -504,16 +512,6 @@
     }
 }
 
-void lease_update_interface(time_t now)
-{
-  struct dhcp_lease *lease;
-
-  for (lease = leases; lease; lease = lease->next)
-    if (lease->new_interface > 0) {
-      lease_set_interface(lease, lease->new_interface, now);
-    }
-}
-
 void lease_prune(struct dhcp_lease *target, time_t now)
 {
   struct dhcp_lease *lease, *tmp, **up;
diff --git a/src/util.c b/src/util.c
index c1b0c50..660347f 100644
--- a/src/util.c
+++ b/src/util.c
@@ -323,11 +323,12 @@
 {
   int zero_count = 0;
 
-  while (0x0 == (mask.s_addr & 0x1)) {
-    mask.s_addr >>= 1;
-    ++zero_count;
-  }
-
+  while (0x0 == (mask.s_addr & 0x1) && zero_count < 32) 
+    {
+      mask.s_addr >>= 1;
+      zero_count++;
+    }
+  
   return 32 - zero_count;
 }
 
