From 4f54738d3ae7535fbc0f8689c2752c077522f483 Mon Sep 17 00:00:00 2001 From: Paul Donald Date: Fri, 10 Oct 2025 13:44:05 +0200 Subject: [PATCH] config: clamp dhcpv6_hostid_len instead of only logging an error MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Paul Donald Link: https://github.com/openwrt/odhcpd/pull/225 Signed-off-by: Álvaro Fernández Rojas --- src/config.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/config.c b/src/config.c index 3cd9b52..6792b54 100644 --- a/src/config.c +++ b/src/config.c @@ -1314,14 +1314,20 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr iface->dhcpv6_na = blobmsg_get_bool(c); if ((c = tb[IFACE_ATTR_DHCPV6_HOSTID_LEN])) { - uint32_t hostid_len = blobmsg_get_u32(c); + uint32_t original_hostid_len, hostid_len; + original_hostid_len = hostid_len = blobmsg_get_u32(c); - if (hostid_len >= HOSTID_LEN_MIN && hostid_len <= HOSTID_LEN_MAX) - iface->dhcpv6_hostid_len = hostid_len; - else - syslog(LOG_ERR, "Invalid %s value configured for interface '%s'", - iface_attrs[IFACE_ATTR_DHCPV6_HOSTID_LEN].name, iface->name); + if (hostid_len < HOSTID_LEN_MIN) + hostid_len = HOSTID_LEN_MIN; + else if (hostid_len > HOSTID_LEN_MAX) + hostid_len = HOSTID_LEN_MAX; + + iface->dhcpv6_hostid_len = hostid_len; + if (original_hostid_len != hostid_len) { + syslog(LOG_WARNING, "Clamped invalid %s value configured for interface '%s' to %d", + iface_attrs[IFACE_ATTR_DHCPV6_HOSTID_LEN].name, iface->name, iface->dhcpv6_hostid_len); + } } if ((c = tb[IFACE_ATTR_RA_DEFAULT])) -- 2.30.2