diff options
author | 2014-10-01 15:47:33 +0000 | |
---|---|---|
committer | 2014-10-01 15:47:33 +0000 | |
commit | 0e594c44a479060de40e6e51df6bb2b325ef905d (patch) | |
tree | ba2658fe0ba08b5db3e649cc8da49c0de508a5e9 /usr.sbin/syslogd/syslogd.c | |
parent | sync (diff) | |
download | wireguard-openbsd-0e594c44a479060de40e6e51df6bb2b325ef905d.tar.xz wireguard-openbsd-0e594c44a479060de40e6e51df6bb2b325ef905d.zip |
Map out-of-range facility values to LOG_USER to avoid array over-read.
Prompted by similar rsyslog issue fixed by Rainer Gerhards (rgerhards
(at) adiscon.com)
ok deraadt@ blambert@ sthen@ millert@
Diffstat (limited to 'usr.sbin/syslogd/syslogd.c')
-rw-r--r-- | usr.sbin/syslogd/syslogd.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 3b4f0b9307b..741efebe870 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: syslogd.c,v 1.125 2014/09/27 11:28:37 bluhm Exp $ */ +/* $OpenBSD: syslogd.c,v 1.126 2014/10/01 15:47:33 guenther Exp $ */ /* * Copyright (c) 1983, 1988, 1993, 1994 @@ -796,8 +796,11 @@ logmsg(int pri, char *msg, char *from, int flags) /* extract facility and priority level */ if (flags & MARK) fac = LOG_NFACILITIES; - else + else { fac = LOG_FAC(pri); + if (fac >= LOG_NFACILITIES || fac < 0) + fac = LOG_USER; + } prilev = LOG_PRI(pri); /* extract program name */ |