On Sun, Aug 30, 2015 at 07:18:34PM +0200, Alexander Bluhm wrote:
>
> I reconsidered it. It does not make sense to truncate the hostname
> in the config at some character from a list. Just take whatever
> the user specified as progname or hostname.
>
> ok?
visual ok + slightly tested
OK semarie@
> bluhm
>
> Index: usr.sbin/syslogd/syslogd.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.c,v
> retrieving revision 1.179
> diff -u -p -r1.179 syslogd.c
> --- usr.sbin/syslogd/syslogd.c 27 Aug 2015 17:53:35 -0000 1.179
> +++ usr.sbin/syslogd/syslogd.c 30 Aug 2015 17:06:13 -0000
> @@ -1937,7 +1937,7 @@ die(int signo)
> void
> init(void)
> {
> - char progblock[NAME_MAX+1], hostblock[NAME_MAX+1], *cline, *p;
> + char progblock[NAME_MAX+1], hostblock[NAME_MAX+1], *cline, *p, *q;
> struct filed_list mb;
> struct filed *f, *m;
> FILE *cf;
> @@ -2025,40 +2025,22 @@ init(void)
> continue;
> if (*p == '\0' || *p == '#')
> continue;
> - if (*p == '!') {
> + if (*p == '!' || *p == '+') {
> + q = (*p == '!') ? progblock : hostblock;
> p++;
> while (isspace((unsigned char)*p))
> p++;
> - if (!*p || (*p == '*' && (!p[1] ||
> + if (*p == '\0' || (*p == '*' && (p[1] == '\0' ||
> isspace((unsigned char)p[1])))) {
> - strlcpy(progblock, "*", sizeof(progblock));
> + strlcpy(q, "*", NAME_MAX+1);
> continue;
> }
> for (i = 0; i < NAME_MAX; i++) {
> - if (!isalnum((unsigned char)p[i]) &&
> - p[i] != '-' && p[i] != '!')
> + if (*p == '\0' || isspace((unsigned char)*p))
> break;
> - progblock[i] = p[i];
> + *q++ = *p++;
> }
> - progblock[i] = 0;
> - continue;
> - }
> - if (*p == '+') {
> - p++;
> - while (isspace((unsigned char)*p))
> - p++;
> - if (!*p || (*p == '*' && (!p[1] ||
> - isspace((unsigned char)p[1])))) {
> - strlcpy(hostblock, "*", sizeof(hostblock));
> - continue;
> - }
> - for (i = 0; i < NAME_MAX; i++) {
> - if (!isalnum((unsigned char)p[i]) &&
> - p[i] != '-' && p[i] != '+')
> - break;
> - hostblock[i] = p[i];
> - }
> - hostblock[i] = 0;
> + *q = '\0';
> continue;
> }
>
--
Sebastien Marie