config: cap dhcpv6_pd_min_len to max instead of only logging error
authorPaul Donald <[email protected]>
Fri, 10 Oct 2025 11:44:28 +0000 (13:44 +0200)
committerÁlvaro Fernández Rojas <[email protected]>
Mon, 13 Oct 2025 07:54:00 +0000 (09:54 +0200)
Signed-off-by: Paul Donald <[email protected]>
Link: https://github.com/openwrt/odhcpd/pull/225
Signed-off-by: Álvaro Fernández Rojas <[email protected]>
src/config.c

index 6792b5495e98e98086dbd64cb73b966af35133e8..2d8ff01eaacb8d31050676c6d5b574c8d78283aa 100644 (file)
@@ -1303,11 +1303,12 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr
 
        if ((c = tb[IFACE_ATTR_DHCPV6_PD_MIN_LEN])) {
                uint32_t pd_min_len = blobmsg_get_u32(c);
-               if (pd_min_len != 0 && pd_min_len <= PD_MIN_LEN_MAX)
-                       iface->dhcpv6_pd_min_len = pd_min_len;
-               else
-                       syslog(LOG_ERR, "Invalid %s value configured for interface '%s'",
-                                       iface_attrs[IFACE_ATTR_DHCPV6_PD_MIN_LEN].name, iface->name);
+               if (pd_min_len > PD_MIN_LEN_MAX)
+                       iface->dhcpv6_pd_min_len = PD_MIN_LEN_MAX;
+               iface->dhcpv6_pd_min_len = pd_min_len;
+               if (pd_min_len >= PD_MIN_LEN_MAX)
+                       syslog(LOG_WARNING, "Clamped invalid %s value configured for interface '%s' to %d",
+                                       iface_attrs[IFACE_ATTR_DHCPV6_PD_MIN_LEN].name, iface->name, iface->dhcpv6_pd_min_len);
        }
 
        if ((c = tb[IFACE_ATTR_DHCPV6_NA]))