Fix listen_sockets overflow in close_network_connections()
[tinc] / src / net_setup.c
index 3ac5a67..b88f526 100644 (file)
@@ -184,8 +184,7 @@ void load_all_nodes(void) {
                read_host_config(&config, ent->d_name, true);
 
                if(!n) {
-                       n = new_node();
-                       n->name = xstrdup(ent->d_name);
+                       n = new_node(ent->d_name);
                        node_add(n);
                }
 
@@ -675,6 +674,7 @@ static bool add_listen_address(char *address, bool bindto) {
                }
 
                if(listen_sockets >= MAXSOCKETS) {
+                       listen_sockets = MAXSOCKETS;
                        logger(DEBUG_ALWAYS, LOG_ERR, "Too many listening sockets");
                        freeaddrinfo(ai);
                        return false;
@@ -764,10 +764,9 @@ static bool setup_myself(void) {
        }
 
        myname = xstrdup(name);
-       myself = new_node();
+       myself = new_node(name);
        myself->connection = new_connection();
-       myself->name = name;
-       myself->connection->name = xstrdup(name);
+       myself->connection->name = name;
        read_host_config(&config_tree, name, true);
 
        if(!get_config_string(lookup_config(&config_tree, "Port"), &myport.tcp)) {
@@ -1097,6 +1096,7 @@ static bool setup_myself(void) {
 #endif
 
                if(listen_sockets > MAXSOCKETS) {
+                       listen_sockets = MAXSOCKETS;
                        logger(DEBUG_ALWAYS, LOG_ERR, "Too many listening sockets");
                        return false;
                }