summaryrefslogtreecommitdiffstats
path: root/usr.sbin/syslogd/syslogd.c
diff options
context:
space:
mode:
authorguenther <guenther@openbsd.org>2014-10-01 15:47:33 +0000
committerguenther <guenther@openbsd.org>2014-10-01 15:47:33 +0000
commit0e594c44a479060de40e6e51df6bb2b325ef905d (patch)
treeba2658fe0ba08b5db3e649cc8da49c0de508a5e9 /usr.sbin/syslogd/syslogd.c
parentsync (diff)
downloadwireguard-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.c7
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 */