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));
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to