+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)
int pid_fd;
int max_sock;
int sig;
+ unsigned long num_ips;
OPEN_LOG("udhcpd");
LOG(LOG_INFO, "udhcp server (v%s) started", VERSION);
}
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);
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);