summaryrefslogtreecommitdiff
path: root/src/lib
AgeCommit message (Collapse)Author
2022-03-28Merge branch 'maint-0.4.6'David Goulet
2022-03-28Merge branch 'maint-0.4.5' into maint-0.4.6David Goulet
2022-03-28Merge branch 'tor-gitlab/mr/556' into maint-0.4.5David Goulet
2022-03-27Sandbox: Permit the clone3 system callNick Mathewson
Apparently glibc-2.34 uses clone3, when previously it just used clone. Closes ticket #40590.
2022-03-16Merge branch 'tor-gitlab/mr/490'David Goulet
2022-03-15crypto: Clarifying comment for the random hostname calculationDavid Goulet
Closes #40520 Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-25Fix typosDimitris Apostolou
2022-02-09Merge branch 'tor-gitlab/mr/518'David Goulet
2022-02-08nss: Don't write empty payload on the wireDavid Goulet
Part of #40548 Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-01-23conn: add ClientHello Padding TLS extensionpseudonymisaTor
2021-11-08Merge remote-tracking branch 'tor-gitlab/mr/485' into mainAlexander Færøy
2021-11-05Prefer use of __MINGW_PRINTF/SCANF_FORMAT if available.Nick Mathewson
Mingw headers sometimes like to define alternative scanf/printf format attributes depending on whether they're using clang, UCRT, MINGW_ANSI_STDIO, or the microsoft version of printf/scanf. This change attempts to use the right one on the given platform. This is an attempt to fix part of #40355.
2021-11-05sandbox: Allow "statx" syscall on i386 for glibc 2.33Simon South
glibc versions 2.33 and newer use the modern "statx" system call in their implementations of stat() and opendir() for Linux on i386. Prevent failures in the sandbox unit tests by modifying the sandbox to allow this system call without restriction on i386 when it is available, and update the test suite to skip the "sandbox/stat_filename" test in this case as it is certain to fail.
2021-11-05sandbox: Allow "clock_gettime64" syscall where definedSimon South
On 32-bit architectures where Linux provides the "clock_gettime64" system call, including i386, glibc uses it in place of "clock_gettime". Modify the sandbox implementation to match, to prevent Tor's monotonic-time functions (in src/lib/time/compat_time.c) failing when the sandbox is active.
2021-11-05sandbox: Filter "chown32" syscall on i386Simon South
On i386 glibc uses the "chown32" system call instead of "chown". Prevent attempts to filter calls to chown() on this architecture from failing by modifying the sandbox implementation to match.
2021-10-14Merge remote-tracking branch 'tor-gitlab/mr/433' into mainAlexander Færøy
2021-10-04net: Reject invalid characters in port rangesc
Fixes issue #22469 where port strings such as '0x00' get accepted, not because the string gets converted to hex, but because the string is silently truncated past the invalid character 'x'. This also causes issues for strings such as '0x01-0x02' which look like a hex port range, but in reality gets truncated to '0', which is definitely not what a user intends. Warn and reject such port strings as invalid. Also, since we're throwing that "malformed port" warning a lot in the function, wrap it up in a nice goto. Fixes #22469
2021-09-28sandbox: Allow use with fragile hardeningSimon South
When building with --enable-fragile-hardening, add or relax Linux seccomp rules to allow AddressSanitizer to execute normally if the process terminates with the sandbox active. Further resolves issue 11477.
2021-09-09Fix compilation error when __NR_time is not defined. #40465Daniel Pinto
2021-08-11Merge branch 'maint-0.4.6' into mainAlexander Færøy
2021-08-11Merge branch 'maint-0.4.5' into maint-0.4.6Alexander Færøy
2021-08-11Merge branch 'maint-0.3.5' into maint-0.4.5Alexander Færøy
2021-08-11Disable ed25519-donna's batch verification.George Kadianakis
Fixes bug 40078. As reported by hdevalence our batch verification logic can cause an assert crash. The assert happens because when the batch verification of ed25519-donna fails, the code in `ed25519_checksig_batch()` falls back to doing a single verification for each signature. The crash occurs because batch verification failed, but then all signatures individually verified just fine. That's because batch verification and single verification use a different equation which means that there are sigs that can pass single verification but fail batch verification. Fixing this would require modding ed25519-donna which is not in scope for this ticket, and will be soon deprecated in favor of arti and ed25519-dalek, so my branch instead removes batch verification.
2021-08-11relay: Reduce streaming compression ratio from HIGH to LOWDavid Goulet
Fixes #40301 Signed-off-by: David Goulet <dgoulet@torproject.org>
2021-08-11relay: Reduce streaming compression ratio from HIGH to LOWDavid Goulet
Fixes #40301 Signed-off-by: David Goulet <dgoulet@torproject.org>
2021-07-06Merge branch 'maint-0.4.6'George Kadianakis
2021-07-06Merge branch 'maint-0.4.5' into maint-0.4.6George Kadianakis
2021-07-06Merge branch 'mr/395' into maint-0.4.5George Kadianakis
2021-07-06Use native timegm when available.Nick Mathewson
Continue having a tor_gmtime_impl() unit test so that we can detect any problems in our replacement function; add a new test function to make sure that gmtime<->timegm are a round-trip on now-ish times. This is a fix for bug #40383, wherein we ran into trouble because tor_timegm() does not believe that time_t should include a count of leap seconds, but FreeBSD's gmtime believes that it should. This disagreement meant that for a certain amount of time each day, instead of calculating the most recent midnight, our voting-schedule functions would calculate the second-most-recent midnight, and lead to an assertion failure. I am calling this a bugfix on 0.2.0.3-alpha when we first started calculating our voting schedule in this way.
2021-06-29Merge branch 'maint-0.4.5' into maint-0.4.6David Goulet
2021-06-29Merge branch 'maint-0.4.6'David Goulet
2021-06-28Suppress strict-prototypes warning on NSS pk11pub.h headerNick Mathewson
We already did this in a couple of places, but there are more that we didn't get. This is necessary for systems with versions of NSS that don't do their prototypes properly. Fixes #40409; bugfix on 0.3.5.1-alpha.
2021-06-10Merge branch 'maint-0.4.6'Nick Mathewson
2021-06-10Merge branch 'maint-0.4.5' into maint-0.4.6Nick Mathewson
2021-06-10Merge branch 'maint-0.4.4' into maint-0.4.5Nick Mathewson
2021-06-10Merge branch 'maint-0.3.5' into maint-0.4.4Nick Mathewson
2021-06-10Merge branch 'bug40390_035_squashed' into maint-0.3.5Nick Mathewson
2021-06-10Assert on _all_ failures from RAND_bytes().Nick Mathewson
Previously, we would detect errors from a missing RNG implementation, but not failures from the RNG code itself. Fortunately, it appears those failures do not happen in practice when Tor is using OpenSSL's default RNG implementation. Fixes bug 40390; bugfix on 0.2.8.1-alpha. This issue is also tracked as TROVE-2021-004. Reported by Jann Horn at Google's Project Zero.
2021-05-25Merge branch 'maint-0.3.5' into maint-0.4.4Alexander Færøy
2021-05-25Merge branch 'maint-0.4.4' into maint-0.4.5Alexander Færøy
2021-05-25Merge branch 'maint-0.4.5' into maint-0.4.6Alexander Færøy
2021-05-25Merge branch 'maint-0.4.6' into mainAlexander Færøy
2021-05-25Remove the function `tor_tls_assert_renegotiation_unblocked`.Nick Mathewson
It was used nowhere outside its own unit tests, and it was causing compilation issues with recent OpenSSL 3.0.0 alphas. Closes ticket 40399.
2021-05-12metrics: Need to surround label value with double quotesDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2021-05-12metrics: Add a reset store helper functionDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2021-05-12metrics: Move helper function to lib/metricsDavid Goulet
It is a common function that a lot of subsystem can use which is to format a label so move it out of the HS subsystem into the more generic metrics library. Signed-off-by: David Goulet <dgoulet@torproject.org>
2021-05-12metrics: Print once the Promtheus commentsDavid Goulet
An entry can have multiple labels but only print once the comments at the first one. This follows the Promtheus best practices. Signed-off-by: David Goulet <dgoulet@torproject.org>
2021-05-07Merge branch 'maint-0.4.5' into maint-0.4.6Nick Mathewson
2021-05-07Merge branch 'maint-0.4.6'Nick Mathewson
2021-05-07Add a sandbox workaround for Glibc 2.33Nick Mathewson
This change permits the newfstatat() system call, and fixes issues 40382 (and 40381). This isn't a free change. From the commit: // Libc 2.33 uses this syscall to implement both fstat() and stat(). // // The trouble is that to implement fstat(fd, &st), it calls: // newfstatat(fs, "", &st, AT_EMPTY_PATH) // We can't detect this usage in particular, because "" is a pointer // we don't control. And we can't just look for AT_EMPTY_PATH, since // AT_EMPTY_PATH only has effect when the path string is empty. // // So our only solution seems to be allowing all fstatat calls, which // means that an attacker can stat() anything on the filesystem. That's // not a great solution, but I can't find a better one.