summaryrefslogtreecommitdiffhomepage
path: root/src/dhcpv6-ia.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dhcpv6-ia.c')
-rw-r--r--src/dhcpv6-ia.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/dhcpv6-ia.c b/src/dhcpv6-ia.c
index d301b4f..30bffbc 100644
--- a/src/dhcpv6-ia.c
+++ b/src/dhcpv6-ia.c
@@ -92,14 +92,15 @@ int setup_dhcpv6_ia_interface(struct interface *iface, bool enable)
struct lease *lease;
list_for_each_entry(lease, &leases, head) {
// Construct entry
- struct dhcpv6_assignment *a = calloc(1, sizeof(*a) + lease->duid_len);
+ size_t duid_len = lease->duid_len ? lease->duid_len : 14;
+ struct dhcpv6_assignment *a = calloc(1, sizeof(*a) + duid_len);
if (!a) {
syslog(LOG_ERR, "Calloc failed for static lease assignment on interface %s",
iface->ifname);
return -1;
}
- a->clid_len = lease->duid_len;
+ a->clid_len = duid_len;
a->length = 128;
if (lease->hostid) {
a->assigned = lease->hostid;