sysusers: do not reject non-simplified paths for shell/home

/home/zbyszek/src/systemd-work/testcase.conf:3: '//sbin//nologin' is not a valid login shell field.

This isn't very useful. The usual argument holds: people use templates to
construct config, so paths may have doubled slashes and similar. Let's simplify
paths so that the value that is pushed to /etc/passwd is nice and clean.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2022-08-19 15:49:16 +02:00
parent 87c696f247
commit eef74f9125

View file

@ -1573,6 +1573,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
return log_syntax(NULL, LOG_ERR, fname, line, r,
"Failed to replace specifiers in '%s': %m", home);
path_simplify(resolved_home);
if (!valid_home(resolved_home))
return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EINVAL),
"'%s' is not a valid home directory field.", resolved_home);
@ -1588,6 +1590,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
return log_syntax(NULL, LOG_ERR, fname, line, r,
"Failed to replace specifiers in '%s': %m", shell);
path_simplify(resolved_shell);
if (!valid_shell(resolved_shell))
return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EINVAL),
"'%s' is not a valid login shell field.", resolved_shell);