]> git.sur5r.net Git - openocd/commitdiff
server: add safeguards against printing bogus port number
authorPaul Fertser <fercerpav@gmail.com>
Wed, 17 Jan 2018 14:31:58 +0000 (17:31 +0300)
committerTomas Vanek <vanekt@fbl.cz>
Thu, 25 Jan 2018 07:22:16 +0000 (07:22 +0000)
Clang static checker emits "Assigned value is garbage or undefined"
warning there as it can't prove that when the socket descriptor is
AF_INET/SOCK_STREAM and getsockname doesn't return an error, sin_port
is guaranteed to be filled in.

Pacify it by obvious means.

Change-Id: I43b5e5ceb41c07d523a81b34a25490c4c5f49a70
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/4350
Tested-by: jenkins
Reviewed-by: Tim Newsome <tim@sifive.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/server/server.c

index 1e52e979d7ff0fce99baa183c660822d1c45f167..46c860f4feeae30d96dd40ea73b61ff0121b0e6c 100644 (file)
@@ -300,10 +300,11 @@ int add_service(char *name,
                }
 
                struct sockaddr_in addr_in;
+               addr_in.sin_port = 0;
                socklen_t addr_in_size = sizeof(addr_in);
-               getsockname(c->fd, (struct sockaddr *)&addr_in, &addr_in_size);
-               LOG_INFO("Listening on port %hu for %s connections",
-                               ntohs(addr_in.sin_port), name);
+               if (getsockname(c->fd, (struct sockaddr *)&addr_in, &addr_in_size) == 0)
+                       LOG_INFO("Listening on port %hu for %s connections",
+                                ntohs(addr_in.sin_port), name);
        } else if (c->type == CONNECTION_STDINOUT) {
                c->fd = fileno(stdin);