Fix warnings from the Clang static analyzer.
authorGuus Sliepen <guus@tinc-vpn.org>
Thu, 23 Jun 2016 13:59:16 +0000 (15:59 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Thu, 23 Jun 2016 13:59:16 +0000 (15:59 +0200)
These are all false positives or harmless dead stores.

src/net.c
src/net_packet.c
src/net_socket.c
src/sptps.c

index 577b11f..4369ff4 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -94,29 +94,31 @@ void purge(void) {
 void terminate_connection(connection_t *c, bool report) {
        logger(DEBUG_CONNECTIONS, LOG_NOTICE, "Closing connection with %s (%s)", c->name, c->hostname);
 
-       if(c->node && c->node->connection == c)
-               c->node->connection = NULL;
+       if(c->node) {
+               if(c->node->connection == c)
+                       c->node->connection = NULL;
 
-       if(c->edge) {
-               if(report && !tunnelserver)
-                       send_del_edge(everyone, c->edge);
+               if(c->edge) {
+                       if(report && !tunnelserver)
+                               send_del_edge(everyone, c->edge);
 
-               edge_del(c->edge);
-               c->edge = NULL;
+                       edge_del(c->edge);
+                       c->edge = NULL;
 
-               /* Run MST and SSSP algorithms */
+                       /* Run MST and SSSP algorithms */
 
-               graph();
+                       graph();
 
-               /* If the node is not reachable anymore but we remember it had an edge to us, clean it up */
+                       /* If the node is not reachable anymore but we remember it had an edge to us, clean it up */
 
-               if(report && !c->node->status.reachable) {
-                       edge_t *e;
-                       e = lookup_edge(c->node, myself);
-                       if(e) {
-                               if(!tunnelserver)
-                                       send_del_edge(everyone, e);
-                               edge_del(e);
+                       if(report && !c->node->status.reachable) {
+                               edge_t *e;
+                               e = lookup_edge(c->node, myself);
+                               if(e) {
+                                       if(!tunnelserver)
+                                               send_del_edge(everyone, e);
+                                       edge_del(e);
+                               }
                        }
                }
        }
index 44214df..59e9102 100644 (file)
@@ -767,7 +767,7 @@ bool send_sptps_data(node_t *to, node_t *from, int type, const void *data, size_
                        char buf[len + sizeof to->id + sizeof from->id]; char* buf_ptr = buf;
                        memcpy(buf_ptr, &to->id, sizeof to->id); buf_ptr += sizeof to->id;
                        memcpy(buf_ptr, &from->id, sizeof from->id); buf_ptr += sizeof from->id;
-                       memcpy(buf_ptr, data, len); buf_ptr += len;
+                       memcpy(buf_ptr, data, len);
                        logger(DEBUG_TRAFFIC, LOG_INFO, "Sending packet from %s (%s) to %s (%s) via %s (%s) (TCP)", from->name, from->hostname, to->name, to->hostname, to->nexthop->name, to->nexthop->hostname);
                        return send_sptps_tcppacket(to->nexthop->connection, buf, sizeof buf);
                }
index bafea64..8259d9a 100644 (file)
@@ -534,6 +534,8 @@ begin:
        } else if(proxytype == PROXY_EXEC) {
                result = 0;
        } else {
+               if(!proxyai)
+                       abort();
                result = connect(c->socket, proxyai->ai_addr, proxyai->ai_addrlen);
                freeaddrinfo(proxyai);
        }
index 712d50e..a1fd5e7 100644 (file)
@@ -547,8 +547,6 @@ size_t sptps_receive_data(sptps_t *s, const void *data, size_t len) {
        memcpy(s->inbuf + s->buflen, data, toread);
        total_read += toread;
        s->buflen += toread;
-       len -= toread;
-       data += toread;
 
        // If we don't have a whole record, exit.
        if(s->buflen < s->reclen + (s->instate ? 19UL : 3UL))