conf-parse: use path_simplify_and_warn() in config_parse_path()
This commit is contained in:
parent
58a53adde5
commit
cd4f53c5b5
|
@ -713,6 +713,7 @@ int config_parse_path(
|
||||||
|
|
||||||
char **s = data, *n;
|
char **s = data, *n;
|
||||||
bool fatal = ltype;
|
bool fatal = ltype;
|
||||||
|
int r;
|
||||||
|
|
||||||
assert(filename);
|
assert(filename);
|
||||||
assert(lvalue);
|
assert(lvalue);
|
||||||
|
@ -724,27 +725,16 @@ int config_parse_path(
|
||||||
goto finalize;
|
goto finalize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!utf8_is_valid(rvalue)) {
|
|
||||||
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
|
|
||||||
return fatal ? -ENOEXEC : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!path_is_absolute(rvalue)) {
|
|
||||||
log_syntax(unit, LOG_ERR, filename, line, 0,
|
|
||||||
"Not an absolute path%s: %s",
|
|
||||||
fatal ? "" : ", ignoring", rvalue);
|
|
||||||
return fatal ? -ENOEXEC : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
n = strdup(rvalue);
|
n = strdup(rvalue);
|
||||||
if (!n)
|
if (!n)
|
||||||
return log_oom();
|
return log_oom();
|
||||||
|
|
||||||
path_simplify(n, false);
|
r = path_simplify_and_warn(n, PATH_CHECK_ABSOLUTE | (fatal ? PATH_CHECK_FATAL : 0), unit, filename, line, lvalue);
|
||||||
|
if (r < 0)
|
||||||
|
return fatal ? -ENOEXEC : 0;
|
||||||
|
|
||||||
finalize:
|
finalize:
|
||||||
free(*s);
|
free_and_replace(*s, n);
|
||||||
*s = n;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,6 +96,7 @@ static void test_config_parse_path(void) {
|
||||||
test_config_parse_path_one("/path", "/path");
|
test_config_parse_path_one("/path", "/path");
|
||||||
test_config_parse_path_one("/path//////////", "/path");
|
test_config_parse_path_one("/path//////////", "/path");
|
||||||
test_config_parse_path_one("///path/foo///bar////bar//", "/path/foo/bar/bar");
|
test_config_parse_path_one("///path/foo///bar////bar//", "/path/foo/bar/bar");
|
||||||
|
test_config_parse_path_one("/path//./////hogehoge///.", "/path/hogehoge");
|
||||||
test_config_parse_path_one("/path/\xc3\x80", "/path/\xc3\x80");
|
test_config_parse_path_one("/path/\xc3\x80", "/path/\xc3\x80");
|
||||||
|
|
||||||
test_config_parse_path_one("not_absolute/path", NULL);
|
test_config_parse_path_one("not_absolute/path", NULL);
|
||||||
|
|
Loading…
Reference in a new issue