From 7b6b05cff9b4927fca5e31f9faeb655e1287e3dc Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 17 Feb 2021 19:06:36 +0900 Subject: [PATCH] in-addr-util: make in_addr_prefix_nth() refuse prefixlen larger than maximum size --- src/basic/in-addr-util.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/basic/in-addr-util.c b/src/basic/in-addr-util.c index 076b29ae9f6..343f62c5dc1 100644 --- a/src/basic/in-addr-util.c +++ b/src/basic/in-addr-util.c @@ -222,8 +222,9 @@ int in_addr_prefix_nth(int family, union in_addr_union *u, unsigned prefixlen, u if (family == AF_INET) { uint32_t c, n, t; + if (prefixlen > 32) - prefixlen = 32; + return -ERANGE; c = be32toh(u->in.s_addr); @@ -247,7 +248,7 @@ int in_addr_prefix_nth(int family, union in_addr_union *u, unsigned prefixlen, u unsigned start_byte = (prefixlen - 1) / 8; if (prefixlen > 128) - prefixlen = 128; + return -ERANGE; /* First calculate what we have to add */ delta = nth << ((128 - prefixlen) % 8); -- 2.47.3