Module Name:    src
Committed By:   dholland
Date:           Tue May 24 06:57:55 UTC 2011

Modified Files:
        src/usr.sbin/ypbind: ypbind.c

Log Message:
Fix up calls to yp_log. They cannot use %m, because if the -d option
is used the messages are sent via printf instead of syslog(3).

Also, make sure that none of the calls include a trailing newline and
issue a trailing newline in the -d case so they actually print properly.
(This was noted by Wolfgang Stukenbrock in PR 43900.)

And finally, fix some cases that could in some circumstances print
uninitialized errnos.


To generate a diff of this commit:
cvs rdiff -u -r1.71 -r1.72 src/usr.sbin/ypbind/ypbind.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/ypbind/ypbind.c
diff -u src/usr.sbin/ypbind/ypbind.c:1.71 src/usr.sbin/ypbind/ypbind.c:1.72
--- src/usr.sbin/ypbind/ypbind.c:1.71	Tue May 24 06:57:30 2011
+++ src/usr.sbin/ypbind/ypbind.c	Tue May 24 06:57:55 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: ypbind.c,v 1.71 2011/05/24 06:57:30 dholland Exp $	*/
+/*	$NetBSD: ypbind.c,v 1.72 2011/05/24 06:57:55 dholland Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993 Theo de Raadt <[email protected]>
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef LINT
-__RCSID("$NetBSD: ypbind.c,v 1.71 2011/05/24 06:57:30 dholland Exp $");
+__RCSID("$NetBSD: ypbind.c,v 1.72 2011/05/24 06:57:55 dholland Exp $");
 #endif
 
 #include <sys/types.h>
@@ -142,9 +142,10 @@
 	va_start(ap, fmt);
 
 #if defined(DEBUG)
-	if (debug)
+	if (debug) {
 		(void)vprintf(fmt, ap);
-	else
+		(void)printf("\n");
+	} else
 #endif
 		vsyslog(pri, fmt, ap);
 	va_end(ap);
@@ -199,7 +200,7 @@
 	struct _dom_binding *ypdb;
 
 	if ((ypdb = malloc(sizeof *ypdb)) == NULL) {
-		yp_log(LOG_ERR, "makebinding");
+		yp_log(LOG_ERR, "makebinding: Out of memory");
 		exit(1);
 	}
 
@@ -298,6 +299,7 @@
 	struct _dom_binding *ypdb;
 	struct iovec iov[2];
 	struct ypbind_resp ybr;
+	ssize_t result;
 	int fd;
 
 	DPRINTF("returned from %s about %s\n",
@@ -368,9 +370,12 @@
 	ybr.ypbind_respbody.ypbind_bindinfo.ypbind_binding_port =
 	    raddrp->sin_port;
 
-	if ((size_t)writev(ypdb->dom_lockfd, iov, 2) !=
-	    iov[0].iov_len + iov[1].iov_len) {
-		yp_log(LOG_WARNING, "writev: %m");
+	result = writev(ypdb->dom_lockfd, iov, 2);
+	if (result < 0 || (size_t)result != iov[0].iov_len + iov[1].iov_len) {
+		if (result < 0)
+			yp_log(LOG_WARNING, "writev: %s", strerror(errno));
+		else
+			yp_log(LOG_WARNING, "writev: short count");
 		(void)close(ypdb->dom_lockfd);
 		removelock(ypdb);
 		ypdb->dom_lockfd = -1;
@@ -591,7 +596,8 @@
 	bindsin.sin_port = htons(PMAPPORT);
 
 	if (getifaddrs(&ifap) != 0) {
-		yp_log(LOG_WARNING, "broadcast: getifaddrs: %m");
+		yp_log(LOG_WARNING, "broadcast: getifaddrs: %s",
+		       strerror(errno));
 		return (-1);
 	}
 	for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
@@ -620,7 +626,8 @@
 		if (sendto(rpcsock, buf, outlen, 0,
 		    (struct sockaddr *)(void *)&bindsin,
 		    (socklen_t)bindsin.sin_len) == -1)
-			yp_log(LOG_WARNING, "broadcast: sendto: %m");
+			yp_log(LOG_WARNING, "broadcast: sendto: %s",
+			       strerror(errno));
 	}
 	freeifaddrs(ifap);
 	return (0);
@@ -650,7 +657,8 @@
 		strcpy(ypservers_path, path);
 		df = fopen(ypservers_path, "r");
 		if (df == NULL) {
-			yp_log(LOG_ERR, "%s: ", ypservers_path);
+			yp_log(LOG_ERR, "%s: %s", ypservers_path,
+			       strerror(errno));
 			exit(1);
 		}
 	}
@@ -688,14 +696,15 @@
 			if (sendto(rpcsock, buf, outlen, 0,
 			    (struct sockaddr *)(void *)&bindsin,
 			    (socklen_t)sizeof(bindsin)) < 0) {
-				yp_log(LOG_WARNING, "direct: sendto: %m");
+				yp_log(LOG_WARNING, "direct: sendto: %s",
+				       strerror(errno));
 				continue;
 			} else
 				count++;
 		}
 	}
 	if (!count) {
-		yp_log(LOG_WARNING, "no contactable servers found in %s",
+		yp_log(LOG_WARNING, "No contactable servers found in %s",
 		    ypservers_path);
 		return -1;
 	}
@@ -722,7 +731,7 @@
 	    ypdb->dom_domain, ypdb->dom_vers);
 
 	if ((fd = open(path, O_SHLOCK|O_RDONLY, 0644)) == -1) {
-		yp_log(LOG_WARNING, "%s: %m", path);
+		yp_log(LOG_WARNING, "%s: %s", path, strerror(errno));
 		been_ypset = 0;
 		return -1;
 	}
@@ -738,9 +747,12 @@
 	iov[1].iov_len = sizeof(ybr);
 	bytes = readv(fd, iov, 2);
 	(void)close(fd);
-	if ((size_t)bytes != (iov[0].iov_len + iov[1].iov_len)) {
+	if (bytes <0 || (size_t)bytes != (iov[0].iov_len + iov[1].iov_len)) {
 		/* Binding file corrupt? */
-		yp_log(LOG_WARNING, "%s: %m", path);
+		if (bytes < 0)
+			yp_log(LOG_WARNING, "%s: %s", path, strerror(errno));
+		else
+			yp_log(LOG_WARNING, "%s: short read", path);
 		been_ypset = 0;
 		return -1;
 	}
@@ -751,7 +763,7 @@
 	if (sendto(rpcsock, buf, outlen, 0,
 	    (struct sockaddr *)(void *)&bindsin,
 	    (socklen_t)sizeof(bindsin)) < 0) {
-		yp_log(LOG_WARNING, "direct_set: sendto: %m");
+		yp_log(LOG_WARNING, "direct_set: sendto: %s", strerror(errno));
 		return -1;
 	}
 
@@ -941,7 +953,8 @@
 		if (sendto(rpcsock, buf, outlen, 0,
 		    (struct sockaddr *)(void *)&bindsin,
 		    (socklen_t)sizeof bindsin) == -1)
-			yp_log(LOG_WARNING, "nag_servers: sendto: %m");
+			yp_log(LOG_WARNING, "nag_servers: sendto: %s",
+			       strerror(errno));
 	}
 
 	switch (ypbindmode) {
@@ -1016,7 +1029,7 @@
 	if (sendto(pingsock, buf, outlen, 0, 
 	    (struct sockaddr *)(void *)&ypdb->dom_server_addr,
 	    (socklen_t)sizeof ypdb->dom_server_addr) == -1)
-		yp_log(LOG_WARNING, "ping: sendto: %m");
+		yp_log(LOG_WARNING, "ping: sendto: %s", strerror(errno));
 	return 0;
 
 }
@@ -1200,7 +1213,7 @@
 			checkwork();
 			break;
 		case -1:
-			yp_log(LOG_WARNING, "select: %m");
+			yp_log(LOG_WARNING, "select: %s", strerror(errno));
 			break;
 		default:
 			if (FD_ISSET(rpcsock, &fdsr))

Reply via email to