]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network-generator: refuse unexpected trailing strings 29914/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 7 Nov 2023 19:28:02 +0000 (04:28 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 7 Nov 2023 19:29:45 +0000 (04:29 +0900)
src/network/generator/network-generator.c
test/test-network-generator-conversion.sh

index 2863511b6c5cf4ba1daa24493eb579e3059ae7c8..48527a2c73dfc7dbad1e01abdd315699edafaf7e 100644 (file)
@@ -716,9 +716,6 @@ static int parse_ip_dns_address_one(Context *context, const char *ifname, const
         if (r < 0)
                 return r;
 
-        if (p[0] == ':')
-                p++;
-
         *value = p;
         return 0;
 }
@@ -808,10 +805,16 @@ static int parse_cmdline_ip_address(Context *context, int family, const char *va
         r = parse_ip_dns_address_one(context, ifname, &value);
         if (r < 0)
                 return r;
+
+        value += *value == ':';
         r = parse_ip_dns_address_one(context, ifname, &value);
         if (r < 0)
                 return r;
 
+        /* refuse unexpected trailing strings */
+        if (!isempty(value))
+                return -EINVAL;
+
         return 0;
 }
 
index a9ab1b0e7fdff2ac9516cbb0d402b97f6a894a75..f03847c1faee76f82a3e51f479cd5d26b378c7aa 100755 (executable)
@@ -302,6 +302,9 @@ INVALID_COMMAND_LINES=(
     "ip=fdef:c400:bd01:1096::2::[fdef:c400:bd01:1096::1]:64::ipv6:off:[fdef:c400:bd01:1096::aaaa]"
     "ip=[fdef:c400:bd01:1096::2]::[fdef:c400:bd01:1096::1]:64::ipv6:off:foo"
     "ip=[fdef:c400:bd01:1096::2]::[fdef:c400:bd01:1096::1]:64::ipv6:off:[fdef:c400:bd01:1096::aaaa]:foo"
+    "ip=[fdef:c400:bd01:1096::2]::[fdef:c400:bd01:1096::1]:64::ipv6:off:[fdef:c400:bd01:1096::aaaa]:[fdef:c400:bd01:1096::bbbb]:"
+    "ip=:::::dhcp99:dhcp6:10.0.0.128:10.0.0.129:"
+    "ip=:::::dhcp99:dhcp6:10.0.0.128:[fdef:c400:bd01:1096::bbbb]:"
 )
 for cmdline in "${INVALID_COMMAND_LINES[@]}"; do
     (! SYSTEMD_LOG_LEVEL=debug SYSTEMD_PROC_CMDLINE="$cmdline" "$GENERATOR_BIN")