]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
in-addr-util: make in_addr_default_prefix_from_string() or friend set 0 to prefixlen...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 7 Nov 2018 06:31:26 +0000 (15:31 +0900)
committerGitHub <noreply@github.com>
Wed, 7 Nov 2018 06:31:26 +0000 (15:31 +0900)
Follow-up for a4798d4e6d88c2be2625ce62d8326eaa9b80f2ee.

Fixes #10662.

src/basic/in-addr-util.c
src/network/test-networkd-conf.c
src/test/test-in-addr-util.c

index 4cf6ab6974a2ce38966652f5d3ee7302d9d0f11f..6a00de2ef09126d2cdfd3042344d590338c2bf54 100644 (file)
@@ -531,10 +531,13 @@ int in_addr_prefix_from_string_internal(
                 r = in_addr_parse_prefixlen(family, e+1, &k);
                 if (r < 0)
                         return r;
-        } else if (family == AF_INET && use_default_prefixlen) {
-                r = in4_addr_default_prefixlen(&buffer.in, &k);
-                if (r < 0)
-                        return r;
+        } else if (use_default_prefixlen) {
+                if (family == AF_INET) {
+                        r = in4_addr_default_prefixlen(&buffer.in, &k);
+                        if (r < 0)
+                                return r;
+                } else
+                        k = 0;
         } else
                 k = FAMILY_ADDRESS_SIZE(family) * 8;
 
@@ -579,10 +582,13 @@ int in_addr_prefix_from_string_auto_internal(
                 r = in_addr_parse_prefixlen(family, e+1, &k);
                 if (r < 0)
                         return r;
-        } else if (family == AF_INET && use_default_prefixlen) {
-                r = in4_addr_default_prefixlen(&buffer.in, &k);
-                if (r < 0)
-                        return r;
+        } else if (use_default_prefixlen) {
+                if (family == AF_INET) {
+                        r = in4_addr_default_prefixlen(&buffer.in, &k);
+                        if (r < 0)
+                                return r;
+                } else
+                        k = 0;
         } else
                 k = FAMILY_ADDRESS_SIZE(family) * 8;
 
index a906630b3807140bfac0173cb978864bb450561d..abef6e761a30277a172ab5c634bef753ebeb073c 100644 (file)
@@ -199,7 +199,7 @@ static void test_config_parse_address(void) {
         test_config_parse_address_one("", AF_INET6, 0, NULL, 0);
         test_config_parse_address_one("/", AF_INET6, 0, NULL, 0);
         test_config_parse_address_one("/8", AF_INET6, 0, NULL, 0);
-        test_config_parse_address_one("::1", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 128);
+        test_config_parse_address_one("::1", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 0);
         test_config_parse_address_one("::1/0", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 0);
         test_config_parse_address_one("::1/1", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 1);
         test_config_parse_address_one("::1/2", AF_INET6, 1, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 2);
index 849166391ff4557ac55d933bbfa7b989c691d5d3..75c3e305c38255edd7dba120251f68b694a9d71e 100644 (file)
@@ -69,7 +69,7 @@ int main(int argc, char *argv[]) {
         test_in_addr_prefix_from_string("", AF_INET6, -EINVAL, NULL, 0, true);
         test_in_addr_prefix_from_string("/", AF_INET6, -EINVAL, NULL, 0, true);
         test_in_addr_prefix_from_string("/8", AF_INET6, -EINVAL, NULL, 0, true);
-        test_in_addr_prefix_from_string("::1", AF_INET6, 0, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 128, true);
+        test_in_addr_prefix_from_string("::1", AF_INET6, 0, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 0, true);
         test_in_addr_prefix_from_string("::1/0", AF_INET6, 0, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 0, true);
         test_in_addr_prefix_from_string("::1/1", AF_INET6, 0, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 1, true);
         test_in_addr_prefix_from_string("::1/2", AF_INET6, 0, &(union in_addr_union) { .in6 = IN6ADDR_LOOPBACK_INIT }, 2, true);