mirror of
https://github.com/systemd/systemd.git
synced 2024-11-05 06:52:22 +03:00
execute: fix terminal chowning logic
This commit is contained in:
parent
10a9442017
commit
d8b4e2e9ac
15
execute.c
15
execute.c
@ -342,8 +342,7 @@ static int chown_terminal(int fd, uid_t uid) {
|
||||
if (fstat(fd, &st) < 0)
|
||||
return -errno;
|
||||
|
||||
if (st.st_uid != uid ||
|
||||
st.st_mode != TTY_MODE)
|
||||
if (st.st_uid != uid || (st.st_mode & 0777) != TTY_MODE)
|
||||
return -EPERM;
|
||||
|
||||
return 0;
|
||||
@ -834,6 +833,12 @@ int exec_spawn(ExecCommand *command,
|
||||
r = EXIT_USER;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (is_terminal_input(context->std_input))
|
||||
if (chown_terminal(STDIN_FILENO, uid) < 0) {
|
||||
r = EXIT_STDIN;
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
if (apply_permissions)
|
||||
@ -842,12 +847,6 @@ int exec_spawn(ExecCommand *command,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (is_terminal_input(context->std_input))
|
||||
if (chown_terminal(STDIN_FILENO, uid) < 0) {
|
||||
r = EXIT_STDIN;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (apply_chroot) {
|
||||
if (context->root_directory)
|
||||
if (chroot(context->root_directory) < 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user