diff options
-rw-r--r-- | toxcore/onion.c | 9 | ||||
-rw-r--r-- | toxcore/onion_client.c | 5 |
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 | ||