Subject: Re: bin/34979: -current libc causes boot failure
To: None <gnats-admin@netbsd.org, netbsd-bugs@netbsd.org, scotte@warped.com>
From: Christos Zoulas <christos@zoulas.com>
List: netbsd-bugs
Date: 11/13/2006 02:20:02
The following reply was made to PR bin/34979; it has been noted by GNATS.

From: christos@zoulas.com (Christos Zoulas)
To: Scott Ellis <scotte@warped.com>
Cc: gnats-bugs@NetBSD.org, gnats-admin@NetBSD.org,
	netbsd-bugs@NetBSD.org
Subject: Re: bin/34979: -current libc causes boot failure
Date: Sun, 12 Nov 2006 21:17:01 -0500

 On Nov 12,  5:19pm, scotte@warped.com (Scott Ellis) wrote:
 -- Subject: Re: bin/34979: -current libc causes boot failure
 
 | Christos Zoulas wrote:
 | [snip]
 | > Try this (which returns a match if prog/from is empty):
 | > 
 | > Index: syslogd.c
 | > ===================================================================
 | > RCS file: /cvsroot/src/usr.sbin/syslogd/syslogd.c,v
 | > retrieving revision 1.82
 | > diff -u -u -r1.82 syslogd.c
 | > --- syslogd.c	16 Sep 2006 17:05:32 -0000	1.82
 | > +++ syslogd.c	13 Nov 2006 00:51:26 -0000
 | [snip]
 | 
 | Actually, it looks like this check is already effectively in 1.83. 
 | (Psst, your syslogd.c is out of date...you should have /*      $NetBSD: 
 | syslogd.c,v 1.83 2006/10/21 09:42:26 yamt Exp $        */ )
 | 
 
 No, my check checks for an empty name; the other check checks for a comma
 in the name. Here's a patch against current.
 
 christos
 
 Index: syslogd.c
 ===================================================================
 RCS file: /cvsroot/src/usr.sbin/syslogd/syslogd.c,v
 retrieving revision 1.83
 diff -u -u -r1.83 syslogd.c
 --- syslogd.c	21 Oct 2006 09:42:26 -0000	1.83
 +++ syslogd.c	13 Nov 2006 02:16:06 -0000
 @@ -882,14 +882,19 @@
  	const char *s;
  	const char *cursor;
  	char prev, next;
 +	size_t len;
 +
 +	if (name[0] == '\0')
 +		return (0);
  
  	if (strchr(name, ',')) /* sanity */
  		return (0);
  
 +	len = strlen(name);
  	cursor = spec;
  	while ((s = (*check)(cursor, name)) != NULL) {
  		prev = s == spec ? ',' : *(s - 1);
 -		cursor = s + strlen(name);
 +		cursor = s + len;
  		next = *cursor;
  
  		if (prev == ',' && (next == '\0' || next == ','))