Commit Graph

4908 Commits

Author SHA1 Message Date
iphydf 727982d2f9 fix: Fix bootstrap on emscripten/wasm.
Also added a whole bunch of logging that I needed while debugging the
issue. The solution in the end is that bootstrap needs to resolve IPs,
and getaddrinfo fails in the browser. Most of the time we bootstrap
against IPs anyway, so trying to parse as IP address first will shortcut
that.
2022-02-01 21:00:09 +00:00
jfreegman da4ef6481e Add some toxav bounds/sanity checks 2022-01-31 14:46:08 -05:00
jfreegman 95d0f5ccbe Use latest toktok-stack msan version 2022-01-31 14:32:50 -05:00
iphydf 2e7c5b4b24 chore: Use latest instead of versioned toktok-stack image. 2022-01-30 19:15:30 +00:00
iphydf b6f48b3b7d chore: Rename bazel-release to -opt and -debug to -dbg. 2022-01-29 22:21:13 +00:00
jfreegman 52c31efb97 Small refactor of DHT getnodes function 2022-01-29 16:52:25 -05:00
jfreegman 3f4ea3d5fd Remove brackets from ip_ntoa ipv6 formatting
The brackets serve no purpose and make us do extra string
parsing when using the output for other things

Also removed a useless call to ip_ntoa in LAN_discovery.c
2022-01-29 15:29:14 -05:00
iphydf 2b783c4170 chore: Don't run sonar scan on pull requests.
This reverts commit e3d20afc6a.

It doesn't work.
2022-01-29 16:29:50 +00:00
jfreegman 791fd01349 Make some non-const pointers const 2022-01-29 11:14:56 -05:00
jfreegman 8c3bd7fc35 Fix some unintentional integer down-casts
None of these currently cause any bugs from what I
can see, but they're still incorrect.
2022-01-28 09:57:17 -05:00
Robin Linden 2cfa872818 Add a Bazel Buildifier CI job 2022-01-28 00:55:07 +01:00
Maxim Biro b2ea0e5c76 Add programs for creating savedata & bootstrap keys 2022-01-27 16:31:07 -05:00
jfreegman d2f98b83c2 Fix some minor issues with autotests
- Do null check on autotox pointer for all public functions
- Reverse argument order: autotoxes -> count instead of opposite
2022-01-26 10:27:41 -05:00
zugz (tox) 1157e4e68c Separate run_auto_tests into a library 2022-01-25 14:25:36 -05:00
Tha14 5a88159b8f Pass "b" for fopen to fix bugs on windows 2022-01-24 16:00:01 +02:00
jfreegman ade11eb35d Fix group av memory leak
Introduced in 762a601
2022-01-22 14:52:05 -05:00
jfreegman 10d59d610b Refactor autotest live network bootstrapping
- Use one node list and public bootstrap function for all autotests
- Use ifdefs for testnet/mainnet nodes
- Replace a few broken nodes with working ones
2022-01-22 11:24:28 -05:00
jfreegman 762a6017f9 Refactor group audio packet data handling
We now malloc and free the data field separately. This increases
readability of the code and gets rid of static analyzer false
positives.
2022-01-17 19:01:51 -05:00
iphydf 7f94e411a9 chore: Add cpplint to the CI. 2022-01-17 23:42:38 +00:00
iphydf e3d20afc6a chore: Run sonar scan on pull requests. 2022-01-17 23:23:14 +00:00
jfreegman fc18810ba8 Fix buffer overwrite in bootstrap config 2022-01-17 17:56:47 -05:00
iphydf fdadcb0a90 chore: Add a make_single_file script, used for CI.
This will also be used for static analysers that can't deal with multiple
source files.
2022-01-17 21:12:25 +00:00
jfreegman c5c8aeeefe Replace magic numbers with appropriately named constants 2022-01-17 13:55:56 -05:00
iphydf 9dfad80017 cleanup: Remove our only use of flexible array members in toxcore.
We still have them in toxav. That will need to be cleaned up later.
Flexible array members have very limited usefulness. In this particular
case, it's almost entirely useless. It confuses static analysers and is
yet one more C feature we need to understand and support. It is also the
only reason we need special support in tokstyle for calloc with a `+`
operator in the member size.
2022-01-17 18:37:16 +00:00
iphydf 5fbcbb6c83 cleanup: Remove uses of strcpy and sprintf.
Use of `strcpy` in these particular cases was safe, but it's hard to
tell and also useless. `strcpy` would effectively need to do another
`strlen` which we already did.

Also removed sprintf, which was also safe in this case but it's easier to
be "obviously safe", especially for static analysers.
2022-01-17 18:25:40 +00:00
iphydf 2856943531 chore: Expose public API headers as files in bazel.
They were already exposed as `cc_library`, but we need to make the files
as text available so that binding generators can access them.
2022-01-17 01:03:47 +00:00
iphydf 4ce02c0af9 refactor: Deduplicate a bunch of code in TCP client/server.
Also generally a bit of cleanup and better layering.
2022-01-16 09:41:08 +00:00
iphydf 044ae636a3 chore: Mark unsafe code as testonly.
We want to ensure that nobody links against testing code in production.
2022-01-16 09:10:53 +00:00
iphydf f52bc798c8 cleanup: Split large switch statement into functions. 2022-01-16 02:45:24 +00:00
iphydf f7557b4c16 cleanup: Even more pointer-to-const parameters.
I missed these the first time around.
2022-01-16 02:35:08 +00:00
iphydf c7ecee7c15 cleanup: Remove old check Suite compat layer.
This doesn't do anything useful for us. It was there so we don't need to
rewrite the tests (which I just did). Finally this is now cleaned up.
2022-01-16 01:37:37 +00:00
iphydf 422c8d1125 cleanup: Make parameters pointers-to-const where possible. 2022-01-16 01:28:25 +00:00
iphydf 09bb9b8a23 cleanup: Make Networking_Core pointer-to-const where possible. 2022-01-16 01:09:44 +00:00
iphydf c081a50201 cleanup: Use pointer cast instead of memcpy in qsort callback.
No need to make copies of the data. There is no concurrency in qsort.
2022-01-16 00:12:44 +00:00
iphydf 0d27eb2f90 cleanup: Deduplicate a somewhat complex loop in DHT.c. 2022-01-15 21:25:14 +00:00
iphydf 2671095f4a cleanup: Merge crypto_core and crypto_core_mem.
The remaining memory functions are small and don't need their own file.
2022-01-15 01:34:14 +00:00
iphydf 6823fcbae1 cleanup: Stop using strerror directly.
We have a more portable wrapper that is now also thread-safe. Also
stopped using sprintf in the one place we used it. This doesn't really
help much, but it allows us to forbid sprintf globally.
2022-01-15 01:25:56 +00:00
iphydf fdacd81524 cleanup: Remove our only use of sprintf.
Replaced with snprintf.
2022-01-15 00:52:51 +00:00
iphydf 8d19757f8e chore: Add mypy Python type check.
Also fix the types in all Python files.
2022-01-14 19:55:37 +00:00
jfreegman 62cbd5f667 Add a couple more bootstrap nodes to autotests
A little more redundancy can save a lot of pain debugging non-existent
problems
2022-01-14 14:40:14 -05:00
iphydf c81038c963 chore: Add sonar-scan analysis on pushes.
We can't run this on pull requests because it needs access to the
`SONAR_TOKEN` secret. Perhaps in the future we can make it a
`pull_request_target` workflow, but then we can't use cmake to initialise
the environment, meaning we need to specify the inputs manually.
2022-01-14 12:38:35 +00:00
iphydf d23222c92f chore: Run static analysers in multiple variants.
Currently: 1) libsodium and 2) nacl.

Note that the "nacl" variant is actually libsodium. We just want to make
sure the static analysers see the `VANILLA_NACL` code paths.
2022-01-14 10:45:11 +00:00
jfreegman dfa7a0183f Refactor toxav_call_control
Control logic is now placed in control-specific helper functions
instead of having one giant confusing function that does everything
2022-01-13 17:50:39 -05:00
iphydf 28b5e512a2 fix: Fix toxav_basic_test buffer overflow.
We should pass the number of samples, not the byte size of `PCM`.
2022-01-13 22:36:53 +00:00
sudden6 2073d02c33 fix: don't count filetransfer as sending until accepted
This fixes high CPU load in c-toxcore due to started but not accepted
file transfers causing lots of iterations in do_all_filetransfers(...).
Additionally this skips expensive calls max_speed_reached(...).
2022-01-13 21:41:12 +00:00
iphydf 4a2cb37e4b fix: Fix some uninitialised memory errors found by valgrind and msan.
Also added a valgrind build to run it on every pull request. I've had to
disable a few tests because valgrind makes those run infinitely slowly,
consistently timing them out.
2022-01-13 20:15:21 +00:00
iphydf 46a443f188 chore: Ignore failures from bazel-tsan and bazel-asan.
Also increased memory limits so it doesn't OOM.
2022-01-13 00:36:34 +00:00
iphydf 685b78d31d chore: Add asan/tsan bazel builds.
These have all dependencies built with asan/tsan, so they can do deeper
sanity checks such as checking what opus is doing with our buffers.

The asan check currently fails for me locally, so these are not yet set
to be required for PRs to be merged.
2022-01-12 20:33:21 +00:00
jfreegman 360acd0f42 Replace all instances of atoi with strtol
atoi doesn't check if the conversion from string to int succeeded
which doesn't allow us to do proper error handling.

We also now make sure that the port argument is a valid port
in addition to being properly converted
2022-01-12 14:08:45 -05:00
iphydf 9b7279ab24 chore: Run tokstyle with 3 cores.
This seems to be the sweet spot for the current tokstyle implementation.
4 cores gives the same speedup, 5 also, 6 makes it slower, and 2 also
makes it slower.
2022-01-12 18:52:46 +00:00