Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Dec 2016 05:55:45 +0000 (UTC)
From:      Hiroki Sato <hrs@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r310385 - head/usr.sbin/syslogd
Message-ID:  <201612220555.uBM5tjKC071124@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hrs
Date: Thu Dec 22 05:55:44 2016
New Revision: 310385
URL: https://svnweb.freebsd.org/changeset/base/310385

Log:
  Initialize a structure by using a compound literal to avoid forgetting
  to zero unspecified members.

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

Modified: head/usr.sbin/syslogd/syslogd.c
==============================================================================
--- head/usr.sbin/syslogd/syslogd.c	Thu Dec 22 05:28:30 2016	(r310384)
+++ head/usr.sbin/syslogd/syslogd.c	Thu Dec 22 05:55:44 2016	(r310385)
@@ -425,7 +425,6 @@ main(int argc, char *argv[])
 	int ch, i, s, fdsrmax = 0, bflag = 0, pflag = 0, Sflag = 0;
 	fd_set *fdsr = NULL;
 	struct timeval tv, *tvp;
-	struct sigaction sact;
 	struct peer *pe;
 	struct socklist *sl;
 	sigset_t mask;
@@ -633,10 +632,11 @@ main(int argc, char *argv[])
 	 */
 	sigemptyset(&mask);
 	sigaddset(&mask, SIGHUP);
-	sact.sa_handler = reapchild;
-	sact.sa_mask = mask;
-	sact.sa_flags = SA_RESTART;
-	(void)sigaction(SIGCHLD, &sact, NULL);
+	(void)sigaction(SIGCHLD, &(struct sigaction){
+	    .sa_handler = reapchild,
+	    .sa_mask = mask,
+	    .sa_flags = SA_RESTART
+	}, NULL);
 	(void)signal(SIGALRM, domark);
 	(void)signal(SIGPIPE, SIG_IGN);	/* We'll catch EPIPE instead. */
 	(void)alarm(TIMERINTVL);
@@ -650,10 +650,11 @@ main(int argc, char *argv[])
 	/* prevent SIGHUP and SIGCHLD handlers from running in parallel */
 	sigemptyset(&mask);
 	sigaddset(&mask, SIGCHLD);
-	sact.sa_handler = init;
-	sact.sa_mask = mask;
-	sact.sa_flags = SA_RESTART;
-	(void)sigaction(SIGHUP, &sact, NULL);
+	(void)sigaction(SIGHUP, &(struct sigaction){
+	    .sa_handler = init,
+	    .sa_mask = mask,
+	    .sa_flags = SA_RESTART
+	}, NULL);
 
 	tvp = &tv;
 	tv.tv_sec = tv.tv_usec = 0;
@@ -750,7 +751,7 @@ static void
 unmapped(struct sockaddr *sa)
 {
 	struct sockaddr_in6 *sin6;
-	struct sockaddr_in sin4;
+	struct sockaddr_in sin;
 
 	if (sa == NULL ||
 	    sa->sa_family != AF_INET6 ||
@@ -759,15 +760,14 @@ unmapped(struct sockaddr *sa)
 	sin6 = satosin6(sa);
 	if (!IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr))
 		return;
-
-	memset(&sin4, 0, sizeof(sin4));
-	sin4.sin_family = AF_INET;
-	sin4.sin_len = sizeof(sin4);
-	memcpy(&sin4.sin_addr, &sin6->sin6_addr.s6_addr[12],
-	       sizeof(sin4.sin_addr));
-	sin4.sin_port = sin6->sin6_port;
-
-	memcpy(sa, &sin4, sin4.sin_len);
+	sin = (struct sockaddr_in){
+		.sin_family = AF_INET,
+		.sin_len = sizeof(sin),
+		.sin_port = sin6->sin6_port
+	};
+	memcpy(&sin.sin_addr, &sin6->sin6_addr.s6_addr[12],
+	    sizeof(sin.sin_addr));
+	memcpy(sa, &sin, sizeof(sin));
 }
 
 static void
@@ -2154,9 +2154,10 @@ cfline(const char *line, const char *pro
 		else
 			p = NULL;
 
-		memset(&hints, 0, sizeof(hints));
-		hints.ai_family = family;
-		hints.ai_socktype = SOCK_DGRAM;
+		hints = (struct addrinfo){
+			.ai_family = family,
+			.ai_socktype = SOCK_DGRAM
+		};
 		error = getaddrinfo(f->fu_forw_hname,
 				p ? p : "syslog", &hints, &res);
 		if (error) {
@@ -2447,16 +2448,18 @@ allowaddr(char *s)
 		cp2 = NULL;
 	}
 #endif
-	memset(&hints, 0, sizeof(hints));
-	hints.ai_family = PF_UNSPEC;
-	hints.ai_socktype = SOCK_DGRAM;
-	hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
+	hints = (struct addrinfo){
+		.ai_family = PF_UNSPEC,
+		.ai_socktype = SOCK_DGRAM,
+		.ai_flags = AI_PASSIVE | AI_NUMERICHOST
+	};
 	if (getaddrinfo(s, NULL, &hints, &res) == 0) {
 		ap->isnumeric = 1;
 		memcpy(&ap->a_addr, res->ai_addr, res->ai_addrlen);
-		memset(&ap->a_mask, 0, sizeof(ap->a_mask));
-		ap->a_mask.ss_family = res->ai_family;
-		ap->a_mask.ss_len = res->ai_addrlen;
+		ap->a_mask = (struct sockaddr_storage){
+			.ss_family = res->ai_family,
+			.ss_len = res->ai_addrlen
+		};
 		if (res->ai_family == AF_INET) {
 			maskp = &sstosin(&ap->a_mask)->sin_addr.s_addr;
 			addrp = &sstosin(&ap->a_addr)->sin_addr.s_addr;
@@ -2567,10 +2570,11 @@ validate(struct sockaddr *sa, const char
 		return (1);
 
 	(void)strlcpy(name, hname, sizeof(name));
-	memset(&hints, 0, sizeof(hints));
-	hints.ai_family = PF_UNSPEC;
-	hints.ai_socktype = SOCK_DGRAM;
-	hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
+	hints = (struct addrinfo){
+		.ai_family = PF_UNSPEC,
+		.ai_socktype = SOCK_DGRAM,
+		.ai_flags = AI_PASSIVE | AI_NUMERICHOST
+	};
 	if (getaddrinfo(name, NULL, &hints, &res) == 0)
 		freeaddrinfo(res);
 	else if (strchr(name, '.') == NULL) {
@@ -2751,9 +2755,10 @@ deadq_enter(pid_t pid, const char *name)
 		logerror("malloc");
 		exit(1);
 	}
-
-	p->dq_pid = pid;
-	p->dq_timeout = DQ_TIMO_INIT;
+	*p = (struct deadq_entry){
+		.dq_pid = pid,
+		.dq_timeout = DQ_TIMO_INIT
+	};
 	TAILQ_INSERT_TAIL(&deadq_head, p, dq_entries);
 }
 
@@ -2831,11 +2836,11 @@ socksetup(struct peer *pe)
 		}
 #endif
 	}
-	memset(&hints, 0, sizeof(hints));
-	hints.ai_family = AF_UNSPEC;
-	hints.ai_socktype = SOCK_DGRAM;
-	hints.ai_flags = AI_PASSIVE;
-
+	hints = (struct addrinfo){
+		.ai_family = AF_UNSPEC,
+		.ai_socktype = SOCK_DGRAM,
+		.ai_flags = AI_PASSIVE
+	};
 	dprintf("Try %s\n", pe->pe_name);
 	if (pe->pe_serv == NULL)
 		pe->pe_serv = "syslog";
@@ -2847,7 +2852,6 @@ socksetup(struct peer *pe)
 	}
 	for (res = res0; res != NULL; res = res->ai_next) {
 		int s;
-		int on = 1;
 
 		if (res->ai_family == AF_LOCAL)
 			unlink(pe->pe_name);
@@ -2868,7 +2872,7 @@ socksetup(struct peer *pe)
 #ifdef INET6
 		if (res->ai_family == AF_INET6) {
 			if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY,
-			       (char *)&on, sizeof(on)) < 0) {
+			       &(int){1}, sizeof(int)) < 0) {
 				logerror("setsockopt(IPV6_V6ONLY)");
 				close(s);
 				error++;
@@ -2877,7 +2881,7 @@ socksetup(struct peer *pe)
 		}
 #endif
 		if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
-		       (char *)&on, sizeof(on)) < 0) {
+		    &(int){1}, sizeof(int)) < 0) {
 			logerror("setsockopt(SO_REUSEADDR)");
 			close(s);
 			error++;
@@ -2938,11 +2942,10 @@ socksetup(struct peer *pe)
 static void
 increase_rcvbuf(int fd)
 {
-	socklen_t len, slen;
-
-	slen = sizeof(len);
+	socklen_t len;
 
-	if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &len, &slen) == 0) {
+	if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &len,
+	    &(socklen_t){sizeof(len)}) == 0) {
 		if (len < RCVBUF_MINSIZE) {
 			len = RCVBUF_MINSIZE;
 			setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &len, sizeof(len));



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612220555.uBM5tjKC071124>