mirror repository of the tor core protocol in case of issues
Go to file
Nick Mathewson a30594605e Treat unparseable (micro)descriptors and extrainfos as undownloadable
One pain point in evolving the Tor design and implementing has been
adding code that makes clients reject directory documents that they
previously would have accepted, if those descriptors actually exist.
When this happened, the clients would get the document, reject it,
and then decide to try downloading it again, ad infinitum.  This
problem becomes particularly obnoxious with authorities, since if
some authorities accept a descriptor that others don't, the ones
that don't accept it would go crazy trying to re-fetch it over and
over. (See for example ticket #9286.)

This patch tries to solve this problem by tracking, if a descriptor
isn't parseable, what its digest was, and whether it is invalid
because of some flaw that applies to the portion containing the
digest.  (This excludes RSA signature problems: RSA signatures
aren't included in the digest.  This means that a directory
authority can still put another directory authority into a loop by
mentioning a descriptor, and then serving that descriptor with an
invalid RSA signatures.  But that would also make the misbehaving
directory authority get DoSed by the server it's attacking, so it's
not much of an issue.)

We already have a mechanism to mark something undownloadable with
downloadstatus_mark_impossible(); we use that here for
microdescriptors, extrainfos, and router descriptors.

Unit tests to follow in another patch.

Closes ticket #11243.
2014-10-13 14:30:02 -04:00
changes Treat unparseable (micro)descriptors and extrainfos as undownloadable 2014-10-13 14:30:02 -04:00
contrib systemd unit file: set up /var/run/tor as writable for the Tor service. 2014-09-19 16:10:39 +00:00
doc continue our habit of specifying the default in the manpage 2014-09-29 13:33:50 -04:00
m4 Use pc_from_ucontext.m4 from Google Performance Tools 2013-11-18 10:43:15 -05:00
scripts Use --require-version to prevent running trunnel pre-1.2 2014-09-25 14:49:00 -04:00
src Treat unparseable (micro)descriptors and extrainfos as undownloadable 2014-10-13 14:30:02 -04:00
.gitignore Merge branch 'ed25519_ref10_squashed' 2014-09-25 15:11:34 -04:00
acinclude.m4 remove a stray " while warning about missing packages on redhat 2014-06-02 02:30:25 -04:00
autogen.sh Use a nicely written autoconf macro to determine the sign of a type 2013-02-07 16:23:48 -05:00
ChangeLog and forward-port those changelogs too 2014-09-22 14:21:26 -04:00
configure.ac Improving error message. 2014-09-28 18:09:25 +03:00
Doxyfile.in Fix up all doxygen warnings other than "foo is not documented" 2011-03-16 14:47:27 -04:00
INSTALL Small fixes for the 2702 implementation 2011-04-02 12:15:08 +02:00
LICENSE Mention trunnel in LICENSE and src/ext/README 2014-09-25 12:03:46 -04:00
Makefile.am Use trunnel for crypto_pwbox encoding/decoding. 2014-09-25 11:58:14 -04:00
Makefile.nmake Clean up the MVSC nmake files so they work again. 2014-09-09 10:27:05 -04:00
README Fix some URLs in the README 2014-08-09 15:57:44 -04:00
ReleaseNotes and forward-port those changelogs too 2014-09-22 14:21:26 -04:00

Tor protects your privacy on the internet by hiding the connection
between your Internet address and the services you use. We believe Tor
is reasonably secure, but please ensure you read the instructions and
configure it properly.

To build Tor from source:
        ./configure && make && make install

Home page:
        https://www.torproject.org/

Download new versions:
        https://www.torproject.org/download/download.html

Documentation, including links to installation and setup instructions:
        https://www.torproject.org/docs/documentation.html

Making applications work with Tor:
        https://wiki.torproject.org/projects/tor/wiki/doc/TorifyHOWTO

Frequently Asked Questions:
        https://www.torproject.org/docs/faq.html


To get started working on Tor development:
        See the doc/HACKING file.