Nick Mathewson
c50537fd94
Fix a pair of remaining leaks in tortls_nss.c
...
Fun fact: PR_Close leaks memory if its socket is not valid.
2018-09-04 19:45:21 -04:00
Nick Mathewson
274efb1263
Use FREE_AND_NULL for impl types
2018-09-04 14:52:35 -04:00
Nick Mathewson
ad94d43fc5
Port test_tortls_verify to not depend on openssl internals
2018-09-04 14:52:35 -04:00
Nick Mathewson
59c1b34b72
Remove tor_tls_check_lifetime as unused.
...
Everything that might have used it, uses tor_tls_cert_is_valid() instead.
2018-09-04 14:52:35 -04:00
Nick Mathewson
7acb8c8d18
Document winsock includes better
2018-09-04 14:52:35 -04:00
Nick Mathewson
70c27b7e39
Fix documentation of initialized fields in crypto_init.c
2018-09-04 14:52:35 -04:00
Nick Mathewson
edbb5ef5b2
Make some additional RSA functions const
2018-09-04 14:52:35 -04:00
Nick Mathewson
600e046ed3
Rename crypto_pk_check_key(), use it more reasonably, add tests
...
This function was a wrapper around RSA_check_key() in openssl, which
checks for invalid RSA private keys (like those where p or q are
composite, or where d is not the inverse of e, or where n != p*q).
We don't need a function like this in NSS, since unlike OpenSSL, NSS
won't let you import a bogus private key.
I've renamed the function and changed its return type to make it
more reasonable, and added a unit test for trying to read a key
where n != p*q.
2018-09-04 14:52:35 -04:00
Nick Mathewson
3b5d6ef15b
Unify functions for reading/writing PEM keys, to avoid duplication.
2018-09-04 14:52:35 -04:00
Nick Mathewson
f46a7eafb8
Do not leak a reference to "slot" when decoding private key.
2018-09-04 14:52:35 -04:00
Nick Mathewson
36f3bdac03
Update prefork and postfork NSS code for unit tests.
2018-09-04 14:52:35 -04:00
Nick Mathewson
52ac539b99
Test a few more tortls.c functions
2018-09-04 14:52:35 -04:00
Nick Mathewson
7163389b55
Several unit tests to improve test coverage of x509*.c
2018-09-04 14:52:35 -04:00
Nick Mathewson
02086a216f
Remove tor_x509_get_cert_impl as unneeded.
2018-09-04 14:52:35 -04:00
Nick Mathewson
b5fddbd241
Avoid double-close on TCP sockets under NSS.
2018-09-04 14:52:35 -04:00
Nick Mathewson
52d5f4da12
Avoid spurious error logs when using NSS
...
The tls_log_errors() function now behaves differently for NSS than
it did for OpenSSL, so we need to tweak it a bit.
2018-09-04 14:52:35 -04:00
Nick Mathewson
dd04fc35c6
Remove tor_tls_shutdown()
...
This function was supposed to implement a half-duplex mode for our
TLS connections. However, nothing in Tor actually uses it (besides
some unit tests), and the implementation looks really questionable
to me. It's probably best to remove it. We can add a tested one
later if we need one in the future.
2018-09-04 14:52:35 -04:00
Nick Mathewson
5205c7fd90
Initial NSS support for TLS.
...
This is enough to get a chutney network to bootstrap, though a bunch
of work remains.
2018-09-04 14:52:35 -04:00
Nick Mathewson
3507fead10
Merge branch 'tor_api_owning_control'
2018-09-04 11:04:21 -04:00
cypherpunks
d32b08af6f
string: add string_is_utf8() helper
...
Ticket #27373 .
2018-09-03 13:54:43 +00:00
rl1987
01eb164574
Reject addresses with needless trailing colon
2018-08-31 19:34:14 +03:00
rl1987
23ed863da4
Improve bracket handling in tor_addr_parse()
...
* Actually check for second bracket
* Only attempt parsing IPv4 address when no brackets found
2018-08-31 18:55:36 +03:00
Mike Perry
93ff8b411a
Merge branch 'ticket25573-034' into ticket25573-master
2018-08-29 17:10:06 +00:00
Nick Mathewson
219f6ea516
Fix log.c comments about assert vs tor_assert vs raw_assert.
2018-08-28 15:58:16 -04:00
Nick Mathewson
c567b8fcb4
NSS support for x509 certs
...
7 unit tests are failing at this point, but they're all TLS-related.
2018-08-22 16:11:45 -04:00
Nick Mathewson
7c5339677f
Log error strings in crypto_nss_log_errors().
...
I'll need this for debugging.
2018-08-22 12:36:25 -04:00
Nick Mathewson
de66bd397c
Merge branch 'maint-0.3.4'
2018-08-21 19:20:37 -04:00
Nick Mathewson
5245a296c5
Make some x509 functions generic; remove some fields NSS doesn't need
2018-08-21 12:25:33 -04:00
Nick Mathewson
b9ca8f2356
Extract internal-only parts of x509.h
2018-08-21 12:25:33 -04:00
Nick Mathewson
108d9879eb
Extract the non-generic part of tor_tls_context_decref().
2018-08-21 12:25:33 -04:00
Nick Mathewson
96f8e19802
Implement PBKDF2 with NSS.
...
This was a gap that we left in the last commit.
2018-08-21 12:25:33 -04:00
Nick Mathewson
6a88d8f6b4
When enabling NSS, disable OpenSSL.
...
We used to link both libraries at once, but now that I'm working on
TLS, there's nothing left to keep OpenSSL around for when NSS is
enabled.
Note that this patch causes a couple of places that still assumed
OpenSSL to be disabled when NSS is enabled
- tor-gencert
- pbkdf2
2018-08-21 12:25:33 -04:00
Nick Mathewson
1992c76130
Split tls modules and their tests into openssl and generic.
...
Also, add a stubbed-out nss version of the modules. The tests won't
pass with NSS yet since the NSS modules don't do anything.
This is a good patch to read with --color-moved.
2018-08-21 12:25:33 -04:00
Nick Mathewson
91c1e88b7a
Refactor some of the certificate-manipulation logic
2018-08-21 12:25:33 -04:00
Nick Mathewson
598bc78bfa
Extract tortls structures into a new header; clean up a little
2018-08-21 12:25:33 -04:00
Nick Mathewson
9a4f05b05c
Split X509 code out of tortls.c
2018-08-21 12:25:33 -04:00
Nick Mathewson
aa45511250
Implement RSA for NSS.
2018-08-21 12:24:08 -04:00
Nick Mathewson
b94e7de7db
Refactor crypto_rsa to use pem module.
...
This cleans up a lot of junk from crypto_rsa_openssl, and will
save us duplicated code in crypto_rsa_nss (when it exists).
(Actually, it already exists, but I am going to use git rebase so
that this commit precedes the creation of crypto_rsa_nss.)
2018-08-21 12:24:08 -04:00
Nick Mathewson
9566ed6fd9
Add rudimentary support for PEM-encoding, since NSS doesn't do that.
2018-08-21 12:24:08 -04:00
Nick Mathewson
0812f1cbc2
Use a constant for "65537"
2018-08-21 12:24:08 -04:00
Nick Mathewson
824009cde5
Rename openssl-bridging functions in crypto_rsa
...
These functions exist only to expose RSA keys to other places in Tor
that use OpenSSL; let's be specific about their purpose.
2018-08-21 12:24:08 -04:00
Nick Mathewson
38212d2e40
Remove a redundant function.
2018-08-21 12:24:08 -04:00
Nick Mathewson
0f971d7c91
Rename functions that encode/decode private keys
...
It is not nice to expose a private key's contents without having the
function name advertise the fact. Fortunately, we weren't misusing
these yet.
2018-08-21 12:24:08 -04:00
Nick Mathewson
752ffa2197
Extract openssl RSA functionality into its own file.
2018-08-21 12:24:08 -04:00
rl1987
5ab2110eb6
Rework predicted_ports_prediction_time_remaining() to fix CID 1438153
2018-08-19 21:03:01 +03:00
Unto Sten
ba3c785092
Inform users about configuration file and directory includes
...
This patch makes it clearer to users what settings Tor daemon
is actually using. I think it is pretty important.
2018-08-17 14:08:59 +03:00
Nick Mathewson
e56f0c9d33
Adjust windows stubs for new start/finish_daemon() return types
2018-08-14 16:44:59 -04:00
Nick Mathewson
a57c27a1c7
Call crypto_postfork on start_daemon() instead.
2018-08-08 17:32:26 -04:00
Nick Mathewson
622a2c6bee
Make finish_daemon() return a boolean to say whether it did anything.
2018-08-08 16:59:53 -04:00
Nick Mathewson
26f1167e71
Merge branch 'bug26779_033' into bug26779_035
2018-08-08 15:50:29 -04:00
Nick Mathewson
7787150521
Merge branch 'maint-0.3.4'
2018-08-08 09:26:23 -04:00
Nick Mathewson
622a057e7e
Merge remote-tracking branch 'public/string_coverage'
2018-08-03 07:03:29 -04:00
Nick Mathewson
f83b417bf8
Suppress strict-prototypes warning in crypto_nss_mgt.c
2018-08-02 08:41:33 -04:00
Nick Mathewson
727f1676d6
Fix double-link of crypto_openssl_mgt.c
2018-08-02 08:38:59 -04:00
Nick Mathewson
b590cc0449
Add a cast to make clang happier.
2018-08-02 08:36:24 -04:00
Nick Mathewson
ff7229b32c
Document new helper functions in socketpair.c
2018-08-01 11:01:52 -04:00
Nick Mathewson
1b7b9c7e63
Reindent tor_ersatz_socketpair
2018-08-01 11:01:52 -04:00
Nick Mathewson
fc0dc5aa9e
Refactor tor_ersatz_socketpair() not to need socket.
...
This change also makes tor_ersatz_socketpair() follow the same
interface as socketpair() rather than tor_socketpair(), so it now
needs to be wrapped in the same code as socketpair() does.
2018-08-01 11:01:52 -04:00
Nick Mathewson
9b24609af0
Remove dependency from socketpair.c on address.h
...
Also refactor some annoying code in tor_ersatz_socketpair.
2018-08-01 09:24:22 -04:00
Nick Mathewson
2884639ad6
Extract tor_ersatz_socketpair into a new c file
...
I'm doing this because I want to make it a lower-level function
again, so that we can use it without linking in the rest of the
universe.
2018-08-01 08:47:27 -04:00
Nick Mathewson
a4c0a0e81e
Fix issues with crypto_ope compilation now that crypto.h is gone
2018-07-31 19:56:42 -04:00
Nick Mathewson
fdaa483098
Merge branch 'nss_dh_squashed' into nss_dh_squashed_merged
2018-07-31 19:56:23 -04:00
Nick Mathewson
17f922d371
Only link crypto_dh_openssl.c once
...
(We do this unconditionally, since we still need it for tortls.c)
2018-07-31 19:46:00 -04:00
Nick Mathewson
17ea931ac7
Implement DH in NSS.
2018-07-31 19:46:00 -04:00
Nick Mathewson
32bbc8f6b5
Refactor the dependency between tortls and crypto_dh.
...
We only ever need this to get us a DH ephemeral key object,
so make a function that does just that.
2018-07-31 19:46:00 -04:00
Nick Mathewson
ac9a470c64
Extract the shared part of crypto_dh_compute_secret.
2018-07-31 19:46:00 -04:00
Nick Mathewson
60a5b78480
Extract the OpenSSL DH functionality to a new file.
2018-07-31 19:46:00 -04:00
Nick Mathewson
2d80673b9a
Fix "make distcheck."
2018-07-31 19:46:00 -04:00
Nick Mathewson
76e10ee6b9
Use NSS for AES_CTR.
2018-07-31 19:46:00 -04:00
Nick Mathewson
60705a5719
Use NSS in crypto_rand.c
...
This is comparatively straightforward too, except for a couple of
twists:
* For as long as we're building with two crypto libraries, we
want to seed _both_ their RNGs, and use _both_ their RNGs to
improve the output of crypto_strongest_rand()
* The NSS prng will sometimes refuse to generate huge outputs.
When it does, we stretch the output with SHAKE. We only need
this for the tests.
2018-07-31 19:46:00 -04:00
Nick Mathewson
f64c9dccde
Use NSS's digest code in Tor.
...
This was a fairly straightforward port, once I realized which layer
I should be calling into.
2018-07-31 19:46:00 -04:00
teor
e26794ace9
Add TOR_PRIdSZ to torint.h
2018-07-31 11:21:28 +10:00
Nick Mathewson
acb54dee7b
Remove a now-obsolete comment about deadcode_dummy__
2018-07-30 09:09:10 -04:00
Nick Mathewson
70b16bc679
Merge branch 'ticket26890'
2018-07-30 09:08:39 -04:00
Nick Mathewson
13393b2d91
Merge remote-tracking branch 'rl1987/ticket21349_4'
2018-07-30 08:49:49 -04:00
Nick Mathewson
5823e62fa2
Merge branch 'maint-0.3.4'
2018-07-30 08:17:25 -04:00
rl1987
e6c51a056c
Make entry_guards_update_primary() shorter
2018-07-21 18:38:33 +03:00
Nick Mathewson
c515dc8d0d
Remove over-cleverness from our coverity BUG() definition.
...
Our previous definition implied that code would never keep running
if a BUG occurred (which it does), and that BUG(x) might be true
even if x was false (which it can't be).
Closes ticket 26890. Bugfix on 0.3.1.4-alpha.
2018-07-20 11:19:54 -04:00
Nick Mathewson
7253603e6b
Merge branch 'bug26712'
2018-07-19 12:20:13 -04:00
Nick Mathewson
ee12c11dd4
Increase line coverage in libtor-string to 100%
...
(On linux.)
2018-07-17 16:47:32 -04:00
Nick Mathewson
e2b744ce38
Merge branch 'bug25552_ope_squashed'
2018-07-17 16:19:32 -04:00
George Kadianakis
0140052a35
Make the OPE scheme return CRYPTO_OPE_ERROR on error.
...
Instead of UINT64_MAX.
2018-07-17 15:57:46 -04:00
George Kadianakis
34a5eb5904
Increase OPE_INPUT_MAX.
2018-07-17 15:57:46 -04:00
Nick Mathewson
3a45f6ffe9
Implementation for a simple order-preserving encryption scheme.
...
This is meant for use when encrypting the current time within the
period in order to get a monotonically increasing revision counter
without actually revealing our view of the time.
This scheme is far from the most state-of-the-art: don't use it for
anything else without careful analysis by somebody much smarter than
I am.
See ticket #25552 for some rationale for this logic.
2018-07-17 15:57:46 -04:00
Nick Mathewson
d811ce2421
Add postfork support for nss
...
We need this in our unit tests, since otherwise NSS will notice
we've forked and start cussing us out.
I suspect we'll need a different hack for daemonizing, but this
should be enough for tinytest to work.
2018-07-13 12:35:22 -04:00
Nick Mathewson
c317e78dd7
Initialize and shut down NSS.
...
This is largely conjectural, based on online documentation for NSS
and NSPR.
2018-07-13 12:35:22 -04:00
Nick Mathewson
f45107e7de
Rename crypto.c to crypto_cipher.c (since that's all it still has.)
2018-07-11 14:12:36 -04:00
Nick Mathewson
9010797e63
Remove most includes from crypto.c
2018-07-11 14:02:23 -04:00
Nick Mathewson
922208bd2d
Extract and rename crypto_log_errors().
2018-07-11 13:54:47 -04:00
Nick Mathewson
8e2df98860
Move crypto_add_spaces_to_fp() to crypto_rsa.c
2018-07-11 13:51:26 -04:00
Nick Mathewson
12a1ada158
Move the initialization and cleanup parts of crypto.c
...
These are now part of crypto_init.c. The openssl-only parts now
live in crypto_openssl_mgt.c.
I recommend reviewing this patch with -b and --color-moved.
2018-07-11 13:45:49 -04:00
Nick Mathewson
79267bad65
Add a configure switch to build with NSS.
...
When it is set, include the NSS headers and libraries as
appropriate. Doesn't actually use them yet, though.
2018-07-11 13:22:20 -04:00
Nick Mathewson
2b52360448
Only use OpenSSL kdf support if it is present.
...
We have to check for ERR_load_KDF_strings() here, since that's the
only one that's actually a function rather than a macro.
Fixes compilation with LibreSSL. Fixes bug 26712; bug not in
any released Tor.
2018-07-11 10:19:06 -04:00
Nick Mathewson
5aee26ee46
Move all use cases of micro-revision.i to a single place
...
That place is git-revision.c; git-revision.c now lives in lib/log.
Also fix the compilation rules so that all object files that need
micro-revision.i depend on it.
2018-07-11 09:52:39 -04:00
Nick Mathewson
537092cdbb
Merge branch 'ticket26223'
2018-07-10 20:18:28 -04:00
Nick Mathewson
c90961a923
Document compat_getdelim_.
2018-07-10 20:18:20 -04:00
Nick Mathewson
b6d0e7caa4
Rename tm_cvt to time_to_tm
2018-07-10 15:25:53 -04:00
Nick Mathewson
e7f5f48d68
Rename torlog.[ch] to log.[ch]
...
Fun fact: these files used to be called log.[ch] until we ran into
conflicts with systems having a log.h file. But now that we always
include "lib/log/log.h", we should be fine.
2018-07-10 15:20:30 -04:00
Nick Mathewson
41640b6573
Rename util_malloc to malloc.
2018-07-10 15:16:57 -04:00
Nick Mathewson
6711a172c0
Merge remote-tracking branch 'neel/fbsd-cfix'
2018-07-10 14:50:49 -04:00
Nick Mathewson
8de48c111c
Remove addr_port_lookup.
...
This lets us cut the dependency from address.c to resolve.c: the
address.c module now has no paths to the libc resolver in it.
2018-07-10 13:32:37 -04:00
Nick Mathewson
2f657a1416
Remove all users of addr_port_lookup outside of address.c
...
This function has a nasty API, since whether or not it invokes the
resolver depends on whether one of its arguments is NULL. That's a
good way for accidents to happen.
This patch incidentally makes tor-resolve support socks hosts on
IPv6.
2018-07-10 13:23:37 -04:00
Nick Mathewson
c2ddb7b231
Move tor_addr_{,port_}lookup to resolve.c
2018-07-10 13:00:02 -04:00
Nick Mathewson
5d8336c182
Refactor ipv[46].[ch]
...
These are now combined into an inaddr.[ch], since their purpose is
to implement functions for struct in_addr and struct in6_addr.
The definitions for in6_addr and its allies are now in a separate
header, inaddr_st.h.
Closes ticket 26532.
2018-07-10 12:50:38 -04:00
Neel Chauhan
6d58c20d94
Fix build on FreeBSD post-refactor
2018-07-10 12:32:14 -04:00
Nick Mathewson
4f42c923d6
File-level summary documentation for src/lib/*/*.[ch]
2018-07-10 12:22:01 -04:00
Nick Mathewson
b04d719c10
Integrate getdelim() and getline() support into Tor.
2018-07-10 10:36:49 -04:00
Nick Mathewson
19f2057d49
Fix some lingering windows compilation issues from Jenkins.
...
These were caused by the recent refactoring.
2018-07-09 12:54:40 -04:00
Nick Mathewson
eb856a3e51
strcasecmp should not take a size_t argument
2018-07-09 11:17:23 -04:00
Nick Mathewson
03283c00d8
Merge remote-tracking branch 'rl1987/bug26525'
2018-07-09 09:31:12 -04:00
Nick Mathewson
b8554dd880
Make Tor compile with --disable-memory-sentinels again
2018-07-09 08:44:16 -04:00
Nick Mathewson
753b797ca4
Fix up .may_includes for evloop.
2018-07-05 15:50:20 -04:00
Nick Mathewson
2d69c32bb6
Clean up include paths for libtor-evloop (automated)
2018-07-05 15:22:17 -04:00
Nick Mathewson
1e417b7275
All remaining files in src/common belong to the event loop.
2018-07-05 15:22:17 -04:00
Nick Mathewson
947de40d19
Move openbsd-malloc responsibility to lib/malloc
...
(Note that this is not believed to work, but we may as well have it
in the right place till we remove it)
2018-07-05 15:07:08 -04:00
Nick Mathewson
24c0f83185
Move socks5_status.h to src/lib/net
...
There might be a better place for it in the long run, but this is
the best I can think of for now.
2018-07-05 14:48:29 -04:00
Nick Mathewson
0e4b1781f4
Move handles.h to src/lib/container
...
There might be a better place for it in the long run, but this is
the best we can think of for now.
2018-07-05 14:45:34 -04:00
Nick Mathewson
3d610363ef
Include compat_string.h in smartlist.c
...
We need this for strcasecmp on (some) Windows build environments.
Fix from Gisle Vanem.
2018-07-05 13:53:17 -04:00
Nick Mathewson
fecb8214d5
Try to use stricmp variants that MSDN actually recommends
...
Per recommendation by Gisle Vanem
2018-07-05 13:51:50 -04:00
Nick Mathewson
df98582851
Merge remote-tracking branch 'github/ticket26626'
2018-07-03 12:52:43 -04:00
Nick Mathewson
fe8f774820
Merge branch 'bug26522'
2018-07-03 11:34:36 -04:00
rl1987
d0525c38d6
Refrain from potentially insecure usage of strncat()
2018-07-03 11:34:14 -04:00
Nick Mathewson
77e678c20d
Merge remote-tracking branch 'github/shrink_or_h_more'
2018-07-03 11:09:54 -04:00
Nick Mathewson
02a4442524
Fix up some windows compilation issues.
...
These were mostly cases where our previous macros had been casting,
and the values that we were trying to printf were not in fact
uint64_t.
2018-07-03 11:00:18 -04:00
Nick Mathewson
d5a3bb960d
Retire U64_TO_DBL and DBL_TO_U64
...
These were necessary long ago to work around a bug in VC6.
2018-07-03 10:45:43 -04:00
Nick Mathewson
9568c0ce3d
Return U64_PRINTF_ARG and U64_FORMAT
...
The standard is printf("%"PRIu64, x);
2018-07-03 10:40:59 -04:00
Nick Mathewson
52884f56d4
Replace U64_LITERAL with the standard UINT64_C
2018-07-03 10:33:50 -04:00
Nick Mathewson
cf0b07c2e5
Retire some unused (or nearly unused) macros.
2018-07-03 10:31:19 -04:00
Nick Mathewson
4638be5312
Use the standard SHRT_MAX name.
2018-07-03 10:28:10 -04:00
Nick Mathewson
e2a94dc481
Require stdint.h and inttypes.h
...
We've been silently requiring stdint.h for a while now, and nobody
has complained. Closes ticket 26626.
2018-07-03 10:25:31 -04:00
rl1987
439b528f25
Rename sandbox_getaddrinfo() et. al.
2018-07-03 15:53:39 +03:00
rl1987
fedb3e46ec
Remove ATTR_NONNULL macro
2018-07-03 12:33:09 +03:00
Nick Mathewson
c8ccd028a7
Don't redefine str(n)casecmp on windows unless they're missing
...
When we do redefine them, use inline functions instead of #define.
This fixes a latent code problem in our redefinition of these
functions, which was exposed by our refactoring: Previously, we
would #define strcasecmp after string.h was included, so nothing bad
would happen. But when we refactored, we would sometimes #define it
first, which was a problem on mingw, whose headers contain
(approximately):
inline int strcasecmp (const char *a, const char *b)
{ return _stricmp(a,b); }
Our define turned this into:
inline int _stricmp(const char *a, const char *b)
{ return _stricmp(a,b); }
And GCC would correctly infer that this function would loop forever,
rather than actually comparing anything. This caused bug 26594.
Fixes bug 26594; bug not in any released version of Tor.
2018-07-02 11:50:17 -04:00
Nick Mathewson
cb1a3674eb
File-level documentation for some of src/lib.
2018-07-01 20:22:55 -04:00
Nick Mathewson
83a4946e7b
Prune the .may_include files a bit; detect unused lines in them
2018-07-01 18:14:28 -04:00
Nick Mathewson
1743dac078
Minimize headers that include crypto_formats and x25519 stuff
2018-07-01 15:20:37 -04:00
Nick Mathewson
471104eaa5
Remove needless includes from or.h
...
or.h should really include only the minimum of stuff from or/*,
common/*, and lib/*.
2018-07-01 15:20:37 -04:00
Nick Mathewson
7a61a92870
Combine DH_BYTES and DH_KEY_LEN; put them in a lib/defs header.
2018-07-01 11:25:29 -04:00
Nick Mathewson
43dc92441d
Tabify all of the .am files.
2018-07-01 09:37:28 -04:00
Nick Mathewson
5921b23e15
add an include to fix macos, and probably bsd too
2018-06-29 14:03:13 -04:00
Nick Mathewson
714788b195
Remove non-windows system includes from compat.h and util.h
2018-06-29 12:21:52 -04:00
Nick Mathewson
080069c7b3
Move SIO_IDEAL_SEND_BACKLOG_QUERY into socket.h
2018-06-29 12:21:52 -04:00
Nick Mathewson
b21108f839
Remove an errant (and unused) include permission in lib/tls
2018-06-29 12:21:52 -04:00
Nick Mathewson
4e11c2ca6c
Extract getpass to a new lib/term library
...
(Term is short for terminal)
2018-06-29 12:21:52 -04:00
Nick Mathewson
e0957022bd
Extract get_uname to lib/osinfo.
2018-06-29 12:21:52 -04:00
Nick Mathewson
207fc4cffe
Move SUBTYPE_P into compat_compiler.h
2018-06-29 12:21:52 -04:00
Nick Mathewson
77bc65bbc4
Move bool_eq and bool_neq to lib/intmath
2018-06-29 12:21:52 -04:00
Nick Mathewson
0362cdc169
Move fd and memory-info functions.
2018-06-29 12:21:52 -04:00
Nick Mathewson
973afcc40b
Move tor_get_avail_disk_space() to lib/fs
2018-06-29 09:43:00 -04:00
Nick Mathewson
f0319fcbde
Merge remote-tracking branch 'catalyst-github/fix-macos-includes'
2018-06-28 18:19:53 -04:00
Taylor Yu
f9e22c68a0
Fix macOS includes
...
Recent code movement from refactoring missed some includes that seem
to be necessary on macOS.
2018-06-28 17:15:53 -05:00
Nick Mathewson
365179cd16
Fix a bogus n in a comment
2018-06-28 17:21:15 -04:00
Nick Mathewson
c84ab36eff
A couple of includes to make windows compile again
2018-06-28 16:37:59 -04:00
Nick Mathewson
d8b34e0886
Move buffers into container
...
Split the network-only and compression-only parts of buffers into
the appropriate modules.
2018-06-28 16:28:08 -04:00
Nick Mathewson
be40ad51b6
Add sys/capability.h and sys/prctl.h includes in setuid.c
2018-06-28 15:34:51 -04:00
Nick Mathewson
b67754cd64
compat_threads.c needs string.h for memset.
2018-06-28 15:20:26 -04:00
Nick Mathewson
a742a826f6
Remove all include common/ uses in crypto_ops and tls.
2018-06-28 14:40:25 -04:00
Nick Mathewson
0f02d2c041
Fix windows compilation in compat_time
...
We need to use lib/fs/winlib.h here so that we can use
GetTickCount64.
I would love to declare that XP is dead, and everybody has
GetTickCount64.
2018-06-28 13:40:21 -04:00
Nick Mathewson
7d7af19f1b
Use tor_ntohs in compress.c; avoid a winsocks dependency
2018-06-28 13:39:49 -04:00
Nick Mathewson
326c473b79
fixup! Extract time functionality into lib/wallclock and lib/time
2018-06-28 13:39:09 -04:00
Nick Mathewson
02bb701bba
Move DLL support to lib/fs
2018-06-28 13:37:51 -04:00
Nick Mathewson
8fc15e4861
Add ntohs and htons to lib/arch/bytes.h
2018-06-28 13:26:27 -04:00
Nick Mathewson
4dda026f0d
Update lib/compress to not require common/*.h
2018-06-28 13:19:58 -04:00
Nick Mathewson
3d1e99d01b
Move MIN and MAX into lib/intmath/cmp.h
2018-06-28 13:19:42 -04:00
Nick Mathewson
a097ddb4f5
Extract time functionality into lib/wallclock and lib/time
2018-06-28 13:01:54 -04:00
Nick Mathewson
bdea94a665
Move floating-point math functions into a new lib/math
2018-06-28 12:24:45 -04:00
Nick Mathewson
6178a9f758
Move compute_num_cpus to lib/thread
2018-06-28 12:08:18 -04:00
Nick Mathewson
042df08693
Move network_init to lib/net
2018-06-28 11:59:16 -04:00
Nick Mathewson
db1a420c4e
Move tor_gethostname to lib/net
2018-06-28 11:57:01 -04:00
Nick Mathewson
30166261bb
Move string_is_key_value to lib/encoding
2018-06-28 11:46:32 -04:00
Nick Mathewson
48ebd9bf76
Move weakrng into lib/intmath
2018-06-28 11:39:49 -04:00
Nick Mathewson
aa3edfd205
Move lockfile code into lib/fs
2018-06-28 11:33:50 -04:00
Nick Mathewson
84b8dfe635
Move socket-errno code into lib/net
2018-06-28 11:20:31 -04:00
Nick Mathewson
315e6b59dd
Extract process-management functionality into a new lib/process
...
Note that procmon does *not* go here, since procmon needs to
integrate with the event loop.
2018-06-28 11:18:13 -04:00
Nick Mathewson
a1f3ece16d
Move conffile and storagedir to lib/fs
2018-06-28 09:38:17 -04:00
Nick Mathewson
eee86e627b
Extract memarea into its own library
2018-06-28 09:25:18 -04:00
Nick Mathewson
9cf335c9a5
Extract threading code into a new library.
...
Note that the workqueue code does *not* go here: it is logically at
a higher level, since it needs to use libevent and the networking
stack.
2018-06-28 09:14:42 -04:00
Nick Mathewson
544ab27a94
Extract the alert-socket code into lib/net.
...
This code was in compat_threads, since it was _used_ for efficiently
notifying the main libevent thread from another thread. But in
spite of its usage, it's fundamentally a part of the network code.
2018-06-28 08:49:07 -04:00
Nick Mathewson
b9b44bf000
Move confline.c to lib/encoding: it is about encoding key-value pairs
...
Also, move "unescape_string()" to encoding too, since it's about
encoding data as C strings.
2018-06-27 16:59:56 -04:00
Nick Mathewson
0a9d8dcf2b
Move hex_str to binascii.c
2018-06-27 16:59:56 -04:00
Nick Mathewson
194a34cdc2
Extract time encoding functions into lib/encoding
2018-06-27 16:59:56 -04:00
Nick Mathewson
235ddb15a0
Move util_format into a new libtor-encoding library
...
libtor-encoding is about various ways to transform data to and from
character sequences.
2018-06-27 16:18:42 -04:00
Nick Mathewson
3cff3e825a
Move several address-string-testing functions to address.c
2018-06-27 16:18:42 -04:00
Nick Mathewson
e165c9c304
Move various mem* functions to lib/string
2018-06-27 16:18:42 -04:00
Nick Mathewson
9e592d1dec
Move tor_strtok_r to libtor-string
2018-06-27 15:28:55 -04:00
Nick Mathewson
4d81f5211b
Move set/get_uint*() to inline functions in arch/bytes.h
...
Also move our ntohll/htonll functions.
2018-06-27 15:28:44 -04:00
Nick Mathewson
000de2f2ac
Merge branch 'fs_refactor'
2018-06-27 14:45:17 -04:00
Nick Mathewson
2113603718
Merge branch 'sandbox_refactor'
2018-06-27 14:45:14 -04:00
Nick Mathewson
b9b05e437d
Merge branch 'net_refactor'
2018-06-27 12:52:31 -04:00
Nick Mathewson
300e3bebd1
Merge branch 'ticket26494'
2018-06-27 12:47:08 -04:00
Nick Mathewson
3d606dddb9
fixup! Move format_win32_error into lib/log/
2018-06-27 12:35:48 -04:00
Nick Mathewson
1e2e0f7e46
Extract functions from compat.c and util.h into a new fs library
2018-06-27 12:30:11 -04:00
Nick Mathewson
3246c114a2
Move format_win32_error into lib/log/
2018-06-27 12:30:11 -04:00
Nick Mathewson
356f59b1bd
Move read/write_all_to_socket into lib/net.
2018-06-27 12:01:11 -04:00
Nick Mathewson
67135ca8e0
Split read_all and write_all into separate functions
2018-06-27 10:47:42 -04:00
Nick Mathewson
05040a9e84
Minimize and permit sandbox includes from crypto_ops.
2018-06-27 10:12:39 -04:00
Nick Mathewson
ad24ccd472
Minimize includes from sandbox.c
2018-06-27 10:11:27 -04:00
Nick Mathewson
55b7939367
Fix up include paths for sandbox.h (automated)
2018-06-27 10:04:41 -04:00
Nick Mathewson
bee580ddba
Move sandbox code into a new library.
2018-06-27 10:04:17 -04:00
Nick Mathewson
3930416dec
Link GetAdaptersAddresses, rather than loading it on-demand.
...
This function has been present since Windows XP.
2018-06-27 09:12:57 -04:00
Nick Mathewson
42b3caa6ad
Move network code to libtor-net.
...
There are some additional changes to come: those points are marked
by XXXX.
2018-06-27 09:08:35 -04:00
Nick Mathewson
80730c45e0
Move tor_parse_long and friends into parse_int.h in libtor-string
2018-06-26 21:02:29 -04:00
Nick Mathewson
7159edf909
Move the escape-for-log code into src/lib/log
...
It doesn't need anything higher-level, and everything that needs the
logs potentially needs this.
2018-06-26 20:51:17 -04:00
Nick Mathewson
ebbb0348dc
Finish renaming digestset_contains to digestset_probably_contains
...
Since bloom filters are probabilistic, it's nice to make it clear
that the "contains" operation can have false positives.
2018-06-26 13:27:50 -04:00
Nick Mathewson
bf89278c79
Refactor bloom filter logic not to be digest-specific.
...
Now the address-set code and the digest-set code share the same
backend.
Closes ticket 26510
2018-06-26 13:27:23 -04:00
Nick Mathewson
82a7343b06
fixup! Extract core part of smartlist code into its own library.
2018-06-26 12:21:35 -04:00
Nick Mathewson
d7bd8cf3b6
Use raw_assert directly in smartlist_core
...
I had previously added a "#define tor_assert raw_assert" here, to
make code movement in the previous commit more clear.
2018-06-26 12:16:04 -04:00
Nick Mathewson
b1de1e7a77
Extract core part of smartlist code into its own library.
...
The smartlist_core library now contains only the parts of smartlists
that are needed for the logging library. This resolves the
circularity between "container" and "log".
The "containers" library still uses the logging code, and has the
higher-level smartlist functions.
2018-06-26 12:13:23 -04:00
Nick Mathewson
58fc42fdce
Fix comments in lib/container/*.c
2018-06-26 11:33:53 -04:00
Nick Mathewson
92d8284a97
Merge branch 'log_dependencies'
2018-06-26 11:27:33 -04:00
Nick Mathewson
b556894ef2
Include stdio.h in torerr.c.
2018-06-25 16:52:14 -04:00
Nick Mathewson
1b93b065fc
Make an inline static so we can build with coverage enabled.
2018-06-22 14:11:37 -04:00
Nick Mathewson
405fa42e8a
Another windows include
2018-06-22 13:52:30 -04:00
Nick Mathewson
4b32446a4c
We also need torerr in tm_cvt.
2018-06-22 13:34:35 -04:00
Nick Mathewson
145665abcb
Add another include for windows, and change a log to a raw_assert
2018-06-22 13:33:48 -04:00
Nick Mathewson
76a717890e
Remove an "m" that did not belong.
2018-06-22 13:32:47 -04:00
Nick Mathewson
4118ba67db
Update the micro-revision.i dependencies, and add a stdlib.h
2018-06-22 13:25:58 -04:00
Nick Mathewson
cf66544941
Two more small changes for CI.
2018-06-22 13:10:52 -04:00
Nick Mathewson
7aecea79cb
A pair of missing includes.
2018-06-22 12:53:57 -04:00
Nick Mathewson
bcf3e546d1
Move util_bug into libtor-log
2018-06-22 11:54:38 -04:00
Nick Mathewson
7a93ce8f63
Update .gitignore and .may_include files
2018-06-22 11:46:44 -04:00
Nick Mathewson
79f73ab330
Finally extract the log library and make it build.
...
This patch:
- introduces an fdio module for low-level fd functions that don't
need to log.
- moves the responsibility for opening files outside of torlog.c,
so it won't need to call tor_open_cloexec.
2018-06-22 11:40:20 -04:00
Nick Mathewson
90a09df5ba
Extract strlcpy and strlcmp to libtor-string
2018-06-22 11:18:19 -04:00
Nick Mathewson
bfb39164ce
Extract core part of gmtime_r, localtime_r (without logging)
2018-06-22 11:17:11 -04:00
Nick Mathewson
b2d4e786b7
Remove the util_bug.h include from smartlist.h.
...
This change makes a whole bunch of things in torlog.c break, since
apparently I did not find all the fd dependencies.
2018-06-22 10:50:14 -04:00
Nick Mathewson
da4ae8a6b6
Automated fixup of include paths after torlog.h movement.
2018-06-22 10:32:10 -04:00
Nick Mathewson
97b15a1d7c
Extract the locking and logging code
...
The locking code gets its own module, since it's more fundamental
than the higher-level locking code.
Extracting the logging code was the whole point here. :)
2018-06-22 10:31:51 -04:00
Nick Mathewson
2cf033f238
Extract simple integer math into its own module
2018-06-22 09:49:13 -04:00
Nick Mathewson
3883338c81
Move smartlist_add_{v,}asprintf into smartlist.[ch]
...
Now that I know that "strings" nests below "container", I know this
is safe.
2018-06-22 09:49:13 -04:00
Nick Mathewson
1abadee3fd
Extract key string manipulation functions into a new library.
2018-06-22 09:49:13 -04:00
Nick Mathewson
1e07b4031e
Move ARRAY_LENGTH to compiler_compat.h
2018-06-22 09:49:13 -04:00
Nick Mathewson
9426751b72
Extract our code for answering "what time is it right now".
...
The other time stuff is higher-level
2018-06-22 09:49:13 -04:00
Nick Mathewson
d1cada5a8a
Update permissible includes
2018-06-22 09:49:13 -04:00
Nick Mathewson
c2a558a346
Expunge container.h
2018-06-22 09:49:13 -04:00
Nick Mathewson
de508c5f50
Extract smartlist.h from container.h
2018-06-22 09:49:13 -04:00
Nick Mathewson
9cf6fc91b1
Remove map from container.h
2018-06-22 09:49:13 -04:00
Nick Mathewson
50a5954003
Remove bloom filters, order statistics, and bitarrays from container.h
2018-06-22 09:49:13 -04:00
Nick Mathewson
932b4d0a43
Remove container->crypto dependency
...
Containers were using crypto_digest.h, just to see the value of
DIGEST_LEN. Moved those constants into a new defs module.
2018-06-22 09:49:13 -04:00
Nick Mathewson
479c2ab503
Move STRUCT_VAR_P to compat_compiler.
2018-06-22 09:49:13 -04:00
Nick Mathewson
657ff55408
Split container.c based on container types, and minimize includes
...
Minimizing includes revealed other places includes were necessary.
2018-06-22 09:49:13 -04:00
Nick Mathewson
b8be8265b6
Rectify include paths after container split (automatic)
2018-06-22 09:49:13 -04:00
Nick Mathewson
77dff00b18
Refactor container into a library.
2018-06-22 09:49:13 -04:00
Nick Mathewson
e066966bf4
Extract tor_malloc and friends to a new module.
2018-06-21 15:20:01 -04:00
Nick Mathewson
999f7984e1
New script to check includes for modularity violations
...
Includes configuration files to enforce these rules on lib and
common. Of course, "common" *is* a modularity violation right now,
so these rules aren't as strict as I would like them to be.
2018-06-21 14:05:33 -04:00
Nick Mathewson
3305ae5044
Rectify include paths (automated).
...
You have no idea how glad I am that this is automated.
2018-06-21 13:20:07 -04:00
Nick Mathewson
5b8f4769dc
Move testsupport.h to its own directory
2018-06-21 13:20:07 -04:00
Nick Mathewson
e9943d5459
Move responsibility for libdonna out of src/common
2018-06-21 13:19:00 -04:00
Nick Mathewson
accf239fa3
Rectify include paths (automated)
2018-06-21 13:19:00 -04:00
Nick Mathewson
25ccfff86a
Split crypto and tls libraries into directories
...
I am calling the crypto library "crypt_ops", since I want
higher-level crypto things to be separated from lower-level ones.
This library will hold only the low-level ones, once we have it
refactored.
2018-06-21 13:14:14 -04:00
Nick Mathewson
49d7c9ce53
Move more compiler-compatibility stuff into compat_compiler.h
2018-06-21 13:14:14 -04:00
Nick Mathewson
68bbe915d9
di_ops.c does not actually log anything.
2018-06-21 13:14:14 -04:00
Nick Mathewson
fa5fda5bbf
Rectify include paths (automated)
2018-06-21 13:14:14 -04:00
Nick Mathewson
cd8f919553
Move compiler-compatibility headers into their own module
...
This one has no generated code.
2018-06-21 13:14:14 -04:00
Nick Mathewson
209a285166
Rectify include paths (automated)
2018-06-21 13:14:14 -04:00
Nick Mathewson
4bdda6d05f
Move trace into its own library in libs.
...
Apparently it has no testing variant.
2018-06-21 13:14:14 -04:00
Nick Mathewson
03d7812615
Make sure liberr-testing is build with testing flags.
2018-06-21 13:14:14 -04:00
Nick Mathewson
b420da4cf8
Rectify include paths (automated)
2018-06-21 13:14:14 -04:00
Nick Mathewson
2d20cbf837
Extract compression functions into a new library.
2018-06-21 13:08:25 -04:00
Nick Mathewson
727db7aeb9
Rectify include paths (automated)
2018-06-21 11:03:39 -04:00
Nick Mathewson
a403ee6bb3
Move consttime library code into its own directory.
2018-06-21 11:03:39 -04:00
Nick Mathewson
275aff6917
Rectify include paths (automated)
2018-06-21 10:47:11 -04:00
Nick Mathewson
2cfcb7b364
Extract error functionality into a new lowest-level library.
2018-06-21 10:47:11 -04:00