svn commit: r287998 - head/usr.sbin/inetd

Hiroki Sato hrs at FreeBSD.org
Sat Sep 19 23:48:07 UTC 2015


Author: hrs
Date: Sat Sep 19 23:48:06 2015
New Revision: 287998
URL: https://svnweb.freebsd.org/changeset/base/287998

Log:
  - Remove unused union p_un.
  
  - Use NI_MAXHOST-long buffer for getnameinfo().
    Although INET6_ADDRSTRLEN was designed to hold the longest
    IPv6 address in IPv4-mapped address format a long time ago,
    getnameinfo() can return scope identifier in addition to it.
  
  MFC after:	1 day

Modified:
  head/usr.sbin/inetd/inetd.c

Modified: head/usr.sbin/inetd/inetd.c
==============================================================================
--- head/usr.sbin/inetd/inetd.c	Sat Sep 19 23:27:22 2015	(r287997)
+++ head/usr.sbin/inetd/inetd.c	Sat Sep 19 23:48:06 2015	(r287998)
@@ -327,16 +327,7 @@ main(int argc, char **argv)
 	struct request_info req;
 	int denied;
 	char *service = NULL;
-	union {
-		struct sockaddr peer_un;
-		struct sockaddr_in peer_un4;
-		struct sockaddr_in6 peer_un6;
-		struct sockaddr_storage peer_max;
-	} p_un;
-#define peer	p_un.peer_un
-#define peer4	p_un.peer_un4
-#define peer6	p_un.peer_un6
-#define peermax	p_un.peer_max
+	struct sockaddr_storage peer;
 	int i;
 	struct addrinfo hints, *res;
 	const char *servname;
@@ -656,24 +647,24 @@ main(int argc, char **argv)
 		    } else
 			    ctrl = sep->se_fd;
 		    if (dolog && !ISWRAP(sep)) {
-			    char pname[INET6_ADDRSTRLEN] = "unknown";
+			    char pname[NI_MAXHOST] = "unknown";
 			    socklen_t sl;
-			    sl = sizeof peermax;
+			    sl = sizeof(peer);
 			    if (getpeername(ctrl, (struct sockaddr *)
-					    &peermax, &sl)) {
-				    sl = sizeof peermax;
+					    &peer, &sl)) {
+				    sl = sizeof(peer);
 				    if (recvfrom(ctrl, buf, sizeof(buf),
 					MSG_PEEK,
-					(struct sockaddr *)&peermax,
+					(struct sockaddr *)&peer,
 					&sl) >= 0) {
-				      getnameinfo((struct sockaddr *)&peermax,
-						  peer.sa_len,
+				      getnameinfo((struct sockaddr *)&peer,
+						  peer.ss_len,
 						  pname, sizeof(pname),
 						  NULL, 0, NI_NUMERICHOST);
 				    }
 			    } else {
-			            getnameinfo((struct sockaddr *)&peermax,
-						peer.sa_len,
+			            getnameinfo((struct sockaddr *)&peer,
+						peer.ss_len,
 						pname, sizeof(pname),
 						NULL, 0, NI_NUMERICHOST);
 			    }
@@ -2098,7 +2089,7 @@ inetd_setproctitle(const char *a, int s)
 {
 	socklen_t size;
 	struct sockaddr_storage ss;
-	char buf[80], pbuf[INET6_ADDRSTRLEN];
+	char buf[80], pbuf[NI_MAXHOST];
 
 	size = sizeof(ss);
 	if (getpeername(s, (struct sockaddr *)&ss, &size) == 0) {
@@ -2114,7 +2105,7 @@ int
 check_loop(const struct sockaddr *sa, const struct servtab *sep)
 {
 	struct servtab *se2;
-	char pname[INET6_ADDRSTRLEN];
+	char pname[NI_MAXHOST];
 
 	for (se2 = servtab; se2; se2 = se2->se_next) {
 		if (!se2->se_bi || se2->se_socktype != SOCK_DGRAM)
@@ -2328,7 +2319,7 @@ cpmip(const struct servtab *sep, int ctr
 			}
 		}
 		if ((cnt * 60) / (CHTSIZE * CHTGRAN) > sep->se_maxcpm) {
-			char pname[INET6_ADDRSTRLEN];
+			char pname[NI_MAXHOST];
 
 			getnameinfo((struct sockaddr *)&rss,
 				    ((struct sockaddr *)&rss)->sa_len,


More information about the svn-src-all mailing list