Unverified Commit 73890a86 authored by George Kadianakis's avatar George Kadianakis Committed by teor
Browse files

Merge branch 'bug30649_040' into bug30649_maint_041

parent 61082c05
......@@ -168,6 +168,8 @@ uptime-*.json
/src/lib/libtor-crypt-ops-testing.a
/src/lib/libtor-ctime.a
/src/lib/libtor-ctime-testing.a
/src/lib/libtor-dispatch.a
/src/lib/libtor-dispatch-testing.a
/src/lib/libtor-encoding.a
/src/lib/libtor-encoding-testing.a
/src/lib/libtor-evloop.a
......@@ -200,6 +202,8 @@ uptime-*.json
/src/lib/libtor-osinfo-testing.a
/src/lib/libtor-process.a
/src/lib/libtor-process-testing.a
/src/lib/libtor-pubsub.a
/src/lib/libtor-pubsub-testing.a
/src/lib/libtor-sandbox.a
/src/lib/libtor-sandbox-testing.a
/src/lib/libtor-string.a
......
......@@ -42,15 +42,18 @@ matrix:
## include creates builds with gcc, linux
include:
## We include a single coverage build with the best options for coverage
- env: COVERAGE_OPTIONS="--enable-coverage" HARDENING_OPTIONS=""
- env: COVERAGE_OPTIONS="--enable-coverage" HARDENING_OPTIONS="" TOR_TEST_RNG_SEED="636f766572616765"
## We only want to check these build option combinations once
## (they shouldn't vary by compiler or OS)
## We run rust and coverage with hardening off, which seems like enough
# - env: HARDENING_OPTIONS=""
## We check asciidoc with distcheck, to make sure we remove doc products
- env: DISTCHECK="yes" ASCIIDOC_OPTIONS=""
- env: DISTCHECK="yes" ASCIIDOC_OPTIONS="" SKIP_MAKE_CHECK="yes"
# We also try running a hardened clang build with chutney on Linux.
- env: CHUTNEY="yes" SKIP_MAKE_CHECK="yes" CHUTNEY_ALLOW_FAILURES="2"
compiler: clang
# We clone our stem repo and run `make test-stem`
- env: TEST_STEM="yes"
- env: TEST_STEM="yes" SKIP_MAKE_CHECK="yes"
## Check rust online with distcheck, to make sure we remove rust products
- env: DISTCHECK="yes" RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
## Check disable module dirauth with and without rust
......@@ -72,7 +75,7 @@ matrix:
## https://docs.travis-ci.com/user/customizing-the-build#matching-jobs-with-allow_failures
allow_failures:
## test-stem sometimes hangs on Travis
- env: TEST_STEM="yes"
- env: TEST_STEM="yes" SKIP_MAKE_CHECK="yes"
exclude:
## gcc on OSX is less useful, because the default compiler is clang.
......@@ -88,7 +91,7 @@ matrix:
- compiler: gcc
os: linux
## TOR_RUST_DEPENDENCIES is spelt RUST_DEPENDENCIES in 0.3.2
env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true HARDENING_OPTIONS=""
env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
## (Linux only) Use the latest Linux image (Ubuntu Trusty)
dist: trusty
......@@ -175,6 +178,9 @@ install:
- if [[ "$RUST_OPTIONS" != "" ]]; then source $HOME/.cargo/env; fi
## If we're testing rust builds in offline-mode, then set up our vendored dependencies
- if [[ "$TOR_RUST_DEPENDENCIES" == "true" ]]; then export TOR_RUST_DEPENDENCIES=$PWD/src/ext/rust/crates; fi
## If we're running chutney, install it.
- if [[ "$CHUTNEY" != "" ]]; then git clone --depth 1 https://github.com/torproject/chutney.git ; export CHUTNEY_PATH="$(pwd)/chutney"; fi
## If we're running stem, install it.
- if [[ "$TEST_STEM" != "" ]]; then git clone --depth 1 https://github.com/torproject/stem.git ; export STEM_SOURCE_DIR=`pwd`/stem; fi
##
## Finally, list installed package versions
......@@ -189,7 +195,9 @@ install:
- if [[ "$RUST_OPTIONS" != "" ]]; then cargo --version; fi
## Get python version
- python --version
## run stem tests if they are enabled.
## If we're running chutney, show the chutney commit
- if [[ "$CHUTNEY" != "" ]]; then pushd "$CHUTNEY_PATH"; git log -1 ; popd ; fi
## If we're running stem, show the stem version and commit
- if [[ "$TEST_STEM" != "" ]]; then pushd stem; python -c "from stem import stem; print(stem.__version__);"; git log -1; popd; fi
script:
......@@ -200,10 +208,12 @@ script:
- echo "Configure flags are $CONFIGURE_FLAGS"
- ./configure $CONFIGURE_FLAGS
## We run `make check` because that's what https://jenkins.torproject.org does.
- if [[ "$DISTCHECK" == "" && "$TEST_STEM" == "" ]]; then make check; fi
## Diagnostic for bug 29437: kill stem if it hangs for 15 minutes
- if [[ "$TEST_STEM" != "" ]]; then make src/app/tor; timelimit -p -t 540 -s USR1 -T 30 -S ABRT python3 "$STEM_SOURCE_DIR"/run_tests.py --tor src/app/tor --integ --log notice --target RUN_ALL; fi
- if [[ "$DISTCHECK" != "" && "$TEST_STEM" == "" ]]; then make distcheck DISTCHECK_CONFIGURE_FLAGS="$CONFIGURE_FLAGS"; fi
- if [[ "$SKIP_MAKE_CHECK" == "" ]]; then make check; fi
- if [[ "$DISTCHECK" != "" ]]; then make distcheck DISTCHECK_CONFIGURE_FLAGS="$CONFIGURE_FLAGS"; fi
- if [[ "$CHUTNEY" != "" ]]; then make test-network-all; fi
## Diagnostic for bug 29437: kill stem if it hangs for 9.5 minutes
## Travis will kill the job after 10 minutes with no output
- if [[ "$TEST_STEM" != "" ]]; then make src/app/tor; timelimit -p -t 540 -s USR1 -T 30 -S ABRT python3 "$STEM_SOURCE_DIR"/run_tests.py --tor src/app/tor --integ --test control.controller --test control.base_controller --test process --log TRACE --log-file stem.log; fi
## If this build was one that produced coverage, upload it.
- if [[ "$COVERAGE_OPTIONS" != "" ]]; then coveralls -b . --exclude src/test --exclude src/trunnel --gcov-options '\-p' || echo "Coverage failed"; fi
......@@ -212,11 +222,13 @@ after_failure:
## But the log is too long for travis' rendered view, so tail it.
- tail -1000 config.log || echo "tail failed"
## `make check` will leave a log file with more details of test failures.
- if [[ "$DISTCHECK" == "" ]]; then cat test-suite.log || echo "cat failed"; fi
- if [[ "$SKIP_MAKE_CHECK" == "" ]]; then cat test-suite.log || echo "cat failed"; fi
## `make distcheck` puts it somewhere different.
- if [[ "$DISTCHECK" != "" ]]; then make show-distdir-testlog || echo "make failed"; fi
- if [[ "$DISTCHECK" != "" ]]; then make show-distdir-core || echo "make failed"; fi
- if [[ "$TEST_STEM" != "" ]]; then cat "$STEM_SOURCE_DIR"/test/data/tor_log || echo "cat failed"; fi
- if [[ "$CHUTNEY" != "" ]]; then ls test_network_log || echo "ls failed"; cat test_network_log/* || echo "cat failed"; fi
- if [[ "$TEST_STEM" != "" ]]; then tail -1000 "$STEM_SOURCE_DIR"/test/data/tor_log || echo "tail failed"; fi
- if [[ "$TEST_STEM" != "" ]]; then grep -v "SocketClosed" stem.log | tail -1000 || echo "grep | tail failed"; fi
before_cache:
## Delete all gcov files.
......
Changes in version 0.4.1.2-alpha - 2019-06-06
Tor 0.4.1.2-alpha resolves numerous bugs--some of them from the
previous alpha, and some much older. It also contains minor testing
improvements, and an improvement to the security of our authenticated
SENDME implementation.
o Major bugfixes (bridges):
- Consider our directory information to have changed when our list
of bridges changes. Previously, Tor would not re-compute the
status of its directory information when bridges changed, and
therefore would not realize that it was no longer able to build
circuits. Fixes part of bug 29875.
- Do not count previously configured working bridges towards our
total of working bridges. Previously, when Tor's list of bridges
changed, it would think that the old bridges were still usable,
and delay fetching router descriptors for the new ones. Fixes part
of bug 29875; bugfix on 0.3.0.1-alpha.
o Major bugfixes (flow control, SENDME):
- Decrement the stream-level package window after packaging a cell.
Previously, it was done inside a log_debug() call, meaning that if
debug logs were not enabled, the decrement would never happen, and
thus the window would be out of sync with the other end point.
Fixes bug 30628; bugfix on 0.4.1.1-alpha.
o Major bugfixes (onion service reachability):
- Properly clean up the introduction point map and associated state
when circuits change purpose from onion service circuits to
pathbias, measurement, or other circuit types. This may fix some
instances of introduction point failure. Fixes bug 29034; bugfix
on 0.3.2.1-alpha.
o Minor features (authenticated SENDME):
- Ensure that there is enough randomness on every circuit to prevent
an attacker from successfully predicting the hashes they will need
to include in authenticated SENDME cells. At a random interval, if
we have not sent randomness already, we now leave some extra space
at the end of a cell that we can fill with random bytes. Closes
ticket 26846.
o Minor features (continuous integration):
- When running coverage builds on Travis, we now set
TOR_TEST_RNG_SEED, to avoid RNG-based coverage differences. Part
of ticket 28878.
o Minor features (maintenance):
- Add a new "make autostyle" target that developers can use to apply
all automatic Tor style and consistency conversions to the
codebase. Closes ticket 30539.
o Minor features (testing):
- The circuitpadding tests now use a reproducible RNG implementation,
so that if a test fails, we can learn why. Part of ticket 28878.
- Tor's tests now support an environment variable, TOR_TEST_RNG_SEED,
to set the RNG seed for tests that use a reproducible RNG. Part of
ticket 28878.
- When running tests in coverage mode, take additional care to make
our coverage deterministic, so that we can accurately track
changes in code coverage. Closes ticket 30519.
o Minor bugfixes (configuration, proxies):
- Fix a bug that prevented us from supporting SOCKS5 proxies that
want authentication along with configured (but unused!)
ClientTransportPlugins. Fixes bug 29670; bugfix on 0.2.6.1-alpha.
o Minor bugfixes (controller):
- POSTDESCRIPTOR requests should work again. Previously, they were
broken if a "purpose=" flag was specified. Fixes bug 30580; bugfix
on 0.4.1.1-alpha.
- Repair the HSFETCH command so that it works again. Previously, it
expected a body when it shouldn't have. Fixes bug 30646; bugfix
on 0.4.1.1-alpha.
o Minor bugfixes (developer tooling):
- Fix pre-push hook to allow fixup and squash commits when pushing
to non-upstream git remote. Fixes bug 30286; bugfix
on 0.4.0.1-alpha.
o Minor bugfixes (directory authority):
- Move the "bandwidth-file-headers" line in directory authority
votes so that it conforms to dir-spec.txt. Fixes bug 30316; bugfix
on 0.3.5.1-alpha.
o Minor bugfixes (NetBSD):
- Fix usage of minherit() on NetBSD and other platforms that define
MAP_INHERIT_{ZERO,NONE} instead of INHERIT_{ZERO,NONE}. Fixes bug
30614; bugfix on 0.4.0.2-alpha. Patch from Taylor Campbell.
o Minor bugfixes (out-of-memory handler):
- When purging the DNS cache because of an out-of-memory condition,
try purging just the older entries at first. Previously, we would
always purge the whole thing. Fixes bug 29617; bugfix
on 0.3.5.1-alpha.
o Minor bugfixes (portability):
- Avoid crashing in our tor_vasprintf() implementation on systems
that define neither vasprintf() nor _vscprintf(). (This bug has
been here long enough that we question whether people are running
Tor on such systems, but we're applying the fix out of caution.)
Fixes bug 30561; bugfix on 0.2.8.2-alpha. Found and fixed by
Tobias Stoeckmann.
o Minor bugfixes (shutdown, libevent, memory safety):
- Avoid use-after-free bugs when shutting down, by making sure that
we shut down libevent only after shutting down all of its users.
We believe these are harmless in practice, since they only occur
on the shutdown path, and do not involve any attacker-controlled
data. Fixes bug 30629; bugfix on 0.4.1.1-alpha.
o Minor bugfixes (static analysis):
- Fix several spurious Coverity warnings about the unit tests, to
lower our chances of missing real warnings in the future. Fixes
bug 30150; bugfix on 0.3.5.1-alpha and various other Tor versions.
o Testing:
- Specify torrc paths (with empty files) when launching tor in
integration tests; refrain from reading user and system torrcs.
Resolves issue 29702.
Changes in version 0.4.1.1-alpha - 2019-05-22
This is the first alpha in the 0.4.1.x series. It introduces
lightweight circuit padding to make some onion-service circuits harder
to distinguish, includes a new "authenticated SENDME" feature to make
certain denial-of-service attacks more difficult, and improves
performance in several areas.
o Major features (circuit padding):
- Onion service clients now add padding cells at the start of their
INTRODUCE and RENDEZVOUS circuits, to make those circuits' traffic
look more like general purpose Exit traffic. The overhead for this
is 2 extra cells in each direction for RENDEZVOUS circuits, and 1
extra upstream cell and 10 downstream cells for INTRODUCE
circuits. This feature is only enabled when also supported by the
circuit's middle node. (Clients may specify fixed middle nodes
with the MiddleNodes option, and may force-disable this feature
with the CircuitPadding torrc.) Closes ticket 28634.
o Major features (code organization):
- Tor now includes a generic publish-subscribe message-passing
subsystem that we can use to organize intermodule dependencies. We
hope to use this to reduce dependencies between modules that don't
need to be related, and to generally simplify our codebase. Closes
ticket 28226.
o Major features (controller protocol):
- Controller commands are now parsed using a generalized parsing
subsystem. Previously, each controller command was responsible for
parsing its own input, which led to strange inconsistencies.
Closes ticket 30091.
o Major features (flow control):
- Implement authenticated SENDMEs as detailed in proposal 289. A
SENDME cell now includes the digest of the traffic that it
acknowledges, so that once an end point receives the SENDME, it
can confirm the other side's knowledge of the previous cells that
were sent, and prevent certain types of denial-of-service attacks.
This behavior is controlled by two new consensus parameters: see
the proposal for more details. Fixes ticket 26288.
o Major features (performance):
- Our node selection algorithm now excludes nodes in linear time.
Previously, the algorithm was quadratic, which could slow down
heavily used onion services. Closes ticket 30307.
o Major features (performance, RNG):
- Tor now constructs a fast secure pseudorandom number generator for
each thread, to use when performance is critical. This PRNG is
based on AES-CTR, using a buffering construction similar to
libottery and the (newer) OpenBSD arc4random() code. It
outperforms OpenSSL 1.1.1a's CSPRNG by roughly a factor of 100 for
small outputs. Although we believe it to be cryptographically
strong, we are only using it when necessary for performance.
Implements tickets 29023 and 29536.
o Major bugfixes (onion service v3):
- Fix an unreachable bug in which an introduction point could try to
send an INTRODUCE_ACK with a status code that Trunnel would refuse
to encode, leading the relay to assert(). We've consolidated the
ABI values into Trunnel now. Fixes bug 30454; bugfix
on 0.3.0.1-alpha.
- Clients can now handle unknown status codes from INTRODUCE_ACK
cells. (The NACK behavior will stay the same.) This will allow us
to extend status codes in the future without breaking the normal
client behavior. Fixes another part of bug 30454; bugfix
on 0.3.0.1-alpha.
o Minor features (circuit padding):
- We now use a fast PRNG when scheduling circuit padding. Part of
ticket 28636.
- Allow the padding machine designer to pick the edges of their
histogram instead of trying to compute them automatically using an
exponential formula. Resolves some undefined behavior in the case
of small histograms and allows greater flexibility on machine
design. Closes ticket 29298; bugfix on 0.4.0.1-alpha.
- Allow circuit padding machines to hold a circuit open until they
are done padding it. Closes ticket 28780.
o Minor features (compile-time modules):
- Add a "--list-modules" command to print a list of which compile-
time modules are enabled. Closes ticket 30452.
o Minor features (continuous integration):
- Remove sudo configuration lines from .travis.yml as they are no
longer needed with current Travis build environment. Resolves
issue 30213.
- In Travis, show stem's tor log after failure. Closes ticket 30234.
o Minor features (controller):
- Add onion service version 3 support to the HSFETCH command.
Previously, only version 2 onion services were supported. Closes
ticket 25417. Patch by Neel Chauhan.
o Minor features (debugging):
- Introduce tor_assertf() and tor_assertf_nonfatal() to enable
logging of additional information during assert failure. Now we
can use format strings to include information for trouble
shooting. Resolves ticket 29662.
o Minor features (defense in depth):
- In smartlist_remove_keeporder(), set unused pointers to NULL, in
case a bug causes them to be used later. Closes ticket 30176.
Patch from Tobias Stoeckmann.
- Tor now uses a cryptographically strong PRNG even for decisions
that we do not believe are security-sensitive. Previously, for
performance reasons, we had used a trivially predictable linear
congruential generator algorithm for certain load-balancing and
statistical sampling decisions. Now we use our fast RNG in those
cases. Closes ticket 29542.
o Minor features (developer tools):
- Tor's "practracker" test script now checks for files and functions
that seem too long and complicated. Existing overlong functions
and files are accepted for now, but should eventually be
refactored. Closes ticket 29221.
- Add some scripts used for git maintenance to scripts/git. Closes
ticket 29391.
- Call practracker from pre-push and pre-commit git hooks to let
developers know if they made any code style violations. Closes
ticket 30051.
- Add a script to check that each header has a well-formed and
unique guard macro. Closes ticket 29756.
o Minor features (geoip):
- Update geoip and geoip6 to the May 13 2019 Maxmind GeoLite2
Country database. Closes ticket 30522.
o Minor features (HTTP tunnel):
- Return an informative web page when the HTTPTunnelPort is used as
an HTTP proxy. Closes ticket 27821, patch by "eighthave".
o Minor features (IPv6, v3 onion services):
- Make v3 onion services put IPv6 addresses in service descriptors.
Before this change, service descriptors only contained IPv4
addresses. Implements 26992.
o Minor features (modularity):
- The "--disable-module-dirauth" compile-time option now disables
even more dirauth-only code. Closes ticket 30345.
o Minor features (performance):
- Use OpenSSL's implementations of SHA3 when available (in OpenSSL
1.1.1 and later), since they tend to be faster than tiny-keccak.
Closes ticket 28837.
o Minor features (testing):
- Tor's unit test code now contains helper functions to replace the
PRNG with a deterministic or reproducible version for testing.
Previously, various tests implemented this in various ways.
Implements ticket 29732.
- We now have a script, cov-test-determinism.sh, to identify places
where our unit test coverage has become nondeterministic. Closes
ticket 29436.
- Check that representative subsets of values of `int` and `unsigned
int` can be represented by `void *`. Resolves issue 29537.
o Minor bugfixes (bridge authority):
- Bridge authorities now set bridges as running or non-running when
about to dump their status to a file. Previously, they set bridges
as running in response to a GETINFO command, but those shouldn't
modify data structures. Fixes bug 24490; bugfix on 0.2.0.13-alpha.
Patch by Neel Chauhan.
o Minor bugfixes (channel padding statistics):
- Channel padding write totals and padding-enabled totals are now
counted properly in relay extrainfo descriptors. Fixes bug 29231;
bugfix on 0.3.1.1-alpha.
o Minor bugfixes (circuit padding):
- Add a "CircuitPadding" torrc option to disable circuit padding.
Fixes bug 28693; bugfix on 0.4.0.1-alpha.
- Allow circuit padding machines to specify that they do not
contribute much overhead, and provide consensus flags and torrc
options to force clients to only use these low overhead machines.
Fixes bug 29203; bugfix on 0.4.0.1-alpha.
- Provide a consensus parameter to fully disable circuit padding, to
be used in emergency network overload situations. Fixes bug 30173;
bugfix on 0.4.0.1-alpha.
- The circuit padding subsystem will no longer schedule padding if
dormant mode is enabled. Fixes bug 28636; bugfix on 0.4.0.1-alpha.
- Inspect a circuit-level cell queue before sending padding, to
avoid sending padding while too much data is already queued. Fixes
bug 29204; bugfix on 0.4.0.1-alpha.
- Avoid calling monotime_absolute_usec() in circuit padding machines
that do not use token removal or circuit RTT estimation. Fixes bug
29085; bugfix on 0.4.0.1-alpha.
o Minor bugfixes (compilation, unusual configurations):
- Avoid failures when building with the ALL_BUGS_ARE_FATAL option
due to missing declarations of abort(), and prevent other such
failures in the future. Fixes bug 30189; bugfix on 0.3.4.1-alpha.
o Minor bugfixes (controller protocol):
- Teach the controller parser to distinguish an object preceded by
an argument list from one without. Previously, it couldn't
distinguish an argument list from the first line of a multiline
object. Fixes bug 29984; bugfix on 0.2.3.8-alpha.
o Minor bugfixes (directory authority, ipv6):
- Directory authorities with IPv6 support now always mark themselves
as reachable via IPv6. Fixes bug 24338; bugfix on 0.4.0.2-alpha.
Patch by Neel Chauhan.
o Minor bugfixes (documentation):
- Improve the documentation for using MapAddress with ".exit". Fixes
bug 30109; bugfix on 0.1.0.1-rc.
- Improve the monotonic time module and function documentation to
explain what "monotonic" actually means, and document some results
that have surprised people. Fixes bug 29640; bugfix
on 0.2.9.1-alpha.
- Use proper formatting when providing an example on quoting options
that contain whitespace. Fixes bug 29635; bugfix on 0.2.3.18-rc.
o Minor bugfixes (logging):
- Do not log a warning when running with an OpenSSL version other
than the one Tor was compiled with, if the two versions should be
compatible. Previously, we would warn whenever the version was
different. Fixes bug 30190; bugfix on 0.2.4.2-alpha.
- Warn operators when the MyFamily option is set but ContactInfo is
missing, as the latter should be set too. Fixes bug 25110; bugfix
on 0.3.3.1-alpha.
o Minor bugfixes (memory leak):
- Avoid a minor memory leak that could occur on relays when failing
to create a "keys" directory. Fixes bug 30148; bugfix
on 0.3.3.1-alpha.
o Minor bugfixes (onion services):
- Avoid a GCC 9.1.1 warning (and possible crash depending on libc
implemenation) when failing to load an onion service client
authorization file. Fixes bug 30475; bugfix on 0.3.5.1-alpha.
- When refusing to launch a controller's HSFETCH request because of
rate-limiting, respond to the controller with a new response,
"QUERY_RATE_LIMITED". Previously, we would log QUERY_NO_HSDIR for
this case. Fixes bug 28269; bugfix on 0.3.1.1-alpha. Patch by
Neel Chauhan.
- When relaunching a circuit to a rendezvous service, mark the
circuit as needing high-uptime routers as appropriate. Fixes bug
17357; bugfix on 0.4.0.2-alpha. Patch by Neel Chauhan.
- Stop ignoring IPv6 link specifiers sent to v3 onion services.
(IPv6 support for v3 onion services is still incomplete: see
ticket 23493 for details.) Fixes bug 23588; bugfix on
0.3.2.1-alpha. Patch by Neel Chauhan.
o Minor bugfixes (onion services, performance):
- When building circuits to onion services, call tor_addr_parse()
less often. Previously, we called tor_addr_parse() in
circuit_is_acceptable() even if its output wasn't used. This
change should improve performance when building circuits. Fixes
bug 22210; bugfix on 0.2.8.12. Patch by Neel Chauhan.
o Minor bugfixes (performance):
- When checking whether a node is a bridge, use a fast check to make
sure that its identity is set. Previously, we used a constant-time
check, which is not necessary in this case. Fixes bug 30308;
bugfix on 0.3.5.1-alpha.
o Minor bugfixes (pluggable transports):
- Tor now sets TOR_PT_EXIT_ON_STDIN_CLOSE=1 for client transports as
well as servers. Fixes bug 25614; bugfix on 0.2.7.1-alpha.
o Minor bugfixes (probability distributions):
- Refactor and improve parts of the probability distribution code
that made Coverity complain. Fixes bug 29805; bugfix
on 0.4.0.1-alpha.
o Minor bugfixes (python):
- Stop assuming that /usr/bin/python3 exists. For scripts that work
with python2, use /usr/bin/python. Otherwise, use /usr/bin/env
python3. Fixes bug 29913; bugfix on 0.2.5.3-alpha.
o Minor bugfixes (relay):
- When running as a relay, if IPv6Exit is set to 1 while ExitRelay
is auto, act as if ExitRelay is 1. Previously, we would ignore
IPv6Exit if ExitRelay was 0 or auto. Fixes bug 29613; bugfix on
0.3.5.1-alpha. Patch by Neel Chauhan.
o Minor bugfixes (stats):
- When ExtraInfoStatistics is 0, stop including bandwidth usage
statistics, GeoIPFile hashes, ServerTransportPlugin lines, and
bridge statistics by country in extra-info documents. Fixes bug
29018; bugfix on 0.2.4.1-alpha.
o Minor bugfixes (testing):
- Call setrlimit() to disable core dumps in test_bt_cl.c. Previously
we used `ulimit -c` in test_bt.sh, which violates POSIX shell
compatibility. Fixes bug 29061; bugfix on 0.3.5.1-alpha.
- Fix some incorrect code in the v3 onion service unit tests. Fixes
bug 29243; bugfix on 0.3.2.1-alpha.
- In the "routerkeys/*" tests, check the return values of mkdir()
for possible failures. Fixes bug 29939; bugfix on 0.2.7.2-alpha.
Found by Coverity as CID 1444254.
- Split test_utils_general() into several smaller test functions.
This makes it easier to perform resource deallocation on assert
failure, and fixes Coverity warnings CID 1444117 and CID 1444118.
Fixes bug 29823; bugfix on 0.2.9.1-alpha.
o Minor bugfixes (tor-resolve):
- Fix a memory leak in tor-resolve that could happen if Tor gave it
a malformed SOCKS response. (Memory leaks in tor-resolve don't
actually matter, but it's good to fix them anyway.) Fixes bug
30151; bugfix on 0.4.0.1-alpha.
o Code simplification and refactoring:
- Abstract out the low-level formatting of replies on the control
port. Implements ticket 30007.
- Add several assertions in an attempt to fix some Coverity
warnings. Closes ticket 30149.
- Introduce a connection_dir_buf_add() helper function that checks
for compress_state of dir_connection_t and automatically writes a
string to directory connection with or without compression.
Resolves issue 28816.
- Make the base32_decode() API return the number of bytes written,
for consistency with base64_decode(). Closes ticket 28913.
- Move most relay-only periodic events out of mainloop.c into the
relay subsystem. Closes ticket 30414.
- Refactor and encapsulate parts of the codebase that manipulate
crypt_path_t objects. Resolves issue 30236.
- Refactor several places in our code that Coverity incorrectly
believed might have memory leaks. Closes ticket 30147.
- Remove redundant return values in crypto_format, and the
associated return value checks elsewhere in the code. Make the
implementations in crypto_format consistent, and remove redundant
code. Resolves ticket 29660.
- Rename tor_mem_is_zero() to fast_mem_is_zero(), to emphasize that
it is not a constant-time function. Closes ticket 30309.
- Replace hs_desc_link_specifier_t with link_specifier_t, and remove
all hs_desc_link_specifier_t-specific code. Fixes bug 22781;
bugfix on 0.3.2.1-alpha.
- Simplify v3 onion service link specifier handling code. Fixes bug
23576; bugfix on 0.3.2.1-alpha.
- Split crypto_digest.c into NSS code, OpenSSL code, and shared
code. Resolves ticket 29108.
- Split control.c into several submodules, in preparation for
distributing its current responsibilities throughout the codebase.
Closes ticket 29894.
- Start to move responsibility for knowing about periodic events to
the appropriate subsystems, so that the mainloop doesn't need to
know all the periodic events in the rest of the codebase.
Implements tickets 30293 and 30294.
o Documentation:
- Document how to find git commits and tags for bug fixes in
CodingStandards.md. Update some file documentation. Closes
ticket 30261.
o Removed features:
- Remove the linux-tor-prio.sh script from contrib/operator-tools
directory. Resolves issue 29434.
- Remove the obsolete OpenSUSE initscript. Resolves issue 30076.
- Remove the obsolete script at contrib/dist/tor.sh.in. Resolves
issue 30075.
o Code simplification and refactoring (shell scripts):
- Clean up many of our shell scripts to fix shellcheck warnings.
These include autogen.sh (ticket 26069), test_keygen.sh (ticket
29062), test_switch_id.sh (ticket 29065), test_rebind.sh (ticket
29063), src/test/fuzz/minimize.sh (ticket 30079), test_rust.sh
(ticket 29064), torify (ticket 29070), asciidoc-helper.sh (29926),
fuzz_multi.sh (30077), fuzz_static_testcases.sh (ticket 29059),
nagios-check-tor-authority-cert (ticket 29071),
src/test/fuzz/fixup_filenames.sh (ticket 30078), test-network.sh
(ticket 29060), test_key_expiration.sh (ticket 30002),
zero_length_keys.sh (ticket 29068), and test_workqueue_*.sh
(ticket 29067).
o Testing (chutney):
- In "make test-network-all", test IPv6-only v3 single onion
services, using the chutney network single-onion-v23-ipv6-md.
Closes ticket 27251.
Changes in version 0.4.0.5 - 2019-05-02
This is the first stable release in the 0.4.0.x series. It contains
improvements for power management and bootstrap reporting, as well as
preliminary backend support for circuit padding to prevent some kinds
of traffic analysis. It also continues our work in refactoring Tor for
long-term maintainability.
Per our support policy, we will support the 0.4.0.x series for nine
months, or until three months after the release of a stable 0.4.1.x:
whichever is longer. If you need longer-term support, please stick
with 0.3.5.x, which will we plan to support until Feb 2022.
Below are the changes since 0.4.0.4-rc. For a complete list of changes
since 0.3.5.7, see the ReleaseNotes file.
o Minor features (continuous integration):
- In Travis, tell timelimit to use stem's backtrace signals, and
launch python directly from timelimit, so python receives the
signals from timelimit, rather than make. Closes ticket 30117.
o Minor features (diagnostic):
- Add more diagnostic log messages in an attempt to solve the issue
of NUL bytes appearing in a microdescriptor cache. Related to
ticket 28223.
o Minor features (testing):
- Use the approx_time() function when setting the "Expires" header
in directory replies, to make them more testable. Needed for
ticket 30001.
o Minor bugfixes (rust):
- Abort on panic in all build profiles, instead of potentially
unwinding into C code. Fixes bug 27199; bugfix on 0.3.3.1-alpha.
o Minor bugfixes (shellcheck):
- Look for scripts in their correct locations during "make
shellcheck". Previously we had looked in the wrong place during
out-of-tree builds. Fixes bug 30263; bugfix on 0.4.0.1-alpha.
o Minor bugfixes (testing):
- Check the time in the "Expires" header using approx_time(). Fixes
bug 30001; bugfix on 0.4.0.4-rc.
o Minor bugfixes (UI):
- Lower log level of unlink() errors during bootstrap. Fixes bug
29930; bugfix on 0.4.0.1-alpha.
Changes in version 0.4.0.4-rc - 2019-04-11
Tor 0.4.0.4-rc is the first release candidate in its series; it fixes
several bugs from earlier versions, including some that had affected
stability, and one that prevented relays from working with NSS.
o Major bugfixes (NSS, relay):
- When running with NSS, disable TLS 1.2 ciphersuites that use
SHA384 for their PRF. Due to an NSS bug, the TLS key exporters for
these ciphersuites don't work -- which caused relays to fail to
handshake with one another when these ciphersuites were enabled.
Fixes bug 29241; bugfix on 0.3.5.1-alpha.
o Minor features (bandwidth authority):
- Make bandwidth authorities ignore relays that are reported in the
bandwidth file with the flag "vote=0". This change allows us to
report unmeasured relays for diagnostic reasons without including
their bandwidth in the bandwidth authorities' vote. Closes