sorry about all the noise, should be all synced up now
authorRuss Dill <Russ.Dill@asu.edu>
Wed, 11 Dec 2002 21:40:46 +0000 (21:40 -0000)
committerRuss Dill <Russ.Dill@asu.edu>
Wed, 11 Dec 2002 21:40:46 +0000 (21:40 -0000)
networking/udhcp/ChangeLog
networking/udhcp/dhcpd.c
networking/udhcp/options.c

index 34cfe16f9eceaad87ca12ce38d69f726c10e7ee5..13818953b860d645323e66246d67884d67f5c52e 100644 (file)
@@ -1,3 +1,10 @@
+0.9.9 (pending)
++ Added sanity check for max_leases (udhcp bug #1285) (me)
++ Finally got rid of the trailing space in enviromental vars (me)
++ added an new enviromental variable: $mask. It contains the number
+  of subnet bits for tools like ip route that require it.
+  (Bastian Blank <waldi@debian.org>, me)
+
 0.9.8 (021031)
 + split up README files (me)
 + use /dev/urandom to seed xid's (instead of time(0)) (me)
index 6c16dfeb098a5fff9285f0cdd41c944ab22f50e1..56ddaa94273fa100b34d854bc83461796dfabfb9 100644 (file)
@@ -95,6 +95,7 @@ int main(int argc, char *argv[])
        int pid_fd;
        int max_sock;
        int sig;
+       unsigned long num_ips;
        
        OPEN_LOG("udhcpd");
        LOG(LOG_INFO, "udhcp server (v%s) started", VERSION);
@@ -114,7 +115,15 @@ int main(int argc, char *argv[])
        }
        else server_config.lease = LEASE_TIME;
        
-       leases = malloc(sizeof(struct dhcpOfferedAddr) * server_config.max_leases);
+       /* Sanity check */
+       num_ips = ntohl(server_config.end) - ntohl(server_config.start);
+       if (server_config.max_leases > num_ips) {
+               LOG(LOG_ERR, "max_leases value (%lu) not sane, setting to %lu instead",
+                       server_config.max_leases, num_ips);
+               server_config.max_leases = num_ips;
+       }
+
+       leases = xmalloc(sizeof(struct dhcpOfferedAddr) * server_config.max_leases);
        memset(leases, 0, sizeof(struct dhcpOfferedAddr) * server_config.max_leases);
        read_leases(server_config.lease_file);
 
index 58144728e820162eabd602ff6f26b72a9070f8aa..9f95c15587fb31eb8719b9ccb70c0638f4207499 100644 (file)
@@ -214,8 +214,8 @@ void attach_option(struct option_set **opt_list, struct dhcp_option *option, cha
                DEBUG(LOG_INFO, "Attaching option %s to list", option->name);
                
                /* make a new option */
-               new = malloc(sizeof(struct option_set));
-               new->data = malloc(length + 2);
+               new = xmalloc(sizeof(struct option_set));
+               new->data = xmalloc(length + 2);
                new->data[OPT_CODE] = option->code;
                new->data[OPT_LEN] = length;
                memcpy(new->data + 2, buffer, length);