]> git.meshlink.io Git - meshlink/commitdiff
Fix all compiler warnings found using -Wall -W -pedantic.
authorGuus Sliepen <guus@meshlink.io>
Tue, 1 May 2018 13:24:35 +0000 (15:24 +0200)
committerGuus Sliepen <guus@meshlink.io>
Tue, 1 May 2018 13:52:20 +0000 (15:52 +0200)
Using both GCC 8 and Clang 7.

31 files changed:
configure.ac
examples/channels.c
examples/chat.c
examples/manynodes.c
examples/meshlinkapp.c
src/chacha-poly1305/chacha-poly1305.c
src/conf.c
src/crypto.c
src/ed25519/sc.h
src/meshlink++.h
src/meshlink.c
src/net_packet.c
src/net_setup.c
src/netutl.c
src/prf.c
src/protocol.c
src/splay_tree.c
src/sptps.c
src/utcp
test/basic.c
test/basicpp.cpp
test/channels-cornercases.c
test/channels-fork.c
test/channels.c
test/echo-fork.c
test/import-export.c
test/invite-join.c
test/sign-verify.c
test/trio.c
test/utils.c
test/utils.h

index b4672e0c91895ba85e7c1c645f8906f3560103b3..8ef1e9ff8cc050dbb05270453ff2a3cec794731d 100644 (file)
@@ -58,7 +58,8 @@ dnl No -fstack-protector-all because it doesn't work on all platforms or archite
 
 AC_ARG_ENABLE([hardening], AS_HELP_STRING([--disable-hardening], [disable compiler and linker hardening flags]))
 AS_IF([test "x$enable_hardening" != "xno"],
-  [AX_CHECK_COMPILE_FLAG([-DFORTIFY_SOURCE=2], [CPPFLAGS="$CPPFLAGS -DFORITFY_SOURCE=2"])
+  [CPPFLAGS="$CPPFLAGS -W -pedantic"
+   AX_CHECK_COMPILE_FLAG([-DFORTIFY_SOURCE=2], [CPPFLAGS="$CPPFLAGS -DFORITFY_SOURCE=2"])
    AX_CHECK_COMPILE_FLAG([-fwrapv], [CPPFLAGS="$CPPFLAGS -fwrapv"],
      [AX_CHECK_COMPILE_FLAG([-fno-strict-overflow], [CPPFLAGS="$CPPFLAGS -fno-strict-overflow"])]
    )
index e56d9d1686e96ac3c2b7b7fca3c18899be541154..2059b387e803dcd140cfa083b57953b9ba585f1f 100644 (file)
@@ -7,7 +7,9 @@
 #define CHAT_PORT 531
 
 static void log_message(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *text) {
-       const char *levelstr[] = {
+       (void) mesh;
+
+       static const char *levelstr[] = {
                [MESHLINK_DEBUG] = "\x1b[34mDEBUG",
                [MESHLINK_INFO] = "\x1b[32mINFO",
                [MESHLINK_WARNING] = "\x1b[33mWARNING",
@@ -38,6 +40,9 @@ static void channel_receive(meshlink_handle_t *mesh, meshlink_channel_t *channel
 }
 
 static bool channel_accept(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t port, const void *data, size_t len) {
+       (void)data;
+       (void)len;
+
        // Only accept connections to the chat port
        if(port != CHAT_PORT) {
                fprintf(stderr, "Rejected incoming channel from '%s' to port %u\n", channel->node->name, port);
@@ -57,11 +62,15 @@ static bool channel_accept(meshlink_handle_t *mesh, meshlink_channel_t *channel,
 }
 
 static void channel_poll(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t len) {
+       (void)len;
+
        fprintf(stderr, "Channel to '%s' connected\n", channel->node->name);
        meshlink_set_channel_poll_cb(mesh, channel, NULL);
 }
 
 static void node_status(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
+       (void)mesh;
+
        if(reachable) {
                printf("%s joined.\n", node->name);
        } else {
@@ -139,7 +148,7 @@ static void parse_command(meshlink_handle_t *mesh, char *buf) {
                        } else {
                                printf("%zu known nodes:", nnodes);
 
-                               for(int i = 0; i < nnodes; i++) {
+                               for(size_t i = 0; i < nnodes; i++) {
                                        printf(" %s", nodes[i]->name);
                                }
 
@@ -201,7 +210,8 @@ static void parse_input(meshlink_handle_t *mesh, char *buf) {
        // Commands start with '/'
 
        if(*buf == '/') {
-               return parse_command(mesh, buf + 1);
+               parse_command(mesh, buf + 1);
+               return;
        }
 
        // Lines in the form "name: message..." set the destination node.
index 7cf5a4808919d4ab7f65811352f447b7b698a4e1..c26a642de5fef96b59cadec75752814b2429f4a5 100644 (file)
@@ -5,17 +5,22 @@
 #include "../src/meshlink.h"
 
 static void log_message(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *text) {
-       const char *levelstr[] = {
+       (void)mesh;
+
+       static const char *levelstr[] = {
                [MESHLINK_DEBUG] = "\x1b[34mDEBUG",
                [MESHLINK_INFO] = "\x1b[32mINFO",
                [MESHLINK_WARNING] = "\x1b[33mWARNING",
                [MESHLINK_ERROR] = "\x1b[31mERROR",
                [MESHLINK_CRITICAL] = "\x1b[31mCRITICAL",
        };
+
        fprintf(stderr, "%s:\x1b[0m %s\n", levelstr[level], text);
 }
 
 static void receive(meshlink_handle_t *mesh, meshlink_node_t *source, const void *data, size_t len) {
+       (void)mesh;
+
        const char *msg = data;
 
        if(!len || msg[len - 1]) {
@@ -27,6 +32,8 @@ static void receive(meshlink_handle_t *mesh, meshlink_node_t *source, const void
 }
 
 static void node_status(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
+       (void)mesh;
+
        if(reachable) {
                printf("%s joined.\n", node->name);
        } else {
@@ -104,7 +111,7 @@ static void parse_command(meshlink_handle_t *mesh, char *buf) {
                        } else {
                                printf("%zu known nodes:", nnodes);
 
-                               for(int i = 0; i < nnodes; i++) {
+                               for(size_t i = 0; i < nnodes; i++) {
                                        printf(" %s", nodes[i]->name);
                                }
 
@@ -166,7 +173,8 @@ static void parse_input(meshlink_handle_t *mesh, char *buf) {
        // Commands start with '/'
 
        if(*buf == '/') {
-               return parse_command(mesh, buf + 1);
+               parse_command(mesh, buf + 1);
+               return;
        }
 
        // Lines in the form "name: message..." set the destination node.
index 2cfe818033e371bc673b37a35920d5f880674a5c..9e4a95c095c6b1b621f305c4dceb5cd20c1209fb 100644 (file)
@@ -53,7 +53,7 @@ static void testmesh() {
                } else {
                        printf("%zu known nodes:\n", nnodes);
 
-                       for(int i = 0; i < nnodes; i++) {
+                       for(size_t i = 0; i < nnodes; i++) {
                                //printf(" %s\n", nodes[i]->name);
                                if(!meshlink_send(mesh[nindex], nodes[i], "magic", strlen("magic") + 1)) {
                                        fprintf(stderr, "Could not send message to '%s': %s\n", nodes[i]->name, meshlink_strerror(meshlink_errno));
@@ -115,6 +115,8 @@ static bool exportmeshgraph(const char *path) {
 
 
 void exportmeshgraph_timer(int signum) {
+       (void)signum;
+
        struct timeval ts;
        gettimeofday(&ts, NULL);
 
@@ -127,12 +129,12 @@ void exportmeshgraph_timer(int signum) {
 #ifndef _WIN32
 static bool exportmeshgraph_started = false;
 
-static bool exportmeshgraph_end(const char *none) {
+static bool exportmeshgraph_end(void) {
        if(!exportmeshgraph_started) {
                return false;
        }
 
-       struct itimerval zero_timer = { 0 };
+       struct itimerval zero_timer;
 
        setitimer(ITIMER_REAL, &zero_timer, NULL);
 
@@ -147,7 +149,7 @@ static bool exportmeshgraph_begin(const char *timeout_str) {
        }
 
        if(exportmeshgraph_started) {
-               if(!exportmeshgraph_end(NULL)) {
+               if(!exportmeshgraph_end()) {
                        return false;
                }
        }
@@ -182,7 +184,7 @@ static bool exportmeshgraph_begin(const char *timeout_str) {
        return true;
 }
 #else
-static bool exportmeshgraph_end(const char *none) {
+static bool exportmeshgraph_end(void) {
        return false;
 }
 
@@ -258,7 +260,7 @@ static void parse_command(char *buf) {
                        } else {
                                printf("%zu known nodes:", nnodes);
 
-                               for(int i = 0; i < nnodes; i++) {
+                               for(size_t i = 0; i < nnodes; i++) {
                                        printf(" %s", nodes[i]->name);
                                }
 
@@ -280,7 +282,7 @@ static void parse_command(char *buf) {
        } else if(!strcasecmp(buf, "egb")) {
                exportmeshgraph_begin(arg);
        } else if(!strcasecmp(buf, "ege")) {
-               exportmeshgraph_end(NULL);
+               exportmeshgraph_end();
        } else if(!strcasecmp(buf, "test")) {
                testmesh();
        } else if(!strcasecmp(buf, "select")) {
@@ -345,7 +347,8 @@ static void parse_input(char *buf) {
        // Commands start with '/'
 
        if(*buf == '/') {
-               return parse_command(buf + 1);
+               parse_command(buf + 1);
+               return;
        }
 
        // Lines in the form "name: message..." set the destination node.
@@ -465,7 +468,7 @@ int main(int argc, char *argv[]) {
                parse_input(buf);
        }
 
-       exportmeshgraph_end(NULL);
+       exportmeshgraph_end();
 
        printf("Nodes stopping.\n");
 
index 9796cba30b1f51c5b2cd43fe40e4ca42221ff59b..2c12ea114220348acecab1763fb2f85998a6acaf 100644 (file)
@@ -3,6 +3,8 @@
 #include "../src/meshlink.h"
 
 void handle_recv_data(meshlink_handle_t *mesh, meshlink_node_t *source, void *data, size_t len) {
+       (void)mesh;
+
        printf("Received %zu bytes from %s: %s\n", len, source->name, (char *)data);
 }
 
index c7464203d36088c80f225ddc294223413b748278..5810dbb508a3a988c2b997b7bfd421dfaa1462ff 100644 (file)
@@ -24,7 +24,7 @@ void chacha_poly1305_exit(chacha_poly1305_ctx_t *ctx)
 bool chacha_poly1305_set_key(chacha_poly1305_ctx_t *ctx, const void *key)
 {
        chacha_keysetup(&ctx->main_ctx, key, 256);
-       chacha_keysetup(&ctx->header_ctx, key + 32, 256);
+       chacha_keysetup(&ctx->header_ctx, (uint8_t *)key + 32, 256);
        return true;
 }
 
@@ -60,7 +60,7 @@ bool chacha_poly1305_encrypt(chacha_poly1305_ctx_t *ctx, uint64_t seqnr, const v
        chacha_ivsetup(&ctx->main_ctx, seqbuf, one);
 
        chacha_encrypt_bytes(&ctx->main_ctx, indata, outdata, inlen);
-       poly1305_auth(outdata + inlen, outdata, inlen, poly_key);
+       poly1305_auth((uint8_t *)outdata + inlen, outdata, inlen, poly_key);
 
        if (outlen)
                *outlen = inlen + POLY1305_TAGLEN;
@@ -87,7 +87,7 @@ bool chacha_poly1305_decrypt(chacha_poly1305_ctx_t *ctx, uint64_t seqnr, const v
 
        /* Check tag before anything else */
        inlen -= POLY1305_TAGLEN;
-       const uint8_t *tag = indata + inlen;
+       const uint8_t *tag = (const uint8_t *)indata + inlen;
 
        poly1305_auth(expected_tag, indata, inlen, poly_key);
        if (memcmp(expected_tag, tag, POLY1305_TAGLEN))
index fcaefdd27ff8a122fff0b0fa70dc127cb1666f91..771abe58600ca788b6dbc19ab929a2c6e444b17b 100644 (file)
@@ -431,8 +431,15 @@ bool modify_config_file(struct meshlink_handle *mesh, const char *name, const ch
        char tmpname[PATH_MAX];
        bool error = false;
 
-       snprintf(filename, sizeof(filename), "%s" SLASH "hosts" SLASH "%s", mesh->confbase, name);
-       snprintf(tmpname, sizeof(tmpname), "%s.tmp", filename);
+       if (snprintf(filename, sizeof(filename), "%s" SLASH "hosts" SLASH "%s", mesh->confbase, name) >= PATH_MAX) {
+               logger(mesh, MESHLINK_ERROR, "Filename too long: %s" SLASH "hosts" SLASH "%s", mesh->confbase, name);
+               return false;
+       }
+
+       if (snprintf(tmpname, sizeof(tmpname), "%s.tmp", filename) >= PATH_MAX) {
+               logger(mesh, MESHLINK_ERROR, "Filename too long: %s.tmp", filename);
+               return false;
+       }
 
        FILE *fr = fopen(filename, "r");
 
index b5309b0fee4d61092abf10f0fef2dcd2b471c288..1bdd8b0745597bd5a35f73bfefa18a7d10db3dca 100644 (file)
@@ -45,8 +45,10 @@ void crypto_exit(void) {
 }
 
 void randomize(void *out, size_t outlen) {
+       char *ptr = out;
+
        while(outlen) {
-               size_t len = read(random_fd, out, outlen);
+               size_t len = read(random_fd, ptr, outlen);
 
                if(len <= 0) {
                        if(errno == EAGAIN || errno == EINTR) {
@@ -57,7 +59,7 @@ void randomize(void *out, size_t outlen) {
                        abort();
                }
 
-               out += len;
+               ptr += len;
                outlen -= len;
        }
 }
index 8fa727ef10d5ca2fce31552c1430ae179e99fd06..e29e7fa5af2fec309668104c18fe8ab619928580 100644 (file)
@@ -9,4 +9,4 @@ where l = 2^252 + 27742317777372353535851937790883648493.
 void sc_reduce(unsigned char *s);
 void sc_muladd(unsigned char *s, const unsigned char *a, const unsigned char *b, const unsigned char *c);
 
-#endif
\ No newline at end of file
+#endif
index 6a3841663bc95473f6952178b1564e551d561264..20f633fd9cde69f8884df904817e1f04aee9a6ff 100644 (file)
@@ -174,13 +174,13 @@ public:
         */
 
        /// This function is called whenever another node sends data to the local node.
-       virtual void receive(node *source, const void *data, size_t length) { /* do nothing */ }
+       virtual void receive(node *source, const void *data, size_t length) { /* do nothing */ (void)source; (void)data; (void) length; }
 
        /// This functions is called  whenever another node's status changed.
-       virtual void node_status(node *peer, bool reachable)                { /* do nothing */ }
+       virtual void node_status(node *peer, bool reachable)                { /* do nothing */ (void)peer; (void)reachable; }
 
        /// This functions is called whenever MeshLink has some information to log.
-       virtual void log(log_level_t level, const char *message)            { /* do nothing */ }
+       virtual void log(log_level_t level, const char *message)            { /* do nothing */ (void)level; (void)message; }
 
        /// This functions is called whenever another node attemps to open a channel to the local node.
        /**
@@ -203,6 +203,7 @@ public:
         */
        virtual bool channel_accept(channel *channel, uint16_t port, const void *data, size_t len) {
                /* by default reject all channels */
+               (void)channel; (void)port; (void)data; (void)len;
                return false;
        }
 
@@ -217,7 +218,7 @@ public:
         *  @param data         A pointer to a buffer containing data sent by the source.
         *  @param len          The length of the data.
         */
-       virtual void channel_receive(channel *channel, const void *data, size_t len) { /* do nothing */ }
+       virtual void channel_receive(channel *channel, const void *data, size_t len) { /* do nothing */ (void)channel; (void)data; (void)len; }
 
        /// This function is called by Meshlink when data can be send on a channel.
        /**
@@ -229,7 +230,7 @@ public:
         *  @param channel      A handle for the channel.
         *  @param len          The maximum length of data that is guaranteed to be accepted by a call to channel_send().
         */
-       virtual void channel_poll(channel *channel, size_t len) { /* do nothing */ }
+       virtual void channel_poll(channel *channel, size_t len) { /* do nothing */ (void)channel; (void)len; }
 
        /// Start MeshLink.
        /** This function causes MeshLink to open network sockets, make outgoing connections, and
index d4a833ab873122237bf7db246f8cc85fc9462e7f..61b8b5616a77a35447ef95dd5e417abb6bf5e681 100644 (file)
@@ -641,9 +641,10 @@ static bool finalize_join(meshlink_handle_t *mesh) {
 static bool invitation_send(void *handle, uint8_t type, const void *data, size_t len) {
        (void)type;
        meshlink_handle_t *mesh = handle;
+       const char *ptr = data;
 
        while(len) {
-               int result = send(mesh->sock, data, len, 0);
+               int result = send(mesh->sock, ptr, len, 0);
 
                if(result == -1 && errno == EINTR) {
                        continue;
@@ -651,7 +652,7 @@ static bool invitation_send(void *handle, uint8_t type, const void *data, size_t
                        return false;
                }
 
-               data += result;
+               ptr += result;
                len -= result;
        }
 
@@ -790,7 +791,12 @@ static bool ecdsa_keygen(meshlink_handle_t *mesh) {
                logger(mesh, MESHLINK_DEBUG, "Done.\n");
        }
 
-       snprintf(privname, sizeof(privname), "%s" SLASH "ecdsa_key.priv", mesh->confbase);
+       if (snprintf(privname, sizeof(privname), "%s" SLASH "ecdsa_key.priv", mesh->confbase) >= PATH_MAX) {
+               logger(mesh, MESHLINK_DEBUG, "Filename too long: %s" SLASH "ecdsa_key.priv\n", mesh->confbase);
+               meshlink_errno = MESHLINK_ESTORAGE;
+               return false;
+       }
+
        f = fopen(privname, "wb");
 
        if(!f) {
@@ -1580,7 +1586,10 @@ static bool refresh_invitation_key(meshlink_handle_t *mesh) {
 
                char invname[PATH_MAX];
                struct stat st;
-               snprintf(invname, sizeof(invname), "%s" SLASH "%s", filename, ent->d_name);
+               if (snprintf(invname, sizeof(invname), "%s" SLASH "%s", filename, ent->d_name) >= PATH_MAX) {
+                       logger(mesh, MESHLINK_DEBUG, "Filename too long: %s" SLASH "%s", filename, ent->d_name);
+                       continue;
+               }
 
                if(!stat(invname, &st)) {
                        if(mesh->invitation_key && deadline < st.st_mtime) {
index 1ce239d97a9ea951fa21810176dd802296d55414..7db041b9be15210e5d4566bdf487707510a3b3e9 100644 (file)
@@ -370,7 +370,7 @@ static void send_udppacket(meshlink_handle_t *mesh, node_t *n, vpn_packet_t *ori
                return;
        }
 
-       return send_sptps_packet(mesh, n, origpkt);
+       send_sptps_packet(mesh, n, origpkt);
 }
 
 bool send_sptps_data(void *handle, uint8_t type, const void *data, size_t len) {
@@ -555,7 +555,7 @@ void handle_incoming_vpn_data(event_loop_t *loop, void *data, int flags) {
        listen_socket_t *ls = data;
        vpn_packet_t pkt;
        char *hostname;
-       sockaddr_t from = {};
+       sockaddr_t from;
        socklen_t fromlen = sizeof(from);
        node_t *n;
        int len;
index 2cd021111a204aebb37b4e0273a12ec75e19beed..f2621f3b92e6f87c0f2afcbcbf742b4ba22f7aa6 100644 (file)
@@ -273,15 +273,13 @@ static bool add_listen_address(meshlink_handle_t *mesh, char *address, bool bind
                }
        }
 
-       struct addrinfo *ai, hint = {};
-
-       hint.ai_family = addressfamily;
-
-       hint.ai_socktype = SOCK_STREAM;
-
-       hint.ai_protocol = IPPROTO_TCP;
-
-       hint.ai_flags = AI_PASSIVE;
+       struct addrinfo *ai;
+       struct addrinfo hint = {
+               .ai_family = addressfamily,
+               .ai_socktype = SOCK_STREAM,
+               .ai_protocol = IPPROTO_TCP,
+               .ai_flags = AI_PASSIVE,
+       };
 
        int err = getaddrinfo(address && *address ? address : NULL, port, &hint, &ai);
 
index f41fbecc2ea3e502bd4dad5e9cdc42d961eedc6a..d38b1a18aeb8468e1ac82ff40076b4c79720d54f 100644 (file)
@@ -32,11 +32,13 @@ bool hostnames = false;
   Return NULL on failure.
 */
 struct addrinfo *str2addrinfo(const char *address, const char *service, int socktype) {
-       struct addrinfo *ai, hint = {};
+       struct addrinfo *ai;
        int err;
 
-       hint.ai_family = addressfamily;
-       hint.ai_socktype = socktype;
+       struct addrinfo hint = {
+               .ai_family = addressfamily,
+               .ai_socktype = socktype,
+       };
 
        err = getaddrinfo(address, service, &hint, &ai);
 
@@ -49,13 +51,15 @@ struct addrinfo *str2addrinfo(const char *address, const char *service, int sock
 }
 
 sockaddr_t str2sockaddr(const char *address, const char *port) {
-       struct addrinfo *ai, hint = {};
-       sockaddr_t result = {};
+       struct addrinfo *ai;
+       sockaddr_t result;
        int err;
 
-       hint.ai_family = AF_UNSPEC;
-       hint.ai_flags = AI_NUMERICHOST;
-       hint.ai_socktype = SOCK_STREAM;
+       struct addrinfo hint = {
+               .ai_family = AF_UNSPEC,
+               .ai_flags = AI_NUMERICHOST,
+               .ai_socktype = SOCK_STREAM,
+       };
 
        err = getaddrinfo(address, port, &hint, &ai);
 
index ec8d0c60e58c2a33b666abbb7e301cb9919a66ac..499d819694890e353e571b2e487a49f5d7d8c500 100644 (file)
--- a/src/prf.c
+++ b/src/prf.c
@@ -28,7 +28,7 @@ static void memxor(char *buf, char c, size_t len) {
        }
 }
 
-static const size_t mdlen = 64;
+#define mdlen 64
 
 // TODO: separate key setup from hmac_sha512
 
index e0a0dbb29a74cfecb717042bbf74088f33afdd37..785e20b534b83213f9ed28b01941cce34b494e86 100644 (file)
@@ -188,9 +188,7 @@ static void age_past_requests(event_loop_t *loop, void *data) {
 }
 
 bool seen_request(meshlink_handle_t *mesh, const char *request) {
-       past_request_t *new, p = {};
-
-       p.request = request;
+       past_request_t *new, p = {.request = request};
 
        if(splay_search(mesh->past_request_tree, &p)) {
                logger(mesh, MESHLINK_DEBUG, "Already seen request");
index 006b4d5ed6889779197e6eb93681ef79eb3f3b0c..e2b93a056cd226286e7ec75d75bd501b301dadae 100644 (file)
@@ -25,7 +25,7 @@
 /* Splay operation */
 
 static splay_node_t *splay_top_down(splay_tree_t *tree, const void *data, int *result) {
-       splay_node_t left = {}, right = {};
+       splay_node_t left = {NULL}, right = {NULL};
        splay_node_t *leftbottom = &left, *rightbottom = &right, *child, *grandchild;
        splay_node_t *root = tree->root;
        int c;
index 3bc811ed207e3f80da255e7c85d375d431804b62..f44374ee4bf472b7fea3127ff3b777ffa26aa517 100644 (file)
@@ -447,7 +447,7 @@ bool sptps_verify_datagram(sptps_t *s, const void *data, size_t len) {
 
        char buffer[len];
        size_t outlen;
-       return chacha_poly1305_decrypt(s->incipher, seqno, data + 4, len - 4, buffer, &outlen);
+       return chacha_poly1305_decrypt(s->incipher, seqno, (const char *)data + 4, len - 4, buffer, &outlen);
 }
 
 // Receive incoming data, datagram version.
@@ -561,6 +561,8 @@ bool sptps_receive_data(sptps_t *s, const void *data, size_t len) {
                return sptps_receive_data_datagram(s, data, len);
        }
 
+       const char *ptr = data;
+
        while(len) {
                // First read the 2 length bytes.
                if(s->buflen < 2) {
@@ -570,11 +572,11 @@ bool sptps_receive_data(sptps_t *s, const void *data, size_t len) {
                                toread = len;
                        }
 
-                       memcpy(s->inbuf + s->buflen, data, toread);
+                       memcpy(s->inbuf + s->buflen, ptr, toread);
 
                        s->buflen += toread;
                        len -= toread;
-                       data += toread;
+                       ptr += toread;
 
                        // Exit early if we don't have the full length.
                        if(s->buflen < 2) {
@@ -606,10 +608,10 @@ bool sptps_receive_data(sptps_t *s, const void *data, size_t len) {
                        toread = len;
                }
 
-               memcpy(s->inbuf + s->buflen, data, toread);
+               memcpy(s->inbuf + s->buflen, ptr, toread);
                s->buflen += toread;
                len -= toread;
-               data += toread;
+               ptr += toread;
 
                // If we don't have a whole record, exit.
                if(s->buflen < s->reclen + (s->instate ? 19UL : 3UL)) {
index 850542e9585f716985c25d5995ba5bcb2cc6ba87..d0c4523ccd8998a70262fb11e015ea807d4aaba7 160000 (submodule)
--- a/src/utcp
+++ b/src/utcp
@@ -1 +1 @@
-Subproject commit 850542e9585f716985c25d5995ba5bcb2cc6ba87
+Subproject commit d0c4523ccd8998a70262fb11e015ea807d4aaba7
index 30a81bcba59b3927ee149c7de08ad86cf77c70c9..7b4f3cd71f5c510071e5b525fb5f0c87b74682ad 100644 (file)
@@ -5,7 +5,7 @@
 
 #include "meshlink.h"
 
-int main(int argc, char *argv[]) {
+int main() {
        // Open a new meshlink instance.
 
        meshlink_handle_t *mesh = meshlink_open("basic_conf", "foo", "basic", DEV_CLASS_BACKBONE);
index ed2815a1ce3a4857b79b9d9ffd8c4d2eb5dbb90d..4d126cf58dde2e2af42c0beb02317b375e3e8caf 100644 (file)
@@ -7,7 +7,7 @@
 
 using namespace std;
 
-int main(int argc, char *argv[]) {
+int main() {
        // Open a new meshlink instance.
 
        meshlink::mesh mesh;
index d4e02e28de8357ef2d3a9a6e802e50baf0c73687..ba4843d8672b4a65be456b58a357f931ccd2ff44 100644 (file)
@@ -34,6 +34,9 @@ void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *tex
 }
 
 void a_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) {
+       (void)mesh;
+       (void)channel;
+
        if(len == 5 && !memcmp(data, "Hello", 5)) {
                b_responded = true;
        } else if(len == 0) {
@@ -51,10 +54,18 @@ void b_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const vo
 }
 
 bool reject_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t port, const void *data, size_t len) {
+       (void)mesh;
+       (void)channel;
+       (void)port;
+       (void)data;
+       (void)len;
+
        return false;
 }
 
 bool accept_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t port, const void *data, size_t len) {
+       (void)port;
+
        meshlink_set_channel_accept_cb(mesh, NULL);
        meshlink_set_channel_receive_cb(mesh, channel, b_receive_cb);
 
@@ -66,17 +77,22 @@ bool accept_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t po
 }
 
 void poll_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t len) {
+       (void)len;
+
        meshlink_set_channel_poll_cb(mesh, channel, NULL);
-       set_sync_flag(channel->priv);
+       set_sync_flag(channel->priv, true);
 }
 
 void poll_cb2(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t len) {
+       (void)mesh;
+       (void)channel;
+
        if(len) {
                a_nonzero_poll_cb = true;
        }
 }
 
-int main(int argc, char *argv[]) {
+int main() {
        meshlink_handle_t *a, *b;
        open_meshlink_pair(&a, &b, "channels-cornercases");
        //meshlink_set_log_cb(a, MESHLINK_DEBUG, log_cb);
@@ -92,7 +108,7 @@ int main(int argc, char *argv[]) {
        meshlink_node_t *nb = meshlink_get_node(a, "b");
        assert(nb);
 
-       struct sync_flag channel_opened = {};
+       struct sync_flag channel_opened = {.flag = false};
        pthread_mutex_lock(&channel_opened.mutex);
 
        meshlink_channel_t *channel = meshlink_channel_open(a, nb, 7, a_receive_cb, NULL, 0);
index db2a033f7b6617eea9a576c530707e2ac3379f75..78d4e213ffe8d61f358f2ed80b8d54623e9ceb63 100644 (file)
@@ -18,12 +18,18 @@ void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *tex
 }
 
 void status_cb(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
+       (void)mesh;
+
        if(!strcmp(node->name, "bar")) {
                bar_reachable = reachable;
        }
 }
 
 void foo_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) {
+       (void)mesh;
+       (void)channel;
+       (void)len;
+
        if(len == 5 && !memcmp(data, "Hello", 5)) {
                bar_responded = true;
        }
@@ -35,6 +41,12 @@ void bar_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const
 }
 
 bool reject_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t port, const void *data, size_t len) {
+       (void)mesh;
+       (void)channel;
+       (void)port;
+       (void)data;
+       (void)len;
+
        return false;
 }
 
@@ -53,6 +65,8 @@ bool accept_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t po
 }
 
 void poll_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t len) {
+       (void)len;
+
        meshlink_set_channel_poll_cb(mesh, channel, NULL);
 
        if(meshlink_channel_send(mesh, channel, "Hello", 5) != 5) {
@@ -210,7 +224,7 @@ int main2(int rfd, int wfd) {
 }
 
 
-int main(int argc, char *argv[]) {
+int main() {
        int fda[2], fdb[2];
 
        pipe2(fda, 0);
index 68512eecdf3a4069ec50919354836b12133bc2b0..c1befeec152cef52053e4c30c979336a6408ed80 100644 (file)
@@ -29,6 +29,8 @@ void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *tex
 }
 
 void status_cb(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
+       (void)mesh;
+
        printf("status_cb: %s %sreachable\n", node->name, reachable ? "" : "un");
 
        if(!strcmp(node->name, "bar")) {
@@ -37,6 +39,9 @@ void status_cb(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
 }
 
 void foo_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) {
+       (void)mesh;
+       (void)channel;
+
        printf("foo_receive_cb %zu: ", len);
        fwrite(data, 1, len, stdout);
        printf("\n");
@@ -55,6 +60,12 @@ void bar_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const
 }
 
 bool reject_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t port, const void *data, size_t len) {
+       (void)mesh;
+       (void)channel;
+       (void)port;
+       (void)data;
+       (void)len;
+
        return false;
 }
 
@@ -81,6 +92,8 @@ bool accept_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t po
 }
 
 void poll_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t len) {
+       (void)len;
+
        meshlink_set_channel_poll_cb(mesh, channel, NULL);
 
        if(meshlink_channel_send(mesh, channel, "Hello", 5) != 5) {
@@ -88,7 +101,7 @@ void poll_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t len) {
        }
 }
 
-int main(int argc, char *argv[]) {
+int main() {
        meshlink_set_log_cb(NULL, MESHLINK_DEBUG, log_cb);
 
        // Open two new meshlink instance.
index f5aa04e3134d63b2eb826048cfbe649e771eec30..e6aefaab8a4fdcdaa741eb8cce8ae07aa08ebc44 100644 (file)
@@ -24,6 +24,8 @@ void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *tex
 }
 
 void status_cb(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
+       (void)mesh;
+
        if(!strcmp(node->name, "bar")) {
                bar_reachable = reachable;
        } else if(!strcmp(node->name, "foo"))
@@ -33,10 +35,18 @@ void status_cb(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
 }
 
 void foo_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) {
+       (void)mesh;
+       (void)channel;
+       (void)data;
+       (void)len;
+
        // One way only.
 }
 
 void bar_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) {
+       (void)mesh;
+       (void)channel;
+
        if(!len) {
                fprintf(stderr, "Connection closed by foo\n");
                foo_closed = true;
@@ -48,6 +58,12 @@ void bar_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const
 }
 
 bool reject_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t port, const void *data, size_t len) {
+       (void)mesh;
+       (void)channel;
+       (void)port;
+       (void)data;
+       (void)len;
+
        return false;
 }
 
@@ -66,6 +82,8 @@ bool accept_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t po
 }
 
 void poll_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t len) {
+       (void)len;
+
        meshlink_set_channel_poll_cb(mesh, channel, NULL);
        bar_responded = true;
 }
@@ -208,7 +226,7 @@ int main2(void) {
 }
 
 
-int main(int argc, char *argv[]) {
+int main() {
        debug_level = getenv("DEBUG") ? MESHLINK_DEBUG : MESHLINK_ERROR;
 
        // Initialize and exchange configuration.
index 8330f05f79fb77c066e9047026da6691030ebc58..de2231e9298d2b673c4b808765e034c91b82a086 100644 (file)
@@ -8,12 +8,14 @@
 volatile bool bar_reachable = false;
 
 void status_cb(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
+       (void)mesh;
+
        if(!strcmp(node->name, "bar")) {
                bar_reachable = reachable;
        }
 }
 
-int main(int argc, char *argv[]) {
+int main() {
        // Open two new meshlink instance.
 
        meshlink_handle_t *mesh1 = meshlink_open("import_export_conf.1", "foo", "import-export", DEV_CLASS_BACKBONE);
index 9f5cc8067eafe5c754de6e4a9782aaab0ef6d763..90326a0d1d8b574e40395f97c7f5a0e05a5e11cf 100644 (file)
@@ -8,12 +8,14 @@
 volatile bool baz_reachable = false;
 
 void status_cb(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
+       (void)mesh;
+
        if(!strcmp(node->name, "baz")) {
                baz_reachable = reachable;
        }
 }
 
-int main(int argc, char *argv[]) {
+int main() {
        // Open two new meshlink instance.
 
        meshlink_handle_t *mesh1 = meshlink_open("invite_join_conf.1", "foo", "invite-join", DEV_CLASS_BACKBONE);
index a9e6827863dc2b1f43afe6d0b71f025448dae445..8e21b50a0ac484773f9fa859aa52081e2007f5a9 100644 (file)
@@ -5,7 +5,7 @@
 
 #include "meshlink.h"
 
-int main(int argc, char *argv[]) {
+int main() {
        // Open two new meshlink instance.
 
        meshlink_handle_t *mesh1 = meshlink_open("sign_verify_conf.1", "foo", "sign-verify", DEV_CLASS_BACKBONE);
index bfeb4f6effecb6d384228981aa5d9cdc91c1f959..2cb14bd301af273c37c9948a6efc58cd80be96c8 100644 (file)
@@ -12,6 +12,8 @@
 #include "utils.h"
 
 static void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *text) {
+       (void)mesh;
+
        static struct timeval tv0;
        struct timeval tv;
 
@@ -32,6 +34,9 @@ static void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const ch
 static bool received = false;
 
 static void receive_cb(meshlink_handle_t *mesh, meshlink_node_t *source, const void *data, size_t len) {
+       (void)mesh;
+       (void)source;
+
        fprintf(stderr, "RECEIVED SOMETHING\n");
 
        if(len == 5 && !memcmp(data, "Hello", 5)) {
@@ -39,7 +44,7 @@ static void receive_cb(meshlink_handle_t *mesh, meshlink_node_t *source, const v
        }
 }
 
-int main(int argc, char *argv[]) {
+int main() {
        // Create three instances.
 
        const char *name[3] = {"foo", "bar", "baz"};
index 4b2b2715de9bd5267ba2a756f4e4ed1f026eec76..862e033ec0f0ac1ad83bdedfc70345ffbe939b99 100644 (file)
@@ -8,9 +8,9 @@
 
 #include "utils.h"
 
-void set_sync_flag(struct sync_flag *s) {
+void set_sync_flag(struct sync_flag *s, bool value) {
        pthread_mutex_lock(&s->mutex);
-       s->flag = true;
+       s->flag = value;
        pthread_cond_broadcast(&s->cond);
        pthread_mutex_unlock(&s->mutex);
 }
@@ -70,11 +70,13 @@ void open_meshlink_pair(meshlink_handle_t **pa, meshlink_handle_t **pb, const ch
 
 // Don't poll in the application thread, use a condition variable to signal when the peer is online.
 static void pair_status_cb(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) {
-       set_sync_flag(mesh->priv);
+       (void)node;
+
+       set_sync_flag(mesh->priv, reachable);
 }
 
 void start_meshlink_pair(meshlink_handle_t *a, meshlink_handle_t *b) {
-       struct sync_flag pair_status = {};
+       struct sync_flag pair_status = {.flag = false};
 
        a->priv = &pair_status;
        meshlink_set_node_status_cb(a, pair_status_cb);
index 9fb9b8d264459aac4f552e9129ee34e14552a364..27bb38c3fe9e20a8abae834c1d802d941daee2a2 100644 (file)
@@ -10,7 +10,7 @@ struct sync_flag {
        bool flag;
 };
 
-extern void set_sync_flag(struct sync_flag *s);
+extern void set_sync_flag(struct sync_flag *s, bool value);
 extern bool wait_sync_flag(struct sync_flag *s, int seconds);
 
 /// Create a pair of meshlink instances that are already joined together.