log: never log into foreign fd #2 in PID 1 or its pre-execve() children

Fixes: #5401
This commit is contained in:
Lennart Poettering
2017-02-21 21:55:43 +01:00
parent 525872bfab
commit 48a601fe5d
3 changed files with 16 additions and 3 deletions
+6 -1
View File
@@ -72,6 +72,7 @@ static bool show_color = false;
static bool show_location = false;
static bool upgrade_syslog_to_journal = false;
static bool always_reopen_console = false;
/* Akin to glibc's __abort_msg; which is private and we hence cannot
* use here. */
@@ -95,7 +96,7 @@ static int log_open_console(void) {
if (console_fd >= 0)
return 0;
if (getpid() == 1) {
if (always_reopen_console) {
console_fd = open_terminal("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC);
if (console_fd < 0)
return console_fd;
@@ -1171,3 +1172,7 @@ int log_syntax_internal(
unit_fmt, unit,
NULL);
}
void log_set_always_reopen_console(bool b) {
always_reopen_console = b;
}
+1
View File
@@ -220,6 +220,7 @@ LogTarget log_target_from_string(const char *s) _pure_;
void log_received_signal(int level, const struct signalfd_siginfo *si);
void log_set_upgrade_syslog_to_journal(bool b);
void log_set_always_reopen_console(bool b);
int log_syntax_internal(
const char *unit,