udhcpd: fix bug: s/memcmp() != 0/memcmp() == 0/
authorDenis Vlasenko <vda.linux@googlemail.com>
Thu, 9 Aug 2007 08:04:05 +0000 (08:04 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Thu, 9 Aug 2007 08:04:05 +0000 (08:04 -0000)
(by David Updegraff <dave@cray.com>)

networking/udhcp/leases.c

index c0864ed20f898e1fe206dafb7e790e0e37d50e28..60e9edc68fde822c3f97744d85c57ea4233c20f4 100644 (file)
 static struct dhcpOfferedAddr *oldest_expired_lease(void)
 {
        struct dhcpOfferedAddr *oldest = NULL;
+// TODO: use monotonic_sec()
        unsigned long oldest_lease = time(0);
        unsigned i;
 
-
        for (i = 0; i < server_config.max_leases; i++)
                if (oldest_lease > leases[i].expires) {
                        oldest_lease = leases[i].expires;
@@ -30,13 +30,14 @@ static void clear_lease(const uint8_t *chaddr, uint32_t yiaddr)
 {
        unsigned i, j;
 
-       for (j = 0; j < 16 && !chaddr[j]; j++);
+       for (j = 0; j < 16 && !chaddr[j]; j++)
+               continue;
 
        for (i = 0; i < server_config.max_leases; i++)
-               if ((j != 16 && memcmp(leases[i].chaddr, chaddr, 16) != 0)
+               if ((j != 16 && memcmp(leases[i].chaddr, chaddr, 16) == 0)
                 || (yiaddr && leases[i].yiaddr == yiaddr)
                ) {
-                       memset(&(leases[i]), 0, sizeof(struct dhcpOfferedAddr));
+                       memset(&(leases[i]), 0, sizeof(leases[i]));
                }
 }
 
@@ -122,20 +123,18 @@ uint32_t find_address(int check_expired)
        struct dhcpOfferedAddr *lease = NULL;
 
        addr = server_config.start_ip; /* addr is in host order here */
-       for (;addr <= server_config.end_ip; addr++) {
-
+       for (; addr <= server_config.end_ip; addr++) {
                /* ie, 192.168.55.0 */
-               if (!(addr & 0xFF)) continue;
-
+               if (!(addr & 0xFF))
+                       continue;
                /* ie, 192.168.55.255 */
-               if ((addr & 0xFF) == 0xFF) continue;
-
+               if ((addr & 0xFF) == 0xFF)
+                       continue;
                /* Only do if it isn't assigned as a static lease */
                ret = htonl(addr);
                if (!reservedIp(server_config.static_leases, ret)) {
                        /* lease is not taken */
                        lease = find_lease_by_yiaddr(ret);
-
                        /* no lease or it expired and we are checking for expired leases */
                        if ((!lease || (check_expired && lease_expired(lease)))
                         && nobody_responds_to_arp(ret) /* it isn't used on the network */