From d2d602f4b4c1614c35000dd6a5c351c482902ee4 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 9 Dec 2021 05:50:01 +0900 Subject: [PATCH] network: refuse empty or numeric route table names --- src/network/networkd-route-util.c | 12 +++++++++++- src/network/test-network.c | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/network/networkd-route-util.c b/src/network/networkd-route-util.c index f5b502f4644..c202078f07d 100644 --- a/src/network/networkd-route-util.c +++ b/src/network/networkd-route-util.c @@ -360,9 +360,19 @@ int config_parse_route_table_names( *num++ = '\0'; + if (isempty(name)) { + log_syntax(unit, LOG_WARNING, filename, line, 0, + "Route table name cannot be empty. Ignoring assignment: %s:%s", name, num); + continue; + } + if (in_charset(name, DIGITS)) { + log_syntax(unit, LOG_WARNING, filename, line, 0, + "Route table name cannot be numeric. Ignoring assignment: %s:%s", name, num); + continue; + } if (STR_IN_SET(name, "default", "main", "local")) { log_syntax(unit, LOG_WARNING, filename, line, 0, - "Route table name %s already predefined. Ignoring assignment: %s:%s", name, name, num); + "Route table name %s is already predefined. Ignoring assignment: %s:%s", name, name, num); continue; } diff --git a/src/network/test-network.c b/src/network/test-network.c index 90262072658..4409a47cfba 100644 --- a/src/network/test-network.c +++ b/src/network/test-network.c @@ -146,6 +146,12 @@ static void test_route_tables(Manager *manager) { assert_se(!manager->route_table_names_by_number); assert_se(!manager->route_table_numbers_by_name); + /* Invalid pairs */ + assert_se(config_parse_route_table_names("manager", "filename", 1, "section", 1, "RouteTable", 0, "main:123 default:333 local:999", manager, manager) >= 0); + assert_se(config_parse_route_table_names("manager", "filename", 1, "section", 1, "RouteTable", 0, "1234:321 :567 hoge:foo aaa:-888", manager, manager) >= 0); + assert_se(!manager->route_table_names_by_number); + assert_se(!manager->route_table_numbers_by_name); + test_route_tables_one(manager, "default", 253); test_route_tables_one(manager, "main", 254); test_route_tables_one(manager, "local", 255); -- 2.47.3