summaryrefslogtreecommitdiff
path: root/toxcore
diff options
context:
space:
mode:
Diffstat (limited to 'toxcore')
-rw-r--r--toxcore/onion.c9
-rw-r--r--toxcore/onion_client.c5
2 files changed, 14 insertions, 0 deletions
diff --git a/toxcore/onion.c b/toxcore/onion.c
index 9819762d..b4d2a364 100644
--- a/toxcore/onion.c
+++ b/toxcore/onion.c
@@ -50,6 +50,7 @@ int send_onion_packet(DHT *dht, Node_format *nodes, uint8_t *data, uint32_t leng
50 return -1; 50 return -1;
51 51
52 uint8_t step1[sizeof(IP_Port) + length]; 52 uint8_t step1[sizeof(IP_Port) + length];
53 to_net_family(&nodes[3].ip_port.ip);
53 memcpy(step1, &nodes[3].ip_port, sizeof(IP_Port)); 54 memcpy(step1, &nodes[3].ip_port, sizeof(IP_Port));
54 memcpy(step1 + sizeof(IP_Port), data, length); 55 memcpy(step1 + sizeof(IP_Port), data, length);
55 56
@@ -60,6 +61,7 @@ int send_onion_packet(DHT *dht, Node_format *nodes, uint8_t *data, uint32_t leng
60 crypto_box_keypair(random_public_key, random_secret_key); 61 crypto_box_keypair(random_public_key, random_secret_key);
61 62
62 uint8_t step2[sizeof(IP_Port) + SEND_BASE + length]; 63 uint8_t step2[sizeof(IP_Port) + SEND_BASE + length];
64 to_net_family(&nodes[2].ip_port.ip);
63 memcpy(step2, &nodes[2].ip_port, sizeof(IP_Port)); 65 memcpy(step2, &nodes[2].ip_port, sizeof(IP_Port));
64 memcpy(step2 + sizeof(IP_Port), random_public_key, crypto_box_PUBLICKEYBYTES); 66 memcpy(step2 + sizeof(IP_Port), random_public_key, crypto_box_PUBLICKEYBYTES);
65 67
@@ -71,6 +73,7 @@ int send_onion_packet(DHT *dht, Node_format *nodes, uint8_t *data, uint32_t leng
71 73
72 crypto_box_keypair(random_public_key, random_secret_key); 74 crypto_box_keypair(random_public_key, random_secret_key);
73 uint8_t step3[sizeof(IP_Port) + SEND_BASE * 2 + length]; 75 uint8_t step3[sizeof(IP_Port) + SEND_BASE * 2 + length];
76 to_net_family(&nodes[1].ip_port.ip);
74 memcpy(step3, &nodes[1].ip_port, sizeof(IP_Port)); 77 memcpy(step3, &nodes[1].ip_port, sizeof(IP_Port));
75 memcpy(step3 + sizeof(IP_Port), random_public_key, crypto_box_PUBLICKEYBYTES); 78 memcpy(step3 + sizeof(IP_Port), random_public_key, crypto_box_PUBLICKEYBYTES);
76 len = encrypt_data(nodes[1].client_id, random_secret_key, nonce, 79 len = encrypt_data(nodes[1].client_id, random_secret_key, nonce,
@@ -134,6 +137,8 @@ static int handle_send_initial(void *object, IP_Port source, uint8_t *packet, ui
134 137
135 IP_Port send_to; 138 IP_Port send_to;
136 memcpy(&send_to, plain, sizeof(IP_Port)); 139 memcpy(&send_to, plain, sizeof(IP_Port));
140 to_host_family(&send_to.ip);
141
137 uint8_t data[MAX_ONION_SIZE]; 142 uint8_t data[MAX_ONION_SIZE];
138 data[0] = NET_PACKET_ONION_SEND_1; 143 data[0] = NET_PACKET_ONION_SEND_1;
139 memcpy(data + 1, packet + 1, crypto_box_NONCEBYTES); 144 memcpy(data + 1, packet + 1, crypto_box_NONCEBYTES);
@@ -176,6 +181,8 @@ static int handle_send_1(void *object, IP_Port source, uint8_t *packet, uint32_t
176 181
177 IP_Port send_to; 182 IP_Port send_to;
178 memcpy(&send_to, plain, sizeof(IP_Port)); 183 memcpy(&send_to, plain, sizeof(IP_Port));
184 to_host_family(&send_to.ip);
185
179 uint8_t data[MAX_ONION_SIZE]; 186 uint8_t data[MAX_ONION_SIZE];
180 data[0] = NET_PACKET_ONION_SEND_2; 187 data[0] = NET_PACKET_ONION_SEND_2;
181 memcpy(data + 1, packet + 1, crypto_box_NONCEBYTES); 188 memcpy(data + 1, packet + 1, crypto_box_NONCEBYTES);
@@ -221,6 +228,8 @@ static int handle_send_2(void *object, IP_Port source, uint8_t *packet, uint32_t
221 228
222 IP_Port send_to; 229 IP_Port send_to;
223 memcpy(&send_to, plain, sizeof(IP_Port)); 230 memcpy(&send_to, plain, sizeof(IP_Port));
231 to_host_family(&send_to.ip);
232
224 uint8_t data[MAX_ONION_SIZE]; 233 uint8_t data[MAX_ONION_SIZE];
225 memcpy(data, plain + sizeof(IP_Port), len - sizeof(IP_Port)); 234 memcpy(data, plain + sizeof(IP_Port), len - sizeof(IP_Port));
226 uint32_t data_len = (len - sizeof(IP_Port)); 235 uint32_t data_len = (len - sizeof(IP_Port));
diff --git a/toxcore/onion_client.c b/toxcore/onion_client.c
index 825c6b98..e3bd306b 100644
--- a/toxcore/onion_client.c
+++ b/toxcore/onion_client.c
@@ -537,6 +537,11 @@ static int send_fakeid_announce(Onion_Client *onion_c, uint16_t friend_num, uint
537 memcpy(data + 1 + sizeof(uint64_t), onion_c->dht->self_public_key, crypto_box_PUBLICKEYBYTES); 537 memcpy(data + 1 + sizeof(uint64_t), onion_c->dht->self_public_key, crypto_box_PUBLICKEYBYTES);
538 Node_format nodes[MAX_SENT_NODES]; 538 Node_format nodes[MAX_SENT_NODES];
539 uint16_t num_nodes = closelist_nodes(onion_c->dht, nodes, MAX_SENT_NODES); 539 uint16_t num_nodes = closelist_nodes(onion_c->dht, nodes, MAX_SENT_NODES);
540 uint32_t i;
541
542 for (i = 0; i < num_nodes; ++i)
543 to_net_family(&nodes[i].ip_port.ip);
544
540 memcpy(data + FAKEID_DATA_MIN_LENGTH, nodes, sizeof(Node_format) * num_nodes); 545 memcpy(data + FAKEID_DATA_MIN_LENGTH, nodes, sizeof(Node_format) * num_nodes);
541 int num1 = -1, num2 = -1; 546 int num1 = -1, num2 = -1;
542 547