From 296afa847704a61177b2ceea4dae4f2148cc27d0 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 12 Apr 2024 03:30:01 +0900 Subject: [PATCH] ndisc-option: also ignore Prefix Information option with multicast address Fixes https://github.com/systemd/systemd/pull/32215#issuecomment-2049624693 --- src/libsystemd-network/ndisc-option.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libsystemd-network/ndisc-option.c b/src/libsystemd-network/ndisc-option.c index 447b14d15b..96c357ced4 100644 --- a/src/libsystemd-network/ndisc-option.c +++ b/src/libsystemd-network/ndisc-option.c @@ -350,7 +350,9 @@ int ndisc_option_add_prefix_internal( struct in6_addr addr = *address; in6_addr_mask(&addr, prefixlen); - if (in6_addr_is_link_local(&addr) || in6_addr_is_null(&addr)) + /* RFC 4861 and 4862 only state that link-local prefix should be ignored. + * But here we also ignore null and multicast addresses. */ + if (in6_addr_is_link_local(&addr) || in6_addr_is_null(&addr) || in6_addr_is_multicast(&addr)) return -EINVAL; if (preferred_lifetime > valid_lifetime)