diff options
author | Damien Miller <djm@mindrot.org> | 2011-06-20 14:42:23 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2011-06-20 14:42:23 +1000 |
commit | 8f0bf237d4e699d00c2febaf1b88a9b9b827e77e (patch) | |
tree | 212a2ef9014a216e7ab96060e81ab3c1d737ba7c /monitor_wrap.c | |
parent | e7ac2bd42ad16c2e2485331641befedebaebdb46 (diff) |
- djm@cvs.openbsd.org 2011/06/17 21:44:31
[log.c log.h monitor.c monitor.h monitor_wrap.c monitor_wrap.h sshd.c]
make the pre-auth privsep slave log via a socketpair shared with the
monitor rather than /var/empty/dev/log; ok dtucker@ deraadt@ markus@
Diffstat (limited to 'monitor_wrap.c')
-rw-r--r-- | monitor_wrap.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/monitor_wrap.c b/monitor_wrap.c index 7a90b3ba3..1f60658e9 100644 --- a/monitor_wrap.c +++ b/monitor_wrap.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: monitor_wrap.c,v 1.72 2011/05/23 03:30:07 djm Exp $ */ | 1 | /* $OpenBSD: monitor_wrap.c,v 1.73 2011/06/17 21:44:31 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> | 3 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> |
4 | * Copyright 2002 Markus Friedl <markus@openbsd.org> | 4 | * Copyright 2002 Markus Friedl <markus@openbsd.org> |
@@ -88,6 +88,32 @@ extern struct monitor *pmonitor; | |||
88 | extern Buffer loginmsg; | 88 | extern Buffer loginmsg; |
89 | extern ServerOptions options; | 89 | extern ServerOptions options; |
90 | 90 | ||
91 | void | ||
92 | mm_log_handler(LogLevel level, const char *msg, void *ctx) | ||
93 | { | ||
94 | Buffer log_msg; | ||
95 | struct monitor *mon = (struct monitor *)ctx; | ||
96 | |||
97 | if (mon->m_log_sendfd == -1) | ||
98 | fatal("%s: no log channel", __func__); | ||
99 | |||
100 | buffer_init(&log_msg); | ||
101 | /* | ||
102 | * Placeholder for packet length. Will be filled in with the actual | ||
103 | * packet length once the packet has been constucted. This saves | ||
104 | * fragile math. | ||
105 | */ | ||
106 | buffer_put_int(&log_msg, 0); | ||
107 | |||
108 | buffer_put_int(&log_msg, level); | ||
109 | buffer_put_cstring(&log_msg, msg); | ||
110 | put_u32(buffer_ptr(&log_msg), buffer_len(&log_msg) - 4); | ||
111 | if (atomicio(vwrite, mon->m_log_sendfd, buffer_ptr(&log_msg), | ||
112 | buffer_len(&log_msg)) != buffer_len(&log_msg)) | ||
113 | fatal("%s: write: %s", __func__, strerror(errno)); | ||
114 | buffer_free(&log_msg); | ||
115 | } | ||
116 | |||
91 | int | 117 | int |
92 | mm_is_monitor(void) | 118 | mm_is_monitor(void) |
93 | { | 119 | { |