]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
in-addr-util: make in_addr_prefix_nth() refuse prefixlen larger than maximum size
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 17 Feb 2021 10:06:36 +0000 (19:06 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 17 Feb 2021 13:57:37 +0000 (22:57 +0900)
src/basic/in-addr-util.c

index 076b29ae9f6378849f5a50567286fc9e2dadf0d3..343f62c5dc16e323f009ddd6ab0d4e2b4f54ed8b 100644 (file)
@@ -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);