Enable and fix many extra warnings supported by GCC and Clang.
[tinc] / src / protocol_key.c
index f045009..1d1bee1 100644 (file)
@@ -35,7 +35,7 @@
 
 void send_key_changed(void) {
 #ifndef DISABLE_LEGACY
-       send_request(everyone, "%d %x %s", KEY_CHANGED, rand(), myself->name);
+       send_request(everyone, "%d %x %s", KEY_CHANGED, prng(UINT32_MAX), myself->name);
 
        /* Immediately send new keys to directly connected nodes to keep UDP mappings alive */
 
@@ -102,9 +102,9 @@ static bool send_initial_sptps_data(void *handle, uint8_t type, const void *data
        (void)type;
        node_t *to = handle;
        to->sptps.send_data = send_sptps_data_myself;
-       char buf[len * 4 / 3 + 5];
 
-       b64encode(data, buf, len);
+       char buf[B64_SIZE(len)];
+       b64encode_tinc(data, buf, len);
 
        return send_request(to->nexthop->connection, "%d %s %s %d %s", REQ_KEY, myself->name, to->name, REQ_KEY, buf);
 }
@@ -148,7 +148,7 @@ static bool req_key_ext_h(connection_t *c, const char *request, node_t *from, no
                char buf[MAX_STRING_SIZE];
                size_t len;
 
-               if(sscanf(request, "%*d %*s %*s %*d " MAX_STRING, buf) != 1 || !(len = b64decode(buf, buf, strlen(buf)))) {
+               if(sscanf(request, "%*d %*s %*s %*d " MAX_STRING, buf) != 1 || !(len = b64decode_tinc(buf, buf, strlen(buf)))) {
                        logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s) to %s (%s): %s", "SPTPS_PACKET", from->name, from->hostname, to->name, to->hostname, "invalid SPTPS data");
                        return true;
                }
@@ -233,7 +233,7 @@ static bool req_key_ext_h(connection_t *c, const char *request, node_t *from, no
                char buf[MAX_STRING_SIZE];
                size_t len;
 
-               if(sscanf(request, "%*d %*s %*s %*d " MAX_STRING, buf) != 1 || !(len = b64decode(buf, buf, strlen(buf)))) {
+               if(sscanf(request, "%*d %*s %*s %*d " MAX_STRING, buf) != 1 || !(len = b64decode_tinc(buf, buf, strlen(buf)))) {
                        logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s): %s", "REQ_SPTPS_START", from->name, from->hostname, "invalid SPTPS data");
                        return true;
                }
@@ -383,11 +383,11 @@ bool send_ans_key(node_t *to) {
 
        to->status.validkey_in = true;
 
-       return send_request(to->nexthop->connection, "%d %s %s %s %d %d %zu %d", ANS_KEY,
+       return send_request(to->nexthop->connection, "%d %s %s %s %d %d %lu %d", ANS_KEY,
                            myself->name, to->name, key,
                            cipher_get_nid(to->incipher),
                            digest_get_nid(to->indigest),
-                           digest_length(to->indigest),
+                           (unsigned long)digest_length(to->indigest),
                            to->incompression);
 #endif
 }
@@ -399,11 +399,11 @@ bool ans_key_h(connection_t *c, const char *request) {
        char address[MAX_STRING_SIZE] = "";
        char port[MAX_STRING_SIZE] = "";
        int cipher, digest;
-       size_t maclength;
+       unsigned long maclength;
        int compression;
        node_t *from, *to;
 
-       if(sscanf(request, "%*d "MAX_STRING" "MAX_STRING" "MAX_STRING" %d %d %zu %d "MAX_STRING" "MAX_STRING,
+       if(sscanf(request, "%*d "MAX_STRING" "MAX_STRING" "MAX_STRING" %d %d %lu %d "MAX_STRING" "MAX_STRING,
                        from_name, to_name, key, &cipher, &digest, &maclength,
                        &compression, address, port) < 7) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s)", "ANS_KEY", c->name,
@@ -520,7 +520,7 @@ bool ans_key_h(connection_t *c, const char *request) {
 
        if(from->status.sptps) {
                uint8_t buf[strlen(key)];
-               size_t len = b64decode(key, buf, strlen(key));
+               size_t len = b64decode_tinc(key, buf, strlen(key));
 
                if(!len || !sptps_receive_data(&from->sptps, buf, len)) {
                        /* Uh-oh. It might be that the tunnel is stuck in some corrupted state,