Commit graph

2787 commits

Author SHA1 Message Date
thorkill
5f6613e36f Attempt to fix the heap-use-after-free error in mst_kruskal
For some reason the edges ware removed in one direction resulting in e->reverse
point into invalid memory.

Do not insert edge into edge_weight_tree if not needed.
2015-07-08 00:36:22 +02:00
thorkill
06d4eac9ac Prevent tinc from forgeting e->local_address
If ADD_EDGE came from tinc version 1.0.x local_address.sa.sa_family is set to 0.
If it came from tinc version 1.1.x forwarded for older verion it will be 255 - AF_UNKNOWN.
2015-07-07 23:51:56 +02:00
thorkill
5ae403f9e6 Make sure we do not allocate new edge when talking to old nodes and the same edge already exists
When tinc gets ADD_EDGE from older versions it will allocate
new edge in protocol_edge.c:189 due to missed case in lines 149-171 where
local_address is not defined.
2015-07-07 23:51:43 +02:00
thorkill
de8b7a8dfb Prevent tinc from forgeting e->local_address
If ADD_EDGE came from tinc version 1.0.x local_address.sa.sa_family is set to 0.
If it came from tinc version 1.1.x forwarded for older verion it will be 255 - AF_UNKNOWN.
2015-07-07 23:14:08 +02:00
thorkill
e0d14e978f Make sure we do not allocate new edge when talking to old nodes and the same edge already exists
When tinc gets ADD_EDGE from older versions it will allocate
new edge in protocol_edge.c:189 due to missed case in lines 149-171 where
local_address is not defined.
2015-07-07 21:19:26 +02:00
thorkill
80ccfb2894 Update weight if needed at the beginning 2015-07-07 20:50:53 +02:00
thorkill
78d0342a12 Update weight on reverse edge too 2015-07-07 20:49:16 +02:00
thorkill
0c334bb077 Do not insert edge into edge_weight_tree if not needed 2015-07-07 20:37:17 +02:00
thorkill
bb3fd0a985 Make usage of weight 2015-07-07 20:35:52 +02:00
thorkill
d49fd87dbc Attempt to fix the heap-use-after-free error in mst_kruskal
For some reason the edges ware removed in one direction resulting in e->reverse
point into invalid memory.
2015-07-07 00:05:58 +02:00
thorkill
77eac310c5 Revert "Set edge->reverse to NULL before we free it"
This reverts commit eda9f0ea8e.
2015-07-06 01:54:01 +02:00
thorkill
8dcd2a9995 Do not delete edges which differ only by weight
Added special case where we get weight update from other node.
Previous version called edge_del() which caused segmentation
faults in mst_kruskal.
2015-07-06 01:52:40 +02:00
thorkill
38c42fb973 Move the edge weight update handling to edge.c 2015-07-06 01:50:31 +02:00
thorkill
7c85db5421 Introducing new function for edge weight update 2015-07-06 01:49:45 +02:00
thorkill
b7820caf03 removed edge_clone() 2015-07-06 01:49:03 +02:00
thorkill
eda9f0ea8e Set edge->reverse to NULL before we free it 2015-07-06 01:04:11 +02:00
thorkill
e51dd1b196 Changed the name of edge from node to oldnode 2015-07-06 00:42:59 +02:00
thorkill
7dc8c736bc list_each shadowed node
move it into the loop
2015-07-05 22:32:32 +02:00
thorkill
841ca358e0 Forgot to set node->data 2015-07-05 21:58:27 +02:00
thorkill
25ad32d206 Use usage of splay_node_t 2015-07-05 21:41:49 +02:00
thorkill
bebe8e6808 Fixed edge->reverse corruption resulting in a segfault in graph()
Thanks to Guus for helping us with this one.
2015-07-05 20:54:32 +02:00
thorkill
04c1dedeb5 Extended simple.c with hash and connection tests 2015-07-05 00:32:44 +02:00
thorkill
82706970cf Removed unused declaration in bind_to_intercface() 2015-07-05 00:32:11 +02:00
thorkill
614a03c886 Do not try to zero memory on unitialized hash 2015-07-05 00:31:39 +02:00
thorkill
aea7938f19 Added sanity check in test in sssp_bfs() 2015-07-05 00:31:01 +02:00
thorkill
837469c747 Add small jitter to keyexpire_handle and edgeupdate_handler 2015-07-05 00:16:02 +02:00
thorkill
d172f2db29 Merge with guus patch for exit_edges() 2015-07-05 00:15:04 +02:00
thorkill
aa9994e49e Cleanup after merge 2015-07-04 18:52:16 +02:00
thorkill
dc5491a59e Merge branch '1.1' of github.com:gsliepen/tinc into thkr-1.1-ponyhof 2015-07-04 18:45:43 +02:00
Guus Sliepen
de7d9ee437 Call sockaddrfree(&e->local_address) in free_edge() instead of exit_edges().
The proper place to clean up resources of objects is in their
destructor. This makes sure proper cleanup when edge_del() is called as
well. At exit, free_edge() is called on all edges by free_edge_tree(),
which is called by exit_nodes().
2015-07-04 17:53:11 +02:00
Guus Sliepen
36cec9af88 Coalesce two if statements that check for the same thing. 2015-07-04 17:51:05 +02:00
Jo-Philipp Wich
14ccf50954 fix musl compatibility
Let configure include sys/if_tun.h when testing for netinet/if_ether.h
to detect the Kernel/libc header conflict on musl.

After this patch, configure will correctly detect netinet/if_ether.h as
unusable and the subsequent compilation will not attempt to use it.

Conflicts:
	src/have.h
2015-07-04 17:34:37 +02:00
Guus Sliepen
37588b8d5c Don't #include OpenSSL headers when compiling without OpenSSL. 2015-07-04 17:34:31 +02:00
thorkill
abb24e9d71 Cleanup local_address in protocol_edge.c
In line 131 local_address has been defined,
but the memory was never freed on return.
2015-07-04 03:24:13 +02:00
thorkill
92df36a610 Cleanup edges stored in edge_weight_tree on exit
protocol_edge.c: 131 defines local_address using str2sockaddr

str2sockaddr() allocates memory which has to be freed on exit.
2015-07-04 03:24:05 +02:00
thorkill
1140ca6d30 Fixed 2 leaks in setup_myself() 2015-07-04 03:23:58 +02:00
thorkill
e3ae318059 Cleanup local_address in protocol_edge.c
In line 131 local_address has been defined,
but the memory was never freed on return.
2015-07-04 03:21:01 +02:00
thorkill
d08c7cf4cf Cleanup edges stored in edge_weight_tree on exit
protocol_edge.c: 131 defines local_address using str2sockaddr

str2sockaddr() allocates memory which has to be freed on exit.
2015-07-04 02:39:12 +02:00
thorkill
6efd3ff302 Fixed 2 leaks in setup_myself() 2015-07-04 00:29:36 +02:00
thorkill
b342d0cfb6 Added simple connection tests 2015-07-02 22:06:14 +02:00
thorkill
8a6c5595b1 Added ./configure --enable-devel to enable -Werror and other developement settings 2015-07-02 21:55:50 +02:00
thorkill
94703cdfa9 getopt.c fixes for unitialized parameters on FreeBSD 2015-07-02 21:48:15 +02:00
thorkill
ad58c0f65d Revert "Marked missing parameters in getopt.c on FreeBSD"
This reverts commit 5bba2cc066.
2015-07-02 21:45:43 +02:00
thorkill
5bba2cc066 Marked missing parameters in getopt.c on FreeBSD 2015-07-02 21:42:44 +02:00
thorkill
3f4855587c Marked unused parameter in net_socket.c
Found by clang on FreeBSD
2015-07-02 21:39:07 +02:00
thorkill
d2e038ab24 Makred unused parameter in net_packet.c
Found by clang -Wunused-parameter on FreeBSD
2015-07-02 21:37:33 +02:00
thorkill
bfea5f350f Added small node test, working on edge tests 2015-07-02 21:33:28 +02:00
Florian Klink
0267aef826 setup_outgoing_connection: log to LOG_DEBUG on if no known address
With AutoConnect = yes, tinc tries to establish connections to known hosts.
However, you could have set no Address for this host, which is perfectly fine
(as long as there is at least one bootstrap node with an address or a local
discovered node already part of the network)

So log this to LOG_DEBUG
2015-07-02 21:22:53 +02:00
Florian Klink
91355b9ac5 (read|append)_config_file: log open errors as LOG_DEBUG
In a "decentrally managed vpn" it is very likely that host config
files for some reachable nodes do not exist. Currently, tinc
fills the logs with "Cannot open config file" messages.

This commit changes the log level to LOG_DEBUG so
syslog doesn't get filled by default.
2015-07-02 21:22:47 +02:00
thorkill
743671278f Attempt to track an segfault in mst_kruskal()
(gdb) bt
#0  mst_kruskal () at graph.c:107
#1  graph () at graph.c:302
#2  0x00007ffff7b509fe in del_edge_h (c=<optimized out>, request=<optimized out>) at protocol_edge.c:292
#3  0x00007ffff7b4de2e in receive_request (c=0x5555557e3ef0, request=0x555555800e13 "13 3fc17404 node1 node2") at protocol.c:136
#4  0x00007ffff7b43513 in receive_meta (c=0x5555557e3ef0) at meta.c:290
#5  0x00007ffff7b442d9 in handle_meta_connection_data (c=0x5555557e3ef0) at net.c:291
#6  0x00007ffff7b41391 in event_loop () at event.c:287
#7  0x00007ffff7b449b2 in main_loop () at net.c:469
#8  0x0000555555556716 in main (argc=<optimized out>, argv=<optimized out>) at tincd.c:480
2015-07-02 20:38:02 +02:00