summaryrefslogtreecommitdiff
path: root/toxcore/onion_announce.c
diff options
context:
space:
mode:
authoriphydf <iphydf@users.noreply.github.com>2016-08-31 19:12:19 +0100
committeriphydf <iphydf@users.noreply.github.com>2016-08-31 20:04:16 +0100
commit633da98ae69866efb195e00d9a3a22ace6bada66 (patch)
tree875535f3d2257c4ea5bb97a553b2f1beab4a1590 /toxcore/onion_announce.c
parent6356eb4e4fe407fa7870f2a685d0d08b5c2ec5bb (diff)
Add braces to all if statements.
Diffstat (limited to 'toxcore/onion_announce.c')
-rw-r--r--toxcore/onion_announce.c96
1 files changed, 64 insertions, 32 deletions
diff --git a/toxcore/onion_announce.c b/toxcore/onion_announce.c
index f6a00f67..08492bb9 100644
--- a/toxcore/onion_announce.c
+++ b/toxcore/onion_announce.c
@@ -51,8 +51,9 @@ int create_announce_request(uint8_t *packet, uint16_t max_packet_length, const u
51 const uint8_t *public_key, const uint8_t *secret_key, const uint8_t *ping_id, const uint8_t *client_id, 51 const uint8_t *public_key, const uint8_t *secret_key, const uint8_t *ping_id, const uint8_t *client_id,
52 const uint8_t *data_public_key, uint64_t sendback_data) 52 const uint8_t *data_public_key, uint64_t sendback_data)
53{ 53{
54 if (max_packet_length < ONION_ANNOUNCE_REQUEST_SIZE) 54 if (max_packet_length < ONION_ANNOUNCE_REQUEST_SIZE) {
55 return -1; 55 return -1;
56 }
56 57
57 uint8_t plain[ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES + 58 uint8_t plain[ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES +
58 ONION_ANNOUNCE_SENDBACK_DATA_LENGTH]; 59 ONION_ANNOUNCE_SENDBACK_DATA_LENGTH];
@@ -68,8 +69,9 @@ int create_announce_request(uint8_t *packet, uint16_t max_packet_length, const u
68 int len = encrypt_data(dest_client_id, secret_key, packet + 1, plain, sizeof(plain), 69 int len = encrypt_data(dest_client_id, secret_key, packet + 1, plain, sizeof(plain),
69 packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES); 70 packet + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES);
70 71
71 if ((uint32_t)len + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES != ONION_ANNOUNCE_REQUEST_SIZE) 72 if ((uint32_t)len + 1 + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES != ONION_ANNOUNCE_REQUEST_SIZE) {
72 return -1; 73 return -1;
74 }
73 75
74 memcpy(packet + 1 + crypto_box_NONCEBYTES, public_key, crypto_box_PUBLICKEYBYTES); 76 memcpy(packet + 1 + crypto_box_NONCEBYTES, public_key, crypto_box_PUBLICKEYBYTES);
75 77
@@ -89,11 +91,13 @@ int create_announce_request(uint8_t *packet, uint16_t max_packet_length, const u
89int create_data_request(uint8_t *packet, uint16_t max_packet_length, const uint8_t *public_key, 91int create_data_request(uint8_t *packet, uint16_t max_packet_length, const uint8_t *public_key,
90 const uint8_t *encrypt_public_key, const uint8_t *nonce, const uint8_t *data, uint16_t length) 92 const uint8_t *encrypt_public_key, const uint8_t *nonce, const uint8_t *data, uint16_t length)
91{ 93{
92 if (DATA_REQUEST_MIN_SIZE + length > max_packet_length) 94 if (DATA_REQUEST_MIN_SIZE + length > max_packet_length) {
93 return -1; 95 return -1;
96 }
94 97
95 if ((unsigned int)DATA_REQUEST_MIN_SIZE + length > ONION_MAX_DATA_SIZE) 98 if ((unsigned int)DATA_REQUEST_MIN_SIZE + length > ONION_MAX_DATA_SIZE) {
96 return -1; 99 return -1;
100 }
97 101
98 packet[0] = NET_PACKET_ONION_DATA_REQUEST; 102 packet[0] = NET_PACKET_ONION_DATA_REQUEST;
99 memcpy(packet + 1, public_key, crypto_box_PUBLICKEYBYTES); 103 memcpy(packet + 1, public_key, crypto_box_PUBLICKEYBYTES);
@@ -109,8 +113,9 @@ int create_data_request(uint8_t *packet, uint16_t max_packet_length, const uint8
109 packet + 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES); 113 packet + 1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES);
110 114
111 if (1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + len != DATA_REQUEST_MIN_SIZE + 115 if (1 + crypto_box_PUBLICKEYBYTES + crypto_box_NONCEBYTES + crypto_box_PUBLICKEYBYTES + len != DATA_REQUEST_MIN_SIZE +
112 length) 116 length) {
113 return -1; 117 return -1;
118 }
114 119
115 return DATA_REQUEST_MIN_SIZE + length; 120 return DATA_REQUEST_MIN_SIZE + length;
116} 121}
@@ -137,17 +142,20 @@ int send_announce_request(Networking_Core *net, const Onion_Path *path, Node_for
137 int len = create_announce_request(request, sizeof(request), dest.public_key, public_key, secret_key, ping_id, client_id, 142 int len = create_announce_request(request, sizeof(request), dest.public_key, public_key, secret_key, ping_id, client_id,
138 data_public_key, sendback_data); 143 data_public_key, sendback_data);
139 144
140 if (len != sizeof(request)) 145 if (len != sizeof(request)) {
141 return -1; 146 return -1;
147 }
142 148
143 uint8_t packet[ONION_MAX_PACKET_SIZE]; 149 uint8_t packet[ONION_MAX_PACKET_SIZE];
144 len = create_onion_packet(packet, sizeof(packet), path, dest.ip_port, request, sizeof(request)); 150 len = create_onion_packet(packet, sizeof(packet), path, dest.ip_port, request, sizeof(request));
145 151
146 if (len == -1) 152 if (len == -1) {
147 return -1; 153 return -1;
154 }
148 155
149 if (sendpacket(net, path->ip_port1, packet, len) != len) 156 if (sendpacket(net, path->ip_port1, packet, len) != len) {
150 return -1; 157 return -1;
158 }
151 159
152 return 0; 160 return 0;
153} 161}
@@ -172,17 +180,20 @@ int send_data_request(Networking_Core *net, const Onion_Path *path, IP_Port dest
172 uint8_t request[ONION_MAX_DATA_SIZE]; 180 uint8_t request[ONION_MAX_DATA_SIZE];
173 int len = create_data_request(request, sizeof(request), public_key, encrypt_public_key, nonce, data, length); 181 int len = create_data_request(request, sizeof(request), public_key, encrypt_public_key, nonce, data, length);
174 182
175 if (len == -1) 183 if (len == -1) {
176 return -1; 184 return -1;
185 }
177 186
178 uint8_t packet[ONION_MAX_PACKET_SIZE]; 187 uint8_t packet[ONION_MAX_PACKET_SIZE];
179 len = create_onion_packet(packet, sizeof(packet), path, dest, request, len); 188 len = create_onion_packet(packet, sizeof(packet), path, dest, request, len);
180 189
181 if (len == -1) 190 if (len == -1) {
182 return -1; 191 return -1;
192 }
183 193
184 if (sendpacket(net, path->ip_port1, packet, len) != len) 194 if (sendpacket(net, path->ip_port1, packet, len) != len) {
185 return -1; 195 return -1;
196 }
186 197
187 return 0; 198 return 0;
188} 199}
@@ -211,8 +222,9 @@ static int in_entries(const Onion_Announce *onion_a, const uint8_t *public_key)
211 222
212 for (i = 0; i < ONION_ANNOUNCE_MAX_ENTRIES; ++i) { 223 for (i = 0; i < ONION_ANNOUNCE_MAX_ENTRIES; ++i) {
213 if (!is_timeout(onion_a->entries[i].time, ONION_ANNOUNCE_TIMEOUT) 224 if (!is_timeout(onion_a->entries[i].time, ONION_ANNOUNCE_TIMEOUT)
214 && public_key_cmp(onion_a->entries[i].public_key, public_key) == 0) 225 && public_key_cmp(onion_a->entries[i].public_key, public_key) == 0) {
215 return i; 226 return i;
227 }
216 } 228 }
217 229
218 return -1; 230 return -1;
@@ -227,22 +239,27 @@ static int cmp_entry(const void *a, const void *b)
227 int t1 = is_timeout(entry1.time, ONION_ANNOUNCE_TIMEOUT); 239 int t1 = is_timeout(entry1.time, ONION_ANNOUNCE_TIMEOUT);
228 int t2 = is_timeout(entry2.time, ONION_ANNOUNCE_TIMEOUT); 240 int t2 = is_timeout(entry2.time, ONION_ANNOUNCE_TIMEOUT);
229 241
230 if (t1 && t2) 242 if (t1 && t2) {
231 return 0; 243 return 0;
244 }
232 245
233 if (t1) 246 if (t1) {
234 return -1; 247 return -1;
248 }
235 249
236 if (t2) 250 if (t2) {
237 return 1; 251 return 1;
252 }
238 253
239 int close = id_closest(cmp_public_key, entry1.public_key, entry2.public_key); 254 int close = id_closest(cmp_public_key, entry1.public_key, entry2.public_key);
240 255
241 if (close == 1) 256 if (close == 1) {
242 return 1; 257 return 1;
258 }
243 259
244 if (close == 2) 260 if (close == 2) {
245 return -1; 261 return -1;
262 }
246 263
247 return 0; 264 return 0;
248} 265}
@@ -262,18 +279,21 @@ static int add_to_entries(Onion_Announce *onion_a, IP_Port ret_ip_port, const ui
262 279
263 if (pos == -1) { 280 if (pos == -1) {
264 for (i = 0; i < ONION_ANNOUNCE_MAX_ENTRIES; ++i) { 281 for (i = 0; i < ONION_ANNOUNCE_MAX_ENTRIES; ++i) {
265 if (is_timeout(onion_a->entries[i].time, ONION_ANNOUNCE_TIMEOUT)) 282 if (is_timeout(onion_a->entries[i].time, ONION_ANNOUNCE_TIMEOUT)) {
266 pos = i; 283 pos = i;
284 }
267 } 285 }
268 } 286 }
269 287
270 if (pos == -1) { 288 if (pos == -1) {
271 if (id_closest(onion_a->dht->self_public_key, public_key, onion_a->entries[0].public_key) == 1) 289 if (id_closest(onion_a->dht->self_public_key, public_key, onion_a->entries[0].public_key) == 1) {
272 pos = 0; 290 pos = 0;
291 }
273 } 292 }
274 293
275 if (pos == -1) 294 if (pos == -1) {
276 return -1; 295 return -1;
296 }
277 297
278 memcpy(onion_a->entries[pos].public_key, public_key, crypto_box_PUBLICKEYBYTES); 298 memcpy(onion_a->entries[pos].public_key, public_key, crypto_box_PUBLICKEYBYTES);
279 onion_a->entries[pos].ret_ip_port = ret_ip_port; 299 onion_a->entries[pos].ret_ip_port = ret_ip_port;
@@ -290,8 +310,9 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t *
290{ 310{
291 Onion_Announce *onion_a = object; 311 Onion_Announce *onion_a = object;
292 312
293 if (length != ANNOUNCE_REQUEST_SIZE_RECV) 313 if (length != ANNOUNCE_REQUEST_SIZE_RECV) {
294 return 1; 314 return 1;
315 }
295 316
296 const uint8_t *packet_public_key = packet + 1 + crypto_box_NONCEBYTES; 317 const uint8_t *packet_public_key = packet + 1 + crypto_box_NONCEBYTES;
297 uint8_t shared_key[crypto_box_BEFORENMBYTES]; 318 uint8_t shared_key[crypto_box_BEFORENMBYTES];
@@ -303,8 +324,9 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t *
303 ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + 324 ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH +
304 crypto_box_MACBYTES, plain); 325 crypto_box_MACBYTES, plain);
305 326
306 if ((uint32_t)len != sizeof(plain)) 327 if ((uint32_t)len != sizeof(plain)) {
307 return 1; 328 return 1;
329 }
308 330
309 uint8_t ping_id1[ONION_PING_ID_SIZE]; 331 uint8_t ping_id1[ONION_PING_ID_SIZE];
310 generate_ping_id(onion_a, unix_time(), packet_public_key, source, ping_id1); 332 generate_ping_id(onion_a, unix_time(), packet_public_key, source, ping_id1);
@@ -356,16 +378,18 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t *
356 if (num_nodes != 0) { 378 if (num_nodes != 0) {
357 nodes_length = pack_nodes(pl + 1 + ONION_PING_ID_SIZE, sizeof(nodes_list), nodes_list, num_nodes); 379 nodes_length = pack_nodes(pl + 1 + ONION_PING_ID_SIZE, sizeof(nodes_list), nodes_list, num_nodes);
358 380
359 if (nodes_length <= 0) 381 if (nodes_length <= 0) {
360 return 1; 382 return 1;
383 }
361 } 384 }
362 385
363 uint8_t data[ONION_ANNOUNCE_RESPONSE_MAX_SIZE]; 386 uint8_t data[ONION_ANNOUNCE_RESPONSE_MAX_SIZE];
364 len = encrypt_data_symmetric(shared_key, nonce, pl, 1 + ONION_PING_ID_SIZE + nodes_length, 387 len = encrypt_data_symmetric(shared_key, nonce, pl, 1 + ONION_PING_ID_SIZE + nodes_length,
365 data + 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + crypto_box_NONCEBYTES); 388 data + 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + crypto_box_NONCEBYTES);
366 389
367 if (len != 1 + ONION_PING_ID_SIZE + nodes_length + crypto_box_MACBYTES) 390 if (len != 1 + ONION_PING_ID_SIZE + nodes_length + crypto_box_MACBYTES) {
368 return 1; 391 return 1;
392 }
369 393
370 data[0] = NET_PACKET_ANNOUNCE_RESPONSE; 394 data[0] = NET_PACKET_ANNOUNCE_RESPONSE;
371 memcpy(data + 1, plain + ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES, 395 memcpy(data + 1, plain + ONION_PING_ID_SIZE + crypto_box_PUBLICKEYBYTES + crypto_box_PUBLICKEYBYTES,
@@ -374,8 +398,9 @@ static int handle_announce_request(void *object, IP_Port source, const uint8_t *
374 398
375 if (send_onion_response(onion_a->net, source, data, 399 if (send_onion_response(onion_a->net, source, data,
376 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + crypto_box_NONCEBYTES + len, 400 1 + ONION_ANNOUNCE_SENDBACK_DATA_LENGTH + crypto_box_NONCEBYTES + len,
377 packet + (ANNOUNCE_REQUEST_SIZE_RECV - ONION_RETURN_3)) == -1) 401 packet + (ANNOUNCE_REQUEST_SIZE_RECV - ONION_RETURN_3)) == -1) {
378 return 1; 402 return 1;
403 }
379 404
380 return 0; 405 return 0;
381} 406}
@@ -384,37 +409,43 @@ static int handle_data_request(void *object, IP_Port source, const uint8_t *pack
384{ 409{
385 Onion_Announce *onion_a = object; 410 Onion_Announce *onion_a = object;
386 411
387 if (length <= DATA_REQUEST_MIN_SIZE_RECV) 412 if (length <= DATA_REQUEST_MIN_SIZE_RECV) {
388 return 1; 413 return 1;
414 }
389 415
390 if (length > ONION_MAX_PACKET_SIZE) 416 if (length > ONION_MAX_PACKET_SIZE) {
391 return 1; 417 return 1;
418 }
392 419
393 int index = in_entries(onion_a, packet + 1); 420 int index = in_entries(onion_a, packet + 1);
394 421
395 if (index == -1) 422 if (index == -1) {
396 return 1; 423 return 1;
424 }
397 425
398 uint8_t data[length - (crypto_box_PUBLICKEYBYTES + ONION_RETURN_3)]; 426 uint8_t data[length - (crypto_box_PUBLICKEYBYTES + ONION_RETURN_3)];
399 data[0] = NET_PACKET_ONION_DATA_RESPONSE; 427 data[0] = NET_PACKET_ONION_DATA_RESPONSE;
400 memcpy(data + 1, packet + 1 + crypto_box_PUBLICKEYBYTES, length - (1 + crypto_box_PUBLICKEYBYTES + ONION_RETURN_3)); 428 memcpy(data + 1, packet + 1 + crypto_box_PUBLICKEYBYTES, length - (1 + crypto_box_PUBLICKEYBYTES + ONION_RETURN_3));
401 429
402 if (send_onion_response(onion_a->net, onion_a->entries[index].ret_ip_port, data, sizeof(data), 430 if (send_onion_response(onion_a->net, onion_a->entries[index].ret_ip_port, data, sizeof(data),
403 onion_a->entries[index].ret) == -1) 431 onion_a->entries[index].ret) == -1) {
404 return 1; 432 return 1;
433 }
405 434
406 return 0; 435 return 0;
407} 436}
408 437
409Onion_Announce *new_onion_announce(DHT *dht) 438Onion_Announce *new_onion_announce(DHT *dht)
410{ 439{
411 if (dht == NULL) 440 if (dht == NULL) {
412 return NULL; 441 return NULL;
442 }
413 443
414 Onion_Announce *onion_a = calloc(1, sizeof(Onion_Announce)); 444 Onion_Announce *onion_a = calloc(1, sizeof(Onion_Announce));
415 445
416 if (onion_a == NULL) 446 if (onion_a == NULL) {
417 return NULL; 447 return NULL;
448 }
418 449
419 onion_a->dht = dht; 450 onion_a->dht = dht;
420 onion_a->net = dht->net; 451 onion_a->net = dht->net;
@@ -428,8 +459,9 @@ Onion_Announce *new_onion_announce(DHT *dht)
428 459
429void kill_onion_announce(Onion_Announce *onion_a) 460void kill_onion_announce(Onion_Announce *onion_a)
430{ 461{
431 if (onion_a == NULL) 462 if (onion_a == NULL) {
432 return; 463 return;
464 }
433 465
434 networking_registerhandler(onion_a->net, NET_PACKET_ANNOUNCE_REQUEST, NULL, NULL); 466 networking_registerhandler(onion_a->net, NET_PACKET_ANNOUNCE_REQUEST, NULL, NULL);
435 networking_registerhandler(onion_a->net, NET_PACKET_ONION_DATA_REQUEST, NULL, NULL); 467 networking_registerhandler(onion_a->net, NET_PACKET_ONION_DATA_REQUEST, NULL, NULL);