mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 17:51:22 +03:00
execute: check whether the specified fd is a tty before chowning/chmoding it (#3457)
Let's add an extra safety check before we chmod/chown a TTY to the right user, as we might end up having connected something to STDIN/STDOUT that is actually not a TTY, even though this might have been requested, due to permissive StandardInput= settings or transient service activation with fds passed in. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=85255
This commit is contained in:
parent
867476a30a
commit
1ff74fb6e3
@ -552,6 +552,10 @@ static int chown_terminal(int fd, uid_t uid) {
|
|||||||
|
|
||||||
assert(fd >= 0);
|
assert(fd >= 0);
|
||||||
|
|
||||||
|
/* Before we chown/chmod the TTY, let's ensure this is actually a tty */
|
||||||
|
if (isatty(fd) < 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* This might fail. What matters are the results. */
|
/* This might fail. What matters are the results. */
|
||||||
(void) fchown(fd, uid, -1);
|
(void) fchown(fd, uid, -1);
|
||||||
(void) fchmod(fd, TTY_MODE);
|
(void) fchmod(fd, TTY_MODE);
|
||||||
|
Loading…
Reference in New Issue
Block a user