Replace the connection_tree with a connection_list.
[tinc] / src / protocol_auth.c
index f6192d7..59917c6 100644 (file)
@@ -20,7 +20,6 @@
 
 #include "system.h"
 
-#include "splay_tree.h"
 #include "conf.h"
 #include "connection.h"
 #include "control.h"
@@ -65,7 +64,7 @@ static bool send_proxyrequest(connection_t *c) {
                        memcpy(s4req + 2, &c->address.in.sin_port, 2);
                        memcpy(s4req + 4, &c->address.in.sin_addr, 4);
                        if(proxyuser)
-                               strcpy(s4req + 8, proxyuser);
+                               memcpy(s4req + 8, proxyuser, strlen(proxyuser));
                        s4req[sizeof s4req - 1] = 0;
                        c->tcplen = 8;
                        return send_meta(c, s4req, sizeof s4req);
@@ -83,10 +82,10 @@ static bool send_proxyrequest(connection_t *c) {
                                s5req[i++] = 2;
                                s5req[i++] = 1;
                                s5req[i++] = strlen(proxyuser);
-                               strcpy(s5req + i, proxyuser);
+                               memcpy(s5req + i, proxyuser, strlen(proxyuser));
                                i += strlen(proxyuser);
                                s5req[i++] = strlen(proxypass);
-                               strcpy(s5req + i, proxypass);
+                               memcpy(s5req + i, proxypass, strlen(proxypass));
                                i += strlen(proxypass);
                                c->tcplen += 2;
                        } else {
@@ -212,9 +211,8 @@ bool id_h(connection_t *c, const char *request) {
        if(!c->config_tree) {
                init_configuration(&c->config_tree);
 
-               if(!read_connection_config(c)) {
-                       logger(DEBUG_ALWAYS, LOG_ERR, "Peer %s had unknown identity (%s)", c->hostname,
-                                  c->name);
+               if(!read_host_config(c->config_tree, c->name)) {
+                       logger(DEBUG_ALWAYS, LOG_ERR, "Peer %s had unknown identity (%s)", c->hostname, c->name);
                        return false;
                }
 
@@ -506,7 +504,7 @@ bool send_ack(connection_t *c) {
 
        get_config_int(lookup_config(c->config_tree, "Weight"), &c->estimated_weight);
 
-       return send_request(c, "%d %s %d %x", ACK, myport, c->estimated_weight, (c->options & 0xffffff) | (PROT_MINOR << 24));
+       return send_request(c, "%d %s %d %x", ACK, myport, c->estimated_weight, (c->options & 0xffffff) | (experimental ? (PROT_MINOR << 24) : 0));
 }
 
 static void send_everything(connection_t *c) {