From d1ae052e5b2c928648002906546a9652b6dfd9b4 Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Thu, 24 Dec 2020 16:08:58 +0100 Subject: dhcpv6-ia: fix logic to include IA_PD prefix with lifetimes set to 0 Make sure IA_PD prefixes for which no preferred and valid lifetimes can be returned are included in the reply with a preferred and valid lifetime to 0. Therefore exclude IPv6 prefixes with an invalid prefix length as well so IA_PD prefixes for which not a preferred/valid lifetime is returned are included with a preferred and valid lifetime set to 0 Signed-off-by: Hans Dedecker --- src/dhcpv6-ia.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dhcpv6-ia.c b/src/dhcpv6-ia.c index 2de9710..42268e5 100644 --- a/src/dhcpv6-ia.c +++ b/src/dhcpv6-ia.c @@ -949,7 +949,8 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, size_t addrlen = (a->managed) ? (size_t)a->managed_size : iface->addr6_len; for (size_t i = 0; i < addrlen; ++i) { - if (!valid_addr(&addrs[i], now)) + if (!valid_addr(&addrs[i], now) || + !valid_prefix_length(a, addrs[i].prefix)) continue; struct in6_addr addr = addrs[i].addr.in6; -- cgit v1.2.3