From b86f60bfb3340a9fa27cb6f127fba7c827481b50 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 8 Nov 2023 04:28:02 +0900 Subject: [PATCH] network-generator: refuse unexpected trailing strings --- src/network/generator/network-generator.c | 9 ++++++--- test/test-network-generator-conversion.sh | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c index 2863511b6c5..48527a2c73d 100644 --- a/src/network/generator/network-generator.c +++ b/src/network/generator/network-generator.c @@ -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; } diff --git a/test/test-network-generator-conversion.sh b/test/test-network-generator-conversion.sh index a9ab1b0e7fd..f03847c1fae 100755 --- a/test/test-network-generator-conversion.sh +++ b/test/test-network-generator-conversion.sh @@ -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")