shared/user-util: emit a warning on names with dots

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2019-08-28 12:05:52 +02:00
parent ae480f0b09
commit 88e2ed0b5b

View file

@ -645,13 +645,26 @@ bool valid_user_group_name_full(const char *u, bool strict) {
u[0] != '_') u[0] != '_')
return false; return false;
for (i = u+1; *i; i++) bool warned = false;
if (!((*i >= 'a' && *i <= 'z') ||
(*i >= 'A' && *i <= 'Z') || for (i = u+1; *i; i++) {
(*i >= '0' && *i <= '9') || if (((*i >= 'a' && *i <= 'z') ||
IN_SET(*i, '_', '-') || (*i >= 'A' && *i <= 'Z') ||
(!strict && *i == '.'))) (*i >= '0' && *i <= '9') ||
return false; IN_SET(*i, '_', '-')))
continue;
if (*i == '.' && !strict) {
if (!warned) {
log_warning("Bad user or group name \"%s\", accepting for compatibility.", u);
warned = true;
}
continue;
}
return false;
}
sz = sysconf(_SC_LOGIN_NAME_MAX); sz = sysconf(_SC_LOGIN_NAME_MAX);
assert_se(sz > 0); assert_se(sz > 0);