mirror of
https://github.com/systemd/systemd.git
synced 2024-11-04 22:21:55 +03:00
user-util: filter out invalid user record data a bit more thorougly
This commit is contained in:
parent
cd13d971dc
commit
71ae7b576c
@ -238,14 +238,21 @@ int get_user_creds(
|
||||
}
|
||||
|
||||
if (home) {
|
||||
if (FLAGS_SET(flags, USER_CREDS_CLEAN) && empty_or_root(p->pw_dir))
|
||||
*home = NULL;
|
||||
if (FLAGS_SET(flags, USER_CREDS_CLEAN) &&
|
||||
(empty_or_root(p->pw_dir) ||
|
||||
!path_is_valid(p->pw_dir) ||
|
||||
!path_is_absolute(p->pw_dir)))
|
||||
*home = NULL; /* Note: we don't insist on normalized paths, since there are setups that have /./ in the path */
|
||||
else
|
||||
*home = p->pw_dir;
|
||||
}
|
||||
|
||||
if (shell) {
|
||||
if (FLAGS_SET(flags, USER_CREDS_CLEAN) && (isempty(p->pw_shell) || is_nologin_shell(p->pw_shell)))
|
||||
if (FLAGS_SET(flags, USER_CREDS_CLEAN) &&
|
||||
(isempty(p->pw_shell) ||
|
||||
!path_is_valid(p->pw_dir) ||
|
||||
!path_is_absolute(p->pw_shell) ||
|
||||
is_nologin_shell(p->pw_shell)))
|
||||
*shell = NULL;
|
||||
else
|
||||
*shell = p->pw_shell;
|
||||
|
Loading…
Reference in New Issue
Block a user