]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
CLEANUP: protocol: intitialize all of the sockaddr when disconnecting
authorWilly Tarreau <w@1wt.eu>
Wed, 14 Oct 2020 08:50:41 +0000 (10:50 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 14 Oct 2020 08:54:15 +0000 (10:54 +0200)
In issue #894, Coverity suspects uninitialized values for a socket's
address whose family is AF_UNSPEC but it doesn't know that the address
is not used in this case. It's not on a critical path and working around
it is trivial, let's fully declare the address. We're doing it for both
TCP and UDP, because the same principle appears at two places.

src/proto_tcp.c
src/proto_udp.c

index 2b5367b368f2f1d0bf4d546c38e026fd390238b5..be9a25a5b3a67ed0de463b666e399dc17b393f61 100644 (file)
@@ -769,10 +769,9 @@ static void tcp_disable_listener(struct listener *l)
  */
 static int tcp_suspend_receiver(struct receiver *rx)
 {
-       struct sockaddr sa;
+       const struct sockaddr sa = { .sa_family = AF_UNSPEC };
        int ret;
 
-       sa.sa_family = AF_UNSPEC;
        if (connect(rx->fd, &sa, sizeof(sa)) < 0)
                goto check_already_done;
 
index 13545ad58ad04b227f4ad84ab0ff201ca054bb72..bebcfb36373d2de85944a7218859b35c5d36de67 100644 (file)
@@ -225,14 +225,12 @@ static int udp_suspend_receiver(struct receiver *rx)
  */
 static int udp_resume_receiver(struct receiver *rx)
 {
-       struct sockaddr sa;
-       socklen_t len = sizeof(sa);
+       const struct sockaddr sa = { .sa_family = AF_UNSPEC };
 
        if (rx->fd < 0)
                return 0;
 
-       sa.sa_family = AF_UNSPEC;
-       if (connect(rx->fd, &sa, len) < 0)
+       if (connect(rx->fd, &sa, sizeof(sa)) < 0)
                return -1;
 
        fd_want_recv(rx->fd);