summaryrefslogtreecommitdiffstats
path: root/usr.sbin/syslogd/syslogd.c
diff options
context:
space:
mode:
authorbluhm <bluhm@openbsd.org>2015-01-02 12:30:45 +0000
committerbluhm <bluhm@openbsd.org>2015-01-02 12:30:45 +0000
commit11f699c5e201a1336c584031524097890c3cb090 (patch)
tree289bb2beed854b3c7b1a08e3cfdbbb09ea19e7f7 /usr.sbin/syslogd/syslogd.c
parentReport the TT Think Time of USB2.0 Hubs. (diff)
downloadwireguard-openbsd-11f699c5e201a1336c584031524097890c3cb090.tar.xz
wireguard-openbsd-11f699c5e201a1336c584031524097890c3cb090.zip
When syslogd was sending via TCP, there was file descriptor leak
and a use after free if it received a SIGHUP. Call bufferevent_free() to deactivate the callbacks and close the TCP socket. OK jasper@ deraadt@
Diffstat (limited to 'usr.sbin/syslogd/syslogd.c')
-rw-r--r--usr.sbin/syslogd/syslogd.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c
index 0d7736488f1..0641123923c 100644
--- a/usr.sbin/syslogd/syslogd.c
+++ b/usr.sbin/syslogd/syslogd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: syslogd.c,v 1.137 2014/12/31 13:55:57 bluhm Exp $ */
+/* $OpenBSD: syslogd.c,v 1.138 2015/01/02 12:30:45 bluhm Exp $ */
/*
* Copyright (c) 1983, 1988, 1993, 1994
@@ -1342,7 +1342,11 @@ init(void)
(void)close(f->f_file);
break;
case F_FORWUDP:
- case F_FORWTCP: /* XXX close and reconnect? */
+ break;
+ case F_FORWTCP:
+ /* XXX save messages in output buffer for reconnect */
+ bufferevent_free(f->f_un.f_forw.f_bufev);
+ close(f->f_un.f_forw.f_fd);
break;
}
next = f->f_next;