network/route-metric: invalidate [Route] section if an invalid string is specified

Follow-up for 18c4c5d84f.
This commit is contained in:
Yu Watanabe
2024-01-07 14:04:00 +09:00
parent 5e124de7e6
commit 9aa3c07947
2 changed files with 9 additions and 7 deletions
+2 -5
View File
@@ -435,15 +435,12 @@ int config_parse_route_metric_tcp_congestion(
void *data,
void *userdata) {
Network *network = userdata;
Network *network = ASSERT_PTR(userdata);
_cleanup_(route_free_or_set_invalidp) Route *route = NULL;
int r;
assert(filename);
assert(section);
assert(lvalue);
assert(rvalue);
assert(data);
r = route_new_static(network, filename, section_line, &route);
if (r == -ENOMEM)
@@ -456,7 +453,7 @@ int config_parse_route_metric_tcp_congestion(
r = config_parse_string(unit, filename, line, section, section_line, lvalue, 0,
rvalue, &route->metric.tcp_congestion_control_algo, userdata);
if (r < 0)
if (r <= 0)
return r;
TAKE_PTR(route);
+7 -2
View File
@@ -1088,6 +1088,7 @@ int config_parse_string(
void *userdata) {
char **s = ASSERT_PTR(data);
int r;
assert(filename);
assert(lvalue);
@@ -1095,7 +1096,7 @@ int config_parse_string(
if (isempty(rvalue)) {
*s = mfree(*s);
return 0;
return 1;
}
if (FLAGS_SET(ltype, CONFIG_PARSE_STRING_SAFE) && !string_is_safe(rvalue)) {
@@ -1116,7 +1117,11 @@ int config_parse_string(
return 0;
}
return free_and_strdup_warn(s, empty_to_null(rvalue));
r = free_and_strdup_warn(s, empty_to_null(rvalue));
if (r < 0)
return r;
return 1;
}
int config_parse_dns_name(