From: Yu Watanabe Date: Wed, 17 Feb 2021 10:06:36 +0000 (+0900) Subject: in-addr-util: make in_addr_prefix_nth() refuse prefixlen larger than maximum size X-Git-Tag: v248-rc1~79^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7b6b05cff9b4927fca5e31f9faeb655e1287e3dc;p=thirdparty%2Fsystemd.git in-addr-util: make in_addr_prefix_nth() refuse prefixlen larger than maximum size --- 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);