]> git.meshlink.io Git - meshlink/commitdiff
Fix errors found by Clang's static analyzer.
authorGuus Sliepen <guus@meshlink.io>
Mon, 14 Aug 2017 20:42:14 +0000 (22:42 +0200)
committerGuus Sliepen <guus@meshlink.io>
Mon, 14 Aug 2017 20:42:14 +0000 (22:42 +0200)
examples/manynodes.c
src/conf.c
src/meshlink.c
src/net.c

index a0781ba66180b0ec2944e0062ac5c82145c290f3..61b5ece505c355d840e3d7e58ea7c1dd78d0cfcd 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <sys/time.h>
 #include <signal.h>
+#include <assert.h>
 
 static int n = 10;
 static meshlink_handle_t **mesh;
@@ -77,6 +78,8 @@ static void linkmesh() {
 }
 
 static bool exportmeshgraph(const char *path) {
+       assert(path);
+
        struct stat ps;
        int psr = stat(path, &ps);
 
index ceca04db2fa46840ebd9e79f8f308e3bea538964..8bfa855d8fe054933c44d125e49138bd66d61499 100644 (file)
@@ -432,7 +432,7 @@ bool modify_config_file(struct meshlink_handle *mesh, const char *name, const ch
                }
 
                // We found the key and the value. We already added it at the top, so ignore this one.
-               if(sep[1] == '=' && sep[2] == ' ' && !strcmp(sep + 3, value))
+               if(value && sep[1] == '=' && sep[2] == ' ' && !strcmp(sep + 3, value))
                        continue;
 
                // We found the key but with a different value, delete it if wanted.
index f038043fb985b955158a420858cbce782f3179d8..90cdf0db6d3b644cb45cb144c04a9652ffd315cb 100644 (file)
@@ -1946,6 +1946,7 @@ char *meshlink_export(meshlink_handle_t *mesh) {
        if(fread(buf + len - fsize - 1, fsize, 1, f) != 1) {
                logger(mesh, MESHLINK_DEBUG, "Error reading from %s: %s\n", filename, strerror(errno));
                fclose(f);
+               free(buf);
                meshlink_errno = MESHLINK_ESTORAGE;
                pthread_mutex_unlock(&(mesh->mesh_mutex));
                return NULL;
index 8e5c2c1830ee3b489d73314606042734b978f4c5..c0ed984964ae000c34aa65088b8583a2af3f4889 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -67,7 +67,7 @@ void terminate_connection(meshlink_handle_t *mesh, connection_t *c, bool report)
 
                /* 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) {
+               if(report && c->node && !c->node->status.reachable) {
                        edge_t *e;
                        e = lookup_edge(c->node, mesh->self);
                        if(e) {