summaryrefslogtreecommitdiff
path: root/src/libsystemd-network/sd-radv.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-11-30 19:34:17 +0100
committerLennart Poettering <lennart@poettering.net>2018-11-30 22:19:28 +0100
commit59ea6e57a5249c13f4918b62b3b01c77859eb4ae (patch)
treee6a48453e9ad06650eb597935b93fc8abd96e35a /src/libsystemd-network/sd-radv.c
parentb806f0b0aa043656470dab27bb9d1bd6015e1948 (diff)
downloadsystemd-59ea6e57a5249c13f4918b62b3b01c77859eb4ae.tar.gz
systemd-59ea6e57a5249c13f4918b62b3b01c77859eb4ae.tar.bz2
systemd-59ea6e57a5249c13f4918b62b3b01c77859eb4ae.zip
networkd: refuse IPv6 RADV prefixes that lack Prefix= setting
Fixes: #9589
Diffstat (limited to 'src/libsystemd-network/sd-radv.c')
-rw-r--r--src/libsystemd-network/sd-radv.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libsystemd-network/sd-radv.c b/src/libsystemd-network/sd-radv.c
index fe458bcaa6..098e01fb82 100644
--- a/src/libsystemd-network/sd-radv.c
+++ b/src/libsystemd-network/sd-radv.c
@@ -503,6 +503,10 @@ _public_ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p, int dynamic) {
if (!p)
return -EINVAL;
+ /* Refuse prefixes that don't have a prefix set */
+ if (IN6_IS_ADDR_UNSPECIFIED(&p->opt.in6_addr))
+ return -ENOEXEC;
+
LIST_FOREACH(prefix, cur, ra->prefixes) {
r = in_addr_prefix_intersect(AF_INET6,