From nobody@FreeBSD.org  Mon Nov 26 07:18:00 2012
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id 9B452F60
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 26 Nov 2012 07:18:00 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 834CC8FC12
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 26 Nov 2012 07:18:00 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.5/8.14.5) with ESMTP id qAQ7I0gK061630
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 26 Nov 2012 07:18:00 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.5/8.14.5/Submit) id qAQ7I00x061629;
	Mon, 26 Nov 2012 07:18:00 GMT
	(envelope-from nobody)
Message-Id: <201211260718.qAQ7I00x061629@red.freebsd.org>
Date: Mon, 26 Nov 2012 07:18:00 GMT
From: Garrett Cooper <yaneurabeya@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [patch] syslogd(8) error condition "touchups"
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         173930
>Category:       bin
>Synopsis:       [patch] syslogd(8) error condition "touchups"
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    markj
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Nov 26 07:20:00 UTC 2012
>Closed-Date:    Mon Dec 31 22:13:25 UTC 2012
>Last-Modified:  Sun Feb 03 22:31:28 UTC 2013
>Originator:     Garrett Cooper
>Release:        9-STABLE
>Organization:
EMC Isilon
>Environment:
FreeBSD bayonetta.local 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #0 r240836M: Sat Sep 22 12:30:11 PDT 2012     gcooper@bayonetta.local:/usr/obj/store/freebsd/stable/9/sys/BAYONETTA  amd64
>Description:
A couple things:

1. Decoding priorities in cfline incorrectly emits errno information if decoding syslog.conf entries fails.
2. syslogd decodes IPv6 addresses, regardless of whether or not syslogd was compiled with INET6 support.
3. If binding the syslog socket fails, it could mangle the errno value, obfuscating the error returned from bind(2).
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

Index: usr.sbin/syslogd/syslogd.c
===================================================================
--- usr.sbin/syslogd/syslogd.c	(revision 242903)
+++ usr.sbin/syslogd/syslogd.c	(working copy)
@@ -1873,6 +1873,7 @@
 
 			pri = decode(buf, prioritynames);
 			if (pri < 0) {
+				errno = 0;
 				(void)snprintf(ebuf, sizeof ebuf,
 				    "unknown priority name \"%s\"", buf);
 				logerror(ebuf);
@@ -2687,6 +2688,7 @@
 			logerror("socket");
 			continue;
 		}
+#ifdef INET6
 		if (r->ai_family == AF_INET6) {
 			if (setsockopt(*s, IPPROTO_IPV6, IPV6_V6ONLY,
 				       (char *)&on, sizeof (on)) < 0) {
@@ -2695,6 +2697,7 @@
 				continue;
 			}
 		}
+#endif
 		if (setsockopt(*s, SOL_SOCKET, SO_REUSEADDR,
 			       (char *)&on, sizeof (on)) < 0) {
 			logerror("setsockopt");
@@ -2711,8 +2714,8 @@
 		 */
 		if (!NoBind) {
 			if (bind(*s, r->ai_addr, r->ai_addrlen) < 0) {
+				logerror("bind");
 				close(*s);
-				logerror("bind");
 				continue;
 			}
 


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->markj 
Responsible-Changed-By: markj 
Responsible-Changed-When: Wed Dec 19 17:45:37 UTC 2012 
Responsible-Changed-Why:  
I'll take it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=173930 
State-Changed-From-To: open->patched 
State-Changed-By: markj 
State-Changed-When: Thu Dec 20 23:24:45 UTC 2012 
State-Changed-Why:  
awaiting MFC 

http://www.freebsd.org/cgi/query-pr.cgi?pr=173930 
State-Changed-From-To: patched->closed 
State-Changed-By: markj 
State-Changed-When: Mon Dec 31 22:13:24 UTC 2012 
State-Changed-Why:  
Committed and MFCed. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=173930 
>Unformatted:
