diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2026-02-16 19:50:45 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2026-02-16 20:16:12 +0000 |
| commit | 29ec3907f193e205a1c2118c182ec43e51baf717 (patch) | |
| tree | a69d390c466d8bcba6bccd16ca19b87d19250d71 | |
| parent | 793e891f4ad1ef450f562a241fb0bd3b21d72251 (diff) | |
syslogd: Improve handling of configuration errors
Make parse_selector() print a warning to stderr and continue parsing the
config if it encounters an invalid facility or priority. Note that
because the parsing is done from a casper service, there isn't a good
mechanism to log errors; the warnings are visible only when syslogd is
started in debug mode.
Reported by: Doug Hardie <bc979@lafn.org>
MFC after: 1 week
Fixes: f4b4a10abb26 ("syslogd: Move selector parsing into its own function")
Reviewed by: jfree, jlduran, eugen, delphij
Differential Revision: https://reviews.freebsd.org/D55033
| -rw-r--r-- | usr.sbin/syslogd/syslogd.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index f109fcd02563..1b894ae54fc6 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -2932,8 +2932,9 @@ parse_selector(const char *p, struct filed *f) pri = decode(buf, prioritynames); if (pri < 0) { - dprintf("unknown priority name \"%s\"", buf); - return (NULL); + warnx("unknown priority name \"%s\", setting to 'info'", + buf); + pri = LOG_INFO; } } if (!pri_cmp) @@ -2955,11 +2956,12 @@ parse_selector(const char *p, struct filed *f) } else { i = decode(buf, facilitynames); if (i < 0) { - dprintf("unknown facility name \"%s\"", buf); - return (NULL); + warnx("unknown facility name \"%s\", ignoring", + buf); + } else { + f->f_pmask[i >> 3] = pri; + f->f_pcmp[i >> 3] = pri_cmp; } - f->f_pmask[i >> 3] = pri; - f->f_pcmp[i >> 3] = pri_cmp; } while (*p == ',' || *p == ' ') p++; |
