Revise changelog verbiage; try to tighten it up.
[tor.git] / ChangeLog
1 Changes in version 0.2.5.4-alpha - 2014-04-??
2   This release includes several security and performance improvements
3   for clients and relays, including XXX
4
5   This release marks end-of-line for Tor 0.2.2.x; those Tor versions
6   have accumulated many known flaws; everyone should upgrade.
7
8   o Major features (security):
9     - Block authority signing keys that were used on authorities
10       vulnerable to the "heartbleed" bug in OpenSSL (CVE-2014-0160). (We
11       don't have any evidence that these keys _were_ compromised; we're
12       doing this to be prudent.) Resolves ticket 11464.
13
14   o Major features (relay performance):
15     - Speed up server-side lookups of rendezvous and introduction point
16       circuits by using hashtables instead of linear searches. These
17       functions previously accounted between 3 and 7% of CPU usage on
18       some busy relays. Resolves ticket 9841.
19     - Avoid wasting CPU when extending a circuit over a channel that is
20       nearly out of circuit IDs. Previously, we would in the worst case
21       do a linear scan over all possible circuit IDs before deciding
22       that we had exhausted our possibilities. Now, we try at most 64
23       random circuit IDs before deciding that we probably won't succeed.
24       Fix for a possible root cause of ticket #11553.
25
26   o Major features (seccomp2 sandbox, Linux only):
27     - The seccomp2 sandbox can now run a test network for multiple hours
28       without crashing. The sandbox is still experimental, and more bugs
29       will probably turn up. To try it, enable "Sandbox 1" on a Linux
30       host.
31     - Strengthen sandbox code: the sandbox can now test the arguments
32       for rename(), and blocks _sysctl() entirely.
33     - When the sandbox blocks a system call, it now tries to log a stack
34       trace before exiting. Resolves ticket 11465.
35
36   o Major bugfixes (TLS cipher selection):
37     - The relay ciphersuite list is now generated automatically based on
38       uniform criteria, and includes all OpenSSL ciphersuites with
39       acceptable strength and forward secrecy. Previously, we had
40       omitted some perfectly fine ciphersuites. Resolves bugs #11513,
41       #11492, #11498, #11499. Bugs reported by 'cypherpunks'. Bugfix on
42       0.2.4.8-alpha.
43     - Relays now trust themselves to have a better view than clients of
44       which TLS ciphersuites are better than others. (Thanks to #11513,
45       the relay list is now well-considered, whereas the client list has
46       been chosen mainly for anti-fingerprinting purposes.) Relays
47       prefer: AES over 3DES; then ECDHE over DHE; then GCM over CBC;
48       then SHA384 over SHA256 over SHA1; and last, AES256 over AES128.
49       Resolves ticket 11528.
50     - Clients now try to advertise the same list of ciphersuites as
51       Firefox 28. This change enables selection of (fast) GCM
52       ciphersuites, disables some strange old ciphers, and disables the
53       ECDH (not to be confused with ECDHE) ciphersuites. Resolves ticket
54       11438.
55
56   o Major bugfixes (undefined behavior):
57     - Fix various instances of undefined behavior in channeltls.c,
58       tor_memmem(), and eventdns.c, that would cause us to construct
59       pointers to memory outside an allocated object. (These invalid
60       pointers were not accessed, but C does not even allow them to
61       exist.) Fixes bug #10363; bugfixes on 0.2.0.10-alpha,
62       0.2.3.6-alpha, 0.1.1.1-alpha, and 0.1.2.1-alpha. Reported by
63       "bobnomnom".
64     - Use the AddressSanitizer and Ubsan sanitizers (in clang-3.4) to
65       fix some miscellaneous errors in our tests and codebase. Fix for
66       bug 11232. Bugfixes on versions back as far as 0.2.1.11-alpha.
67
68   o Minor features (Transparent proxy, *BSD):
69     - Support FreeBSD's ipfw firewall interface for TransPort ports. on
70       FreeBSD. To enable it, set "TransProxyType ipfw". Resolves ticket
71       10267; patch from "yurivict".
72     - Support OpenBSD's divert-to rules with the pf firewall for
73       transparent proxy ports. To enable it, set "TransProxyType pf-
74       divert". This allows Tor to run a TransPort transparent proxy port
75       on OpenBSD 4.4 or later without root privileges. See the
76       pf.conf(5) manual page for information on configuring pf to use
77       divert-to rules. Closes ticket 10896; patch from Dana Koch.
78
79   o Minor features (security):
80     - New --enable-expensive-hardening option to enable security
81       hardening options that consume nontrivial amounts of CPU and
82       memory. Right now, this includes AddressSanitizer and UbSan, which
83       are supported in newer versions of GCC and Clang. Closes ticket
84       11477.
85     - If you don't specify MaxMemInQueues yourself, Tor now tries to
86       pick a good value based on your total system memory. Previously,
87       the default was always 8 GB. You can still override the default by
88       setting MaxMemInQueues yourself. Resolves ticket 11396.
89
90   o Minor features (log verbosity):
91     - Demote the message that we give when a flushing connection times
92       out for too long from NOTICE to INFO. It was usually meaningless.
93       Resolves ticket 5286.
94     - Don't log so many notice-level bootstrapping messages at startup
95       about downloading descriptors. Previously, we'd log a notice
96       whenever we learned about more routers. Now, we only log a notice
97       at every 5% of progress. Fixes bug 9963.
98
99   o Minor features (relay):
100     - If a circuit timed out for at least 3 minutes, check if we have a
101       new external IP address, and publish a new descriptor with the new
102       IP address if it changed. Resolves ticket 2454.
103     - Warn less verbosely when receiving a malformed
104       ESTABLISH_RENDEZVOUS cell. Fixes ticket 11279.
105     - When we run out of usable circuit IDs on a channel, log only one
106       warning for the whole channel, and describe how many circuits
107       there were on the channel. Fix for part of ticket #11553.
108
109   o Minor features (controller):
110     - Make the entire exit policy available from the control port via
111       GETINFO exit-policy/*. Implements enhancement #7952. Patch from
112       "rl1987".
113     - Because of the fix for ticket 11396, the real limit for memory
114       usage may no longer match the configured MaxMemInQueues value. The
115       real limit is now exposed via GETINFO limits/max-mem-in-queues.
116
117   o Minor features (misc):
118     - Always check return values for unlink, munmap, UnmapViewOfFile;
119       check strftime return values more often. In some cases all we can
120       do is report a warning, but this may help prevent deeper bugs from
121       going unnoticed. Closes ticket 8787.
122
123   o Minor features (bridge client):
124     - Report a more useful failure message when we can't connect to a
125       bridge because we don't have the right pluggable transport
126       configured. Resolves ticket 9665. Patch from Fábio J. Bertinatto.
127
128   o Minor features (diagnostic):
129     - Add more log messages to diagnose bug 7164, which causes
130       intermittent "microdesc_free() called but md was still referenced"
131       warnings. We now include more information, to figure out why we
132       might be cleaning a microdescriptor for being too old if it's
133       still referenced by a live node_t object.
134
135   o Minor bugfixes (logging):
136     - Warn only once we start logging in an unsafe way. Previously, we
137       complain as many times we had problems. Fix for #9870; bugfix on
138       0.2.5.1-alpha.
139     - Using the Linux seccomp2 sandbox no longer prevents stack-trace
140       logging on crashes or errors. Fixes part 11465; bugfix on
141       0.2.5.1-alpha.
142     - Only report the first fatal bootstrap error on a given OR
143       connection. This stops us from telling the controller bogus error
144       messages like "DONE". Fixes bug 10431; bugfix on 0.2.1.1-alpha.
145     - Be more helpful when trying to run sandboxed on Linux without
146       libseccomp. Instead of saying "Sandbox is not implemented on this
147       platform", we now explain that we to need be built with
148       libseccomp. Fixes bug 11543; bugfix on 0.2.5.1-alpha.
149     - Avoid generating spurious warnings when starting with
150       DisableNetwork enabled. Fixes bug 11200 and bug 10405; bugfix on
151       0.2.3.9-alpha.
152
153   o Minor bugfixes (closing channels):
154     - If write_to_buf() in connection_write_to_buf_impl_() ever fails,
155       check if it's an or_connection_t and correctly call
156       connection_or_close_for_error() rather than
157       connection_mark_for_close() directly. Fixes bug #11304; bugfix on
158       0.2.4.4-alpha.
159     - When closing all connections on setting DisableNetwork to 1, use
160       connection_or_close_normally() rather than closing OR connections
161       out from under the channel layer. Fixes bug #11306; bugfix on
162       0.2.4.4-alpha.
163
164   o Minor bugfixes (controller):
165     - Avoid sending a garbage value to the controller when a circuit is
166       cannibalized. Fixes bug 11519; bugfix on 0.2.3.11-alpha.
167
168   o Minor bugfixes (tor-fw-helper):
169     - Allow tor-fw-helper to build again by adding src/ext to its
170       CPPFLAGS. Fixes bug 11296; bugfix on 0.2.5.3-alpha.
171
172   o Minor bugfixes (bridges):
173     - Avoid potential crashes or bad behavior when launching a server-
174       side managed proxy with ORPort or ExtORPort temporarily disabled.
175       Fixes bug 9650; bugfix on 0.2.3.16-alpha.
176
177   o Minor bugfixes (misc):
178     - Don't re-initialize a second set of OpenSSL mutexes when starting
179       up. Previously, we'd make one set of mutexes, and then immediately
180       replace them with another. Fixes bug 11726; bugfix on
181       0.2.5.3-alpha.
182
183   o Minor bugfixes (platform-specific):
184     - Fix compilation on Solaris, which does not have <endian.h>. Fixes
185       bug 11426; bugfix on 0.2.5.3-alpha.
186     - When dumping a malformed directory object to disk, save it in
187       binary mode on Windows, not text mode. Fixes bug 11342; bugfix on
188       0.2.2.1-alpha.
189     - Don't report failures from make_socket_reuseable() on incoming
190       sockets on OSX: this can happen when incoming connections close
191       early. Fix for bug 10081.
192
193   o Minor bugfixes (trivial memory leaks):
194     - Fix a small memory leak when signing a directory object. Fixes bug
195       11275; bugfix on 0.2.4.13-alpha.
196     - Free placeholder entries in our circuit table at exit; fixes a
197       harmless memory leak. Fixes bug 11278; bugfix on 0.2.5.1-alpha.
198     - Resolve some memory leaks found by coverity in the unit tests, on
199       exit in tor-gencert, and on a failure to compute digests for our
200       own keys when generating a v3 networkstatus vote. These leaks
201       should never have affected anyone in practice.
202
203   o Minor bugfixes (hidden service):
204     - Only retry attempts to connect to a chosen rendezvous point 8
205       times, not 30. Fixes bug #4241; bugfix on 0.1.0.1-rc.
206
207   o Minor bugfixes (bridge client):
208     - Stop accepting bridge lines containing hostnames. Doing so would
209       cause clients to perform DNS requests on the hostnames, which was
210       not sensible behavior. Fixes bug 10801; bugfix on 0.2.0.1-alpha.
211     - Avoid a 60-second delay in the bootstrapping process when a Tor
212       client with pluggable transports re-reads its configuration at
213       just the wrong time. Re-fixes bug 11156; bugfix on 0.2.5.3-alpha.
214     - Avoid 60-second delays in the bootstrapping process when Tor is
215       launching for a second time while using bridges. Fixes bug 9229;
216       bugfix on 0.2.0.3-alpha.
217
218   o Minor bugfixes (DNS):
219     - When receiving a DNS query for an unsupported record type, reply
220       with no answer rather than with a NOTIMPL error. This behavior
221       isn't correct either, but it will break fewer client programs, we
222       hope. Fixes bug 10268; bugfix on 0.2.0.1-alpha. Original patch
223       from "epoch".
224
225   o Minor bugfixes (exit):
226     - Stop leaking memory when we successfully resolve a PTR record.
227       Fixes bug 11437; bugfix on 0.2.4.7-alpha.
228
229   o Minor bugfixes (IPv6):
230     - When using DNSPort and AutomapHostsOnResolve, respond to AAAA
231       requests with AAAA automapped answers. Fixes bug 10468; bugfix on
232       0.2.4.7-alpha.
233
234   o Documentation:
235     - Build the torify.1 manpage again. Previously, we were only trying
236       to build it when also building tor-fw-helper. That's why we didn't
237       notice that we'd broken the ability to build it. Fixes bug 11321;
238       bugfix on 0.2.5.1-alpha.
239     - Fix the layout of the SOCKSPort flags in the manpage. Fixes bug
240       11061; bugfix on 0.2.4.7-alpha.
241     - Correctly document that we search for a system torrc file before
242       looking in ~/.torrc. Fixes documentation side of 9213; bugfix on
243       0.2.3.18-rc.
244     - Resolve warnings from Doxygen.
245
246   o Code simplifications and refactoring:
247     - Removing is_internal_IP() function. Resolves ticket 4645.
248     - Remove unused function circuit_dump_by_chan from circuitlist.c.
249       Closes issue #9107; patch from "marek".
250     - Change our use of the ENUM_BF macro to avoid declarations that
251       confuse Doxygen.
252
253   o Deprecated versions:
254     - Tor 0.2.2.x has reached end-of-life; it has received no patches or
255       attention for some while. Directory authorities no longer accept
256       descriptors from relays running any version of Tor prior to Tor
257       0.2.3.16-alpha. Resolves ticket 11149.
258
259   o Testing:
260     - New macros in test.h to simplify writing mock-functions for unit
261       tests. Part of ticket 11507. Patch from Dana Koch.
262     - Complete tests for the status.c module. Resolves ticket 11507.
263       Patch from Dana Koch.
264
265   o Removed code:
266     - Remove all code for the long unused v1 directory protocol.
267       Resolves ticket 11070.
268
269
270
271 Changes in version 0.2.5.3-alpha - 2014-03-22
272   Tor 0.2.5.3-alpha includes all the fixes from 0.2.4.21. It contains
273   two new anti-DoS features for Tor relays, resolves a bug that kept
274   SOCKS5 support for IPv6 from working, fixes several annoying usability
275   issues for bridge users, and removes more old code for unused
276   directory formats.
277
278   The Tor 0.2.5.x release series is now in patch-freeze: no feature
279   patches not already written will be considered for inclusion in 0.2.5.x.
280
281   o Major features (relay security, DoS-resistance):
282     - When deciding whether we have run out of memory and we need to
283       close circuits, also consider memory allocated in buffers for
284       streams attached to each circuit.
285
286       This change, which extends an anti-DoS feature introduced in
287       0.2.4.13-alpha and improved in 0.2.4.14-alpha, lets Tor exit relays
288       better resist more memory-based DoS attacks than before. Since the
289       MaxMemInCellQueues option now applies to all queues, it is renamed
290       to MaxMemInQueues. This feature fixes bug 10169.
291     - Avoid hash-flooding denial-of-service attacks by using the secure
292       SipHash-2-4 hash function for our hashtables. Without this
293       feature, an attacker could degrade performance of a targeted
294       client or server by flooding their data structures with a large
295       number of entries to be stored at the same hash table position,
296       thereby slowing down the Tor instance. With this feature, hash
297       table positions are derived from a randomized cryptographic key,
298       and an attacker cannot predict which entries will collide. Closes
299       ticket 4900.
300     - Decrease the lower limit of MaxMemInQueues to 256 MBytes (but leave
301       the default at 8GBytes), to better support Raspberry Pi users. Fixes
302       bug 9686; bugfix on 0.2.4.14-alpha.
303
304   o Minor features (bridges, pluggable transports):
305     - Bridges now write the SHA1 digest of their identity key
306       fingerprint (that is, a hash of a hash of their public key) to
307       notice-level logs, and to a new hashed-fingerprint file. This
308       information will help bridge operators look up their bridge in
309       Globe and similar tools. Resolves ticket 10884.
310     - Improve the message that Tor displays when running as a bridge
311       using pluggable transports without an Extended ORPort listener.
312       Also, log the message in the log file too. Resolves ticket 11043.
313
314   o Minor features (other):
315     - Add a new option, PredictedPortsRelevanceTime, to control how long
316       after having received a request to connect to a given port Tor
317       will try to keep circuits ready in anticipation of future requests
318       for that port. Patch from "unixninja92"; implements ticket 9176.
319     - Generate a warning if any ports are listed in the SocksPolicy,
320       DirPolicy, AuthDirReject, AuthDirInvalid, AuthDirBadDir, or
321       AuthDirBadExit options. (These options only support address
322       ranges.) Fixes part of ticket 11108.
323     - Update geoip and geoip6 to the February 7 2014 Maxmind GeoLite2
324       Country database.
325
326   o Minor bugfixes (new since 0.2.5.2-alpha, also in 0.2.4.21):
327     - Build without warnings under clang 3.4. (We have some macros that
328       define static functions only some of which will get used later in
329       the module. Starting with clang 3.4, these give a warning unless the
330       unused attribute is set on them.) Resolves ticket 10904.
331     - Fix build warnings about missing "a2x" comment when building the
332       manpages from scratch on OpenBSD; OpenBSD calls it "a2x.py".
333       Fixes bug 10929; bugfix on 0.2.2.9-alpha. Patch from Dana Koch.
334
335   o Minor bugfixes (client):
336     - Improve the log message when we can't connect to a hidden service
337       because all of the hidden service directory nodes hosting its
338       descriptor are excluded. Improves on our fix for bug 10722, which
339       was a bugfix on 0.2.0.10-alpha.
340     - Raise a control port warning when we fail to connect to all of
341       our bridges. Previously, we didn't inform the controller, and
342       the bootstrap process would stall. Fixes bug 11069; bugfix on
343       0.2.1.2-alpha.
344     - Exit immediately when a process-owning controller exits.
345       Previously, tor relays would wait for a little while after their
346       controller exited, as if they had gotten an INT signal -- but this
347       was problematic, since there was no feedback for the user. To do a
348       clean shutdown, controllers should send an INT signal and give Tor
349       a chance to clean up. Fixes bug 10449; bugfix on 0.2.2.28-beta.
350     - Stop attempting to connect to bridges before our pluggable
351       transports are configured (harmless but resulted in some erroneous
352       log messages). Fixes bug 11156; bugfix on 0.2.3.2-alpha.
353     - Fix connections to IPv6 addresses over SOCKS5. Previously, we were
354       generating incorrect SOCKS5 responses, and confusing client
355       applications. Fixes bug 10987; bugfix on 0.2.4.7-alpha.
356
357   o Minor bugfixes (relays and bridges):
358     - Avoid crashing on a malformed resolv.conf file when running a
359       relay using Libevent 1. Fixes bug 8788; bugfix on 0.1.1.23.
360     - Non-exit relays no longer launch mock DNS requests to check for
361       DNS hijacking. This has been unnecessary since 0.2.1.7-alpha, when
362       non-exit relays stopped servicing DNS requests. Fixes bug 965;
363       bugfix on 0.2.1.7-alpha. Patch from Matt Pagan.
364     - Bridges now report complete directory request statistics. Related
365       to bug 5824; bugfix on 0.2.2.1-alpha.
366     - Bridges now never collect statistics that were designed for
367       relays. Fixes bug 5824; bugfix on 0.2.3.8-alpha.
368     - Stop giving annoying warning messages when we decide not to launch
369       a pluggable transport proxy that we don't need (because there are
370       no bridges configured to use it). Resolves ticket 5018; bugfix
371       on 0.2.5.2-alpha.
372     - Give the correct URL in the warning message when trying to run a
373       relay on an ancient version of Windows. Fixes bug 9393.
374
375   o Minor bugfixes (backtrace support):
376     - Support automatic backtraces on more platforms by using the
377       "-fasynchronous-unwind-tables" compiler option. This option is
378       needed for platforms like 32-bit Intel where "-fomit-frame-pointer"
379       is on by default and table generation is not. This doesn't yet
380       add Windows support; only Linux, OSX, and some BSDs are affected.
381       Reported by 'cypherpunks'; fixes bug 11047; bugfix on 0.2.5.2-alpha.
382     - Avoid strange behavior if two threads hit failed assertions at the
383       same time and both try to log backtraces at once. (Previously, if
384       this had happened, both threads would have stored their intermediate
385       results in the same buffer, and generated junk outputs.) Reported by
386       "cypherpunks". Fixes bug 11048; bugfix on 0.2.5.2-alpha.
387     - Fix a compiler warning in format_number_sigsafe(). Bugfix on
388       0.2.5.2-alpha; patch from Nick Hopper.
389
390   o Minor bugfixes (unit tests):
391     - Fix a small bug in the unit tests that might have made the tests
392       call 'chmod' with an uninitialized bitmask. Fixes bug 10928;
393       bugfix on 0.2.5.1-alpha. Patch from Dana Koch.
394
395   o Removed code:
396     - Remove all remaining code related to version-0 hidden service
397       descriptors: they have not been in use since 0.2.2.1-alpha. Fixes
398       the rest of bug 10841.
399
400   o Documentation:
401     - Document in the manpage that "KBytes" may also be written as
402       "kilobytes" or "KB", that "Kbits" may also be written as
403       "kilobits", and so forth. Closes ticket 9222.
404     - Document that the ClientOnly config option overrides ORPort.
405       Our old explanation made ClientOnly sound as though it did
406       nothing at all. Resolves bug 9059.
407     - Explain that SocksPolicy, DirPolicy, and similar options don't
408       take port arguments. Fixes the other part of ticket 11108.
409     - Fix a comment about the rend_server_descriptor_t.protocols field
410       to more accurately describe its range. Also, make that field
411       unsigned, to more accurately reflect its usage. Fixes bug 9099;
412       bugfix on 0.2.1.5-alpha.
413     - Fix the manpage's description of HiddenServiceAuthorizeClient:
414       the maximum client name length is 16, not 19. Fixes bug 11118;
415       bugfix on 0.2.1.6-alpha.
416
417   o Code simplifications and refactoring:
418     - Get rid of router->address, since in all cases it was just the
419       string representation of router->addr. Resolves ticket 5528.
420
421   o Test infrastructure:
422     - Update to the latest version of tinytest.
423     - Improve the tinytest implementation of string operation tests so
424       that comparisons with NULL strings no longer crash the tests; they
425       now just fail, normally. Fixes bug 9004; bugfix on 0.2.2.4-alpha.
426
427
428 Changes in version 0.2.4.21 - 2014-02-28
429   Tor 0.2.4.21 further improves security against potential adversaries who
430   find breaking 1024-bit crypto doable, and backports several stability
431   and robustness patches from the 0.2.5 branch.
432
433   o Major features (client security):
434     - When we choose a path for a 3-hop circuit, make sure it contains
435       at least one relay that supports the NTor circuit extension
436       handshake. Otherwise, there is a chance that we're building
437       a circuit that's worth attacking by an adversary who finds
438       breaking 1024-bit crypto doable, and that chance changes the game
439       theory. Implements ticket 9777.
440
441   o Major bugfixes:
442     - Do not treat streams that fail with reason
443       END_STREAM_REASON_INTERNAL as indicating a definite circuit failure,
444       since it could also indicate an ENETUNREACH connection error. Fixes
445       part of bug 10777; bugfix on 0.2.4.8-alpha.
446
447   o Code simplification and refactoring:
448     - Remove data structures which were introduced to implement the
449       CellStatistics option: they are now redundant with the new timestamp
450       field in the regular packed_cell_t data structure, which we did
451       in 0.2.4.18-rc in order to resolve bug 9093. Resolves ticket 10870.
452
453   o Minor features:
454     - Always clear OpenSSL bignums before freeing them -- even bignums
455       that don't contain secrets. Resolves ticket 10793. Patch by
456       Florent Daigniere.
457     - Build without warnings under clang 3.4. (We have some macros that
458       define static functions only some of which will get used later in
459       the module. Starting with clang 3.4, these give a warning unless the
460       unused attribute is set on them.) Resolves ticket 10904.
461     - Update geoip and geoip6 files to the February 7 2014 Maxmind
462       GeoLite2 Country database.
463
464   o Minor bugfixes:
465     - Set the listen() backlog limit to the largest actually supported
466       on the system, not to the value in a header file. Fixes bug 9716;
467       bugfix on every released Tor.
468     - Treat ENETUNREACH, EACCES, and EPERM connection failures at an
469       exit node as a NOROUTE error, not an INTERNAL error, since they
470       can apparently happen when trying to connect to the wrong sort
471       of netblocks. Fixes part of bug 10777; bugfix on 0.1.0.1-rc.
472     - Fix build warnings about missing "a2x" comment when building the
473       manpages from scratch on OpenBSD; OpenBSD calls it "a2x.py".
474       Fixes bug 10929; bugfix on 0.2.2.9-alpha. Patch from Dana Koch.
475     - Avoid a segfault on SIGUSR1, where we had freed a connection but did
476       not entirely remove it from the connection lists. Fixes bug 9602;
477       bugfix on 0.2.4.4-alpha.
478     - Fix a segmentation fault in our benchmark code when running with
479       Fedora's OpenSSL package, or any other OpenSSL that provides
480       ECDH but not P224. Fixes bug 10835; bugfix on 0.2.4.8-alpha.
481     - Turn "circuit handshake stats since last time" log messages into a
482       heartbeat message. Fixes bug 10485; bugfix on 0.2.4.17-rc.
483
484   o Documentation fixes:
485     - Document that all but one DirPort entry must have the NoAdvertise
486       flag set. Fixes bug 10470; bugfix on 0.2.3.3-alpha / 0.2.3.16-alpha.
487
488
489 Changes in version 0.2.5.2-alpha - 2014-02-13
490   Tor 0.2.5.2-alpha includes all the fixes from 0.2.4.18-rc and 0.2.4.20,
491   like the "poor random number generation" fix and the "building too many
492   circuits" fix. It also further improves security against potential
493   adversaries who find breaking 1024-bit crypto doable, and launches
494   pluggable transports on demand (which gets us closer to integrating
495   pluggable transport support by default -- not to be confused with Tor
496   bundles enabling pluggable transports and bridges by default).
497
498   o Major features (client security):
499     - When we choose a path for a 3-hop circuit, make sure it contains
500       at least one relay that supports the NTor circuit extension
501       handshake. Otherwise, there is a chance that we're building
502       a circuit that's worth attacking by an adversary who finds
503       breaking 1024-bit crypto doable, and that chance changes the game
504       theory. Implements ticket 9777.
505     - Clients now look at the "usecreatefast" consensus parameter to
506       decide whether to use CREATE_FAST or CREATE cells for the first hop
507       of their circuit. This approach can improve security on connections
508       where Tor's circuit handshake is stronger than the available TLS
509       connection security levels, but the tradeoff is more computational
510       load on guard relays. Implements proposal 221. Resolves ticket 9386.
511
512   o Major features (bridges):
513     - Don't launch pluggable transport proxies if we don't have any
514       bridges configured that would use them. Now we can list many
515       pluggable transports, and Tor will dynamically start one when it
516       hears a bridge address that needs it. Resolves ticket 5018.
517     - The bridge directory authority now assigns status flags (Stable,
518       Guard, etc) to bridges based on thresholds calculated over all
519       Running bridges. Now bridgedb can finally make use of its features
520       to e.g. include at least one Stable bridge in its answers. Fixes
521       bug 9859.
522
523   o Major features (other):
524     - Extend ORCONN controller event to include an "ID" parameter,
525       and add four new controller event types CONN_BW, CIRC_BW,
526       CELL_STATS, and TB_EMPTY that show connection and circuit usage.
527       The new events are emitted in private Tor networks only, with the
528       goal of being able to better track performance and load during
529       full-network simulations. Implements proposal 218 and ticket 7359.
530     - On some platforms (currently: recent OSX versions, glibc-based
531       platforms that support the ELF format, and a few other
532       Unix-like operating systems), Tor can now dump stack traces
533       when a crash occurs or an assertion fails. By default, traces
534       are dumped to stderr (if possible) and to any logs that are
535       reporting errors. Implements ticket 9299.
536
537   o Major bugfixes:
538     - Avoid a segfault on SIGUSR1, where we had freed a connection but did
539       not entirely remove it from the connection lists. Fixes bug 9602;
540       bugfix on 0.2.4.4-alpha.
541     - Do not treat streams that fail with reason
542       END_STREAM_REASON_INTERNAL as indicating a definite circuit failure,
543       since it could also indicate an ENETUNREACH connection error. Fixes
544       part of bug 10777; bugfix on 0.2.4.8-alpha.
545
546   o Major bugfixes (new since 0.2.5.1-alpha, also in 0.2.4.20):
547     - Do not allow OpenSSL engines to replace the PRNG, even when
548       HardwareAccel is set. The only default builtin PRNG engine uses
549       the Intel RDRAND instruction to replace the entire PRNG, and
550       ignores all attempts to seed it with more entropy. That's
551       cryptographically stupid: the right response to a new alleged
552       entropy source is never to discard all previously used entropy
553       sources. Fixes bug 10402; works around behavior introduced in
554       OpenSSL 1.0.0. Diagnosis and investigation thanks to "coderman"
555       and "rl1987".
556     - Fix assertion failure when AutomapHostsOnResolve yields an IPv6
557       address. Fixes bug 10465; bugfix on 0.2.4.7-alpha.
558     - Avoid launching spurious extra circuits when a stream is pending.
559       This fixes a bug where any circuit that _wasn't_ unusable for new
560       streams would be treated as if it were, causing extra circuits to
561       be launched. Fixes bug 10456; bugfix on 0.2.4.12-alpha.
562
563   o Major bugfixes (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
564     - No longer stop reading or writing on cpuworker connections when
565       our rate limiting buckets go empty. Now we should handle circuit
566       handshake requests more promptly. Resolves bug 9731.
567     - Stop trying to bootstrap all our directory information from
568       only our first guard. Discovered while fixing bug 9946; bugfix
569       on 0.2.4.8-alpha.
570
571   o Minor features (bridges, pluggable transports):
572     - Add threshold cutoffs to the networkstatus document created by
573       the Bridge Authority. Fixes bug 1117.
574     - On Windows, spawn background processes using the CREATE_NO_WINDOW
575       flag. Now Tor Browser Bundle 3.5 with pluggable transports enabled
576       doesn't pop up a blank console window. (In Tor Browser Bundle 2.x,
577       Vidalia set this option for us.) Implements ticket 10297.
578
579   o Minor features (security):
580     - Always clear OpenSSL bignums before freeing them -- even bignums
581       that don't contain secrets. Resolves ticket 10793. Patch by
582       Florent Daignière.
583
584   o Minor features (config options and command line):
585     - Add an --allow-missing-torrc commandline option that tells Tor to
586       run even if the configuration file specified by -f is not available.
587       Implements ticket 10060.
588     - Add support for the TPROXY transparent proxying facility on Linux.
589       See documentation for the new TransProxyType option for more
590       details. Implementation by "thomo". Closes ticket 10582.
591
592   o Minor features (controller):
593     - Add a new "HS_DESC" controller event that reports activities
594       related to hidden service descriptors. Resolves ticket 8510.
595     - New "DROPGUARDS" controller command to forget all current entry
596       guards. Not recommended for ordinary use, since replacing guards
597       too frequently makes several attacks easier. Resolves ticket 9934;
598       patch from "ra".
599
600   o Minor features (build):
601     - Assume that a user using ./configure --host wants to cross-compile,
602       and give an error if we cannot find a properly named
603       tool-chain. Add a --disable-tool-name-check option to proceed
604       nevertheless. Addresses ticket 9869. Patch by Benedikt Gollatz.
605     - If we run ./configure and the compiler recognizes -fstack-protector
606       but the linker rejects it, warn the user about a potentially missing
607       libssp package. Addresses ticket 9948. Patch from Benedikt Gollatz.
608
609   o Minor features (testing):
610     - If Python is installed, "make check" now runs extra tests beyond
611       the unit test scripts.
612     - When bootstrapping a test network, sometimes very few relays get
613       the Guard flag. Now a new option "TestingDirAuthVoteGuard" can
614       specify a set of relays which should be voted Guard regardless of
615       their uptime or bandwidth. Addresses ticket 9206.
616
617   o Minor features (log messages):
618     - When ServerTransportPlugin is set on a bridge, Tor can write more
619       useful statistics about bridge use in its extrainfo descriptors,
620       but only if the Extended ORPort ("ExtORPort") is set too. Add a
621       log message to inform the user in this case. Resolves ticket 9651.
622     - When receiving a new controller connection, log the origin address.
623       Resolves ticket 9698; patch from "sigpipe".
624     - When logging OpenSSL engine status at startup, log the status of
625       more engines. Fixes ticket 10043; patch from Joshua Datko.
626     - Turn "circuit handshake stats since last time" log messages into a
627       heartbeat message. Fixes bug 10485; bugfix on 0.2.4.17-rc.
628
629   o Minor features (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
630     - Improve the circuit queue out-of-memory handler. Previously, when
631       we ran low on memory, we'd close whichever circuits had the most
632       queued cells. Now, we close those that have the *oldest* queued
633       cells, on the theory that those are most responsible for us
634       running low on memory. Based on analysis from a forthcoming paper
635       by Jansen, Tschorsch, Johnson, and Scheuermann. Fixes bug 9093.
636     - Generate bootstrapping status update events correctly when fetching
637       microdescriptors. Fixes bug 9927.
638     - Update to the October 2 2013 Maxmind GeoLite Country database.
639
640   o Minor bugfixes (clients):
641     - When closing a channel that has already been open, do not close
642       pending circuits that were waiting to connect to the same relay.
643       Fixes bug 9880; bugfix on 0.2.5.1-alpha. Thanks to skruffy for
644       finding this bug.
645
646   o Minor bugfixes (relays):
647     - Treat ENETUNREACH, EACCES, and EPERM connection failures at an
648       exit node as a NOROUTE error, not an INTERNAL error, since they
649       can apparently happen when trying to connect to the wrong sort
650       of netblocks. Fixes part of bug 10777; bugfix on 0.1.0.1-rc.
651
652   o Minor bugfixes (bridges):
653     - Fix a bug where the first connection works to a bridge that uses a
654       pluggable transport with client-side parameters, but we don't send
655       the client-side parameters on subsequent connections. (We don't
656       use any pluggable transports with client-side parameters yet,
657       but ScrambleSuit will soon become the first one.) Fixes bug 9162;
658       bugfix on 0.2.0.3-alpha. Based on a patch from "rl1987".
659
660   o Minor bugfixes (node selection):
661     - If ExcludeNodes is set, consider non-excluded hidden service
662       directory servers before excluded ones. Do not consider excluded
663       hidden service directory servers at all if StrictNodes is
664       set. (Previously, we would sometimes decide to connect to those
665       servers, and then realize before we initiated a connection that
666       we had excluded them.) Fixes bug 10722; bugfix on 0.2.0.10-alpha.
667       Reported by "mr-4".
668     - If we set the ExitNodes option but it doesn't include any nodes
669       that have the Exit flag, we would choose not to bootstrap. Now we
670       bootstrap so long as ExitNodes includes nodes which can exit to
671       some port. Fixes bug 10543; bugfix on 0.2.4.10-alpha.
672
673   o Minor bugfixes (controller and command-line):
674     - If changing a config option via "setconf" fails in a recoverable
675       way, we used to nonetheless write our new control ports to the
676       file described by the "ControlPortWriteToFile" option. Now we only
677       write out that file if we successfully switch to the new config
678       option. Fixes bug 5605; bugfix on 0.2.2.26-beta. Patch from "Ryman".
679     - When a command-line option such as --version or --help that
680       ordinarily implies --hush appears on the command line along with
681       --quiet, then actually obey --quiet. Previously, we obeyed --quiet
682       only if it appeared later on the command line. Fixes bug 9578;
683       bugfix on 0.2.5.1-alpha.
684
685   o Minor bugfixes (code correctness):
686     - Previously we used two temporary files when writing descriptors to
687       disk; now we only use one. Fixes bug 1376.
688     - Remove an erroneous (but impossible and thus harmless) pointer
689       comparison that would have allowed compilers to skip a bounds
690       check in channeltls.c. Fixes bugs 10313 and 9980; bugfix on
691       0.2.0.10-alpha. Noticed by Jared L Wong and David Fifield.
692     - Fix an always-true assertion in pluggable transports code so it
693       actually checks what it was trying to check. Fixes bug 10046;
694       bugfix on 0.2.3.9-alpha. Found by "dcb".
695
696   o Minor bugfixes (protocol correctness):
697     - When receiving a VERSIONS cell with an odd number of bytes, close
698       the connection immediately since the cell is malformed. Fixes bug
699       10365; bugfix on 0.2.0.10-alpha. Spotted by "bobnomnom"; fix by
700       "rl1987".
701
702   o Minor bugfixes (build):
703     - Restore the ability to compile Tor with V2_HANDSHAKE_SERVER
704       turned off (that is, without support for v2 link handshakes). Fixes
705       bug 4677; bugfix on 0.2.3.2-alpha. Patch from "piet".
706     - Fix compilation warnings and startup issues when running with
707       "Sandbox 1" and libseccomp-2.1.0. Fixes bug 10563; bugfix on
708       0.2.5.1-alpha.
709     - Fix compilation on Solaris 9, which didn't like us having an
710       identifier named "sun". Fixes bug 10565; bugfix in 0.2.5.1-alpha.
711
712   o Minor bugfixes (testing):
713     - Fix a segmentation fault in our benchmark code when running with
714       Fedora's OpenSSL package, or any other OpenSSL that provides
715       ECDH but not P224. Fixes bug 10835; bugfix on 0.2.4.8-alpha.
716
717   o Minor bugfixes (log messages):
718     - Fix a bug where clients using bridges would report themselves
719       as 50% bootstrapped even without a live consensus document.
720       Fixes bug 9922; bugfix on 0.2.1.1-alpha.
721     - Suppress a warning where, if there's only one directory authority
722       in the network, we would complain that votes and signatures cannot
723       be uploaded to other directory authorities. Fixes bug 10842;
724       bugfix on 0.2.2.26-beta.
725     - Report bootstrapping progress correctly when we're downloading
726       microdescriptors. We had updated our "do we have enough microdescs
727       to begin building circuits?" logic most recently in 0.2.4.10-alpha
728       (see bug 5956), but we left the bootstrap status event logic at
729       "how far through getting 1/4 of them are we?" Fixes bug 9958;
730       bugfix on 0.2.2.36, which is where they diverged (see bug 5343).
731
732   o Minor bugfixes (new since 0.2.5.1-alpha, also in 0.2.4.20):
733     - Avoid a crash bug when starting with a corrupted microdescriptor
734       cache file. Fixes bug 10406; bugfix on 0.2.2.6-alpha.
735     - If we fail to dump a previously cached microdescriptor to disk, avoid
736       freeing duplicate data later on. Fixes bug 10423; bugfix on
737       0.2.4.13-alpha. Spotted by "bobnomnom".
738
739   o Minor bugfixes on 0.2.4.x (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
740     - Correctly log long IPv6 exit policies, instead of truncating them
741       or reporting an error. Fixes bug 9596; bugfix on 0.2.4.7-alpha.
742     - Our default TLS ecdhe groups were backwards: we meant to be using
743       P224 for relays (for performance win) and P256 for bridges (since
744       it is more common in the wild). Instead we had it backwards. After
745       reconsideration, we decided that the default should be P256 on all
746       hosts, since its security is probably better, and since P224 is
747       reportedly used quite little in the wild.  Found by "skruffy" on
748       IRC. Fix for bug 9780; bugfix on 0.2.4.8-alpha.
749     - Free directory authority certificate download statuses on exit
750       rather than leaking them. Fixes bug 9644; bugfix on 0.2.4.13-alpha.
751
752   o Minor bugfixes on 0.2.3.x (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
753     - If the guard we choose first doesn't answer, we would try the
754       second guard, but once we connected to the second guard we would
755       abandon it and retry the first one, slowing down bootstrapping.
756       The fix is to treat all our initially chosen guards as acceptable
757       to use. Fixes bug 9946; bugfix on 0.1.1.11-alpha.
758     - Fix an assertion failure that would occur when disabling the
759       ORPort setting on a running Tor process while accounting was
760       enabled. Fixes bug 6979; bugfix on 0.2.2.18-alpha.
761     - When examining the list of network interfaces to find our address,
762       do not consider non-running or disabled network interfaces. Fixes
763       bug 9904; bugfix on 0.2.3.11-alpha. Patch from "hantwister".
764     - Avoid an off-by-one error when checking buffer boundaries when
765       formatting the exit status of a pluggable transport helper.
766       This is probably not an exploitable bug, but better safe than
767       sorry. Fixes bug 9928; bugfix on 0.2.3.18-rc. Bug found by
768       Pedro Ribeiro.
769
770   o Removed code and features:
771     - Clients now reject any directory authority certificates lacking
772       a dir-key-crosscert element. These have been included since
773       0.2.1.9-alpha, so there's no real reason for them to be optional
774       any longer. Completes proposal 157. Resolves ticket 10162.
775     - Remove all code that existed to support the v2 directory system,
776       since there are no longer any v2 directory authorities. Resolves
777       ticket 10758.
778     - Remove the HSAuthoritativeDir and AlternateHSAuthority torrc
779       options, which were used for designating authorities as "Hidden
780       service authorities". There has been no use of hidden service
781       authorities since 0.2.2.1-alpha, when we stopped uploading or
782       downloading v0 hidden service descriptors. Fixes bug 10881; also
783       part of a fix for bug 10841.
784
785   o Code simplification and refactoring:
786     - Remove some old fallback code designed to keep Tor clients working
787       in a network with only two working relays. Elsewhere in the code we
788       have long since stopped supporting such networks, so there wasn't
789       much point in keeping it around. Addresses ticket 9926.
790     - Reject 0-length EXTEND2 cells more explicitly. Fixes bug 10536;
791       bugfix on 0.2.4.8-alpha. Reported by "cypherpunks".
792     - Remove data structures which were introduced to implement the
793       CellStatistics option: they are now redundant with the addition
794       of a timestamp to the regular packed_cell_t data structure, which
795       we did in 0.2.4.18-rc in order to resolve ticket 9093. Implements
796       ticket 10870.
797
798   o Documentation (man page) fixes:
799     - Update manpage to describe some of the files you can expect to
800       find in Tor's DataDirectory. Addresses ticket 9839.
801     - Document that all but one DirPort entry must have the NoAdvertise
802       flag set. Fixes bug 10470; bugfix on 0.2.3.3-alpha / 0.2.3.16-alpha.
803
804   o Documentation fixes (new since 0.2.5.1-alpha, also in 0.2.4.18-rc):
805     - Clarify the usage and risks of setting the ContactInfo torrc line
806       for your relay or bridge. Resolves ticket 9854.
807     - Add anchors to the manpage so we can link to the html version of
808       the documentation for specific options. Resolves ticket 9866.
809     - Replace remaining references to DirServer in man page and
810       log entries. Resolves ticket 10124.
811
812   o Tool changes:
813     - Make the "tor-gencert" tool used by directory authority operators
814       create 2048-bit signing keys by default (rather than 1024-bit, since
815       1024-bit is uncomfortably small these days). Addresses ticket 10324.
816
817
818 Changes in version 0.2.4.20 - 2013-12-22
819   Tor 0.2.4.20 fixes potentially poor random number generation for users
820   who 1) use OpenSSL 1.0.0 or later, 2) set "HardwareAccel 1" in their
821   torrc file, 3) have "Sandy Bridge" or "Ivy Bridge" Intel processors,
822   and 4) have no state file in their DataDirectory (as would happen on
823   first start). Users who generated relay or hidden service identity
824   keys in such a situation should discard them and generate new ones.
825
826   This release also fixes a logic error that caused Tor clients to build
827   many more preemptive circuits than they actually need.
828
829   o Major bugfixes:
830     - Do not allow OpenSSL engines to replace the PRNG, even when
831       HardwareAccel is set. The only default builtin PRNG engine uses
832       the Intel RDRAND instruction to replace the entire PRNG, and
833       ignores all attempts to seed it with more entropy. That's
834       cryptographically stupid: the right response to a new alleged
835       entropy source is never to discard all previously used entropy
836       sources. Fixes bug 10402; works around behavior introduced in
837       OpenSSL 1.0.0. Diagnosis and investigation thanks to "coderman"
838       and "rl1987".
839     - Fix assertion failure when AutomapHostsOnResolve yields an IPv6
840       address. Fixes bug 10465; bugfix on 0.2.4.7-alpha.
841     - Avoid launching spurious extra circuits when a stream is pending.
842       This fixes a bug where any circuit that _wasn't_ unusable for new
843       streams would be treated as if it were, causing extra circuits to
844       be launched. Fixes bug 10456; bugfix on 0.2.4.12-alpha.
845
846   o Minor bugfixes:
847     - Avoid a crash bug when starting with a corrupted microdescriptor
848       cache file. Fixes bug 10406; bugfix on 0.2.2.6-alpha.
849     - If we fail to dump a previously cached microdescriptor to disk, avoid
850       freeing duplicate data later on. Fixes bug 10423; bugfix on
851       0.2.4.13-alpha. Spotted by "bobnomnom".
852
853
854 Changes in version 0.2.4.19 - 2013-12-11
855   The Tor 0.2.4 release series is dedicated to the memory of Aaron Swartz
856   (1986-2013). Aaron worked on diverse projects including helping to guide
857   Creative Commons, playing a key role in stopping SOPA/PIPA, bringing
858   transparency to the U.S government's PACER documents, and contributing
859   design and development for Tor and Tor2Web. Aaron was one of the latest
860   martyrs in our collective fight for civil liberties and human rights,
861   and his death is all the more painful because he was one of us.
862
863   Tor 0.2.4.19, the first stable release in the 0.2.4 branch, features
864   a new circuit handshake and link encryption that use ECC to provide
865   better security and efficiency; makes relays better manage circuit
866   creation requests; uses "directory guards" to reduce client enumeration
867   risks; makes bridges collect and report statistics about the pluggable
868   transports they support; cleans up and improves our geoip database;
869   gets much closer to IPv6 support for clients, bridges, and relays; makes
870   directory authorities use measured bandwidths rather than advertised
871   ones when computing flags and thresholds; disables client-side DNS
872   caching to reduce tracking risks; and fixes a big bug in bridge
873   reachability testing. This release introduces two new design
874   abstractions in the code: a new "channel" abstraction between circuits
875   and or_connections to allow for implementing alternate relay-to-relay
876   transports, and a new "circuitmux" abstraction storing the queue of
877   circuits for a channel. The release also includes many stability,
878   security, and privacy fixes.
879
880
881 Changes in version 0.2.4.18-rc - 2013-11-16
882   Tor 0.2.4.18-rc is the fourth release candidate for the Tor 0.2.4.x
883   series. It takes a variety of fixes from the 0.2.5.x branch to improve
884   stability, performance, and better handling of edge cases.
885
886   o Major features:
887     - Re-enable TLS 1.1 and 1.2 when built with OpenSSL 1.0.1e or later.
888       Resolves ticket 6055. (OpenSSL before 1.0.1 didn't have TLS 1.1 or
889       1.2, and OpenSSL from 1.0.1 through 1.0.1d had bugs that prevented
890       renegotiation from working with TLS 1.1 or 1.2, so we had disabled
891       them to solve bug 6033.)
892
893   o Major bugfixes:
894     - No longer stop reading or writing on cpuworker connections when
895       our rate limiting buckets go empty. Now we should handle circuit
896       handshake requests more promptly. Resolves bug 9731.
897     - If we are unable to save a microdescriptor to the journal, do not
898       drop it from memory and then reattempt downloading it. Fixes bug
899       9645; bugfix on 0.2.2.6-alpha.
900     - Stop trying to bootstrap all our directory information from
901       only our first guard. Discovered while fixing bug 9946; bugfix
902       on 0.2.4.8-alpha.
903     - The new channel code sometimes lost track of in-progress circuits,
904       causing long-running clients to stop building new circuits. The
905       fix is to always call circuit_n_chan_done(chan, 0) from
906       channel_closed(). Fixes bug 9776; bugfix on 0.2.4.17-rc.
907
908   o Minor bugfixes (on 0.2.4.x):
909     - Correctly log long IPv6 exit policies, instead of truncating them
910       or reporting an error. Fixes bug 9596; bugfix on 0.2.4.7-alpha.
911     - Our default TLS ecdhe groups were backwards: we meant to be using
912       P224 for relays (for performance win) and P256 for bridges (since
913       it is more common in the wild). Instead we had it backwards. After
914       reconsideration, we decided that the default should be P256 on all
915       hosts, since its security is probably better, and since P224 is
916       reportedly used quite little in the wild.  Found by "skruffy" on
917       IRC. Fix for bug 9780; bugfix on 0.2.4.8-alpha.
918     - Free directory authority certificate download statuses on exit
919       rather than leaking them. Fixes bug 9644; bugfix on 0.2.4.13-alpha.
920
921   o Minor bugfixes (on 0.2.3.x and earlier):
922     - If the guard we choose first doesn't answer, we would try the
923       second guard, but once we connected to the second guard we would
924       abandon it and retry the first one, slowing down bootstrapping.
925       The fix is to treat all our initially chosen guards as acceptable
926       to use. Fixes bug 9946; bugfix on 0.1.1.11-alpha.
927     - Fix an assertion failure that would occur when disabling the
928       ORPort setting on a running Tor process while accounting was
929       enabled. Fixes bug 6979; bugfix on 0.2.2.18-alpha.
930     - When examining the list of network interfaces to find our address,
931       do not consider non-running or disabled network interfaces. Fixes
932       bug 9904; bugfix on 0.2.3.11-alpha. Patch from "hantwister".
933     - Avoid an off-by-one error when checking buffer boundaries when
934       formatting the exit status of a pluggable transport helper.
935       This is probably not an exploitable bug, but better safe than
936       sorry. Fixes bug 9928; bugfix on 0.2.3.18-rc. Bug found by
937       Pedro Ribeiro.
938
939   o Minor features (protecting client timestamps):
940     - Clients no longer send timestamps in their NETINFO cells. These were
941       not used for anything, and they provided one small way for clients
942       to be distinguished from each other as they moved from network to
943       network or behind NAT. Implements part of proposal 222.
944     - Clients now round timestamps in INTRODUCE cells down to the nearest
945       10 minutes. If a new Support022HiddenServices option is set to 0, or
946       if it's set to "auto" and the feature is disabled in the consensus,
947       the timestamp is sent as 0 instead. Implements part of proposal 222.
948     - Stop sending timestamps in AUTHENTICATE cells. This is not such
949       a big deal from a security point of view, but it achieves no actual
950       good purpose, and isn't needed. Implements part of proposal 222.
951     - Reduce down accuracy of timestamps in hidden service descriptors.
952       Implements part of proposal 222.
953
954   o Minor features (other):
955     - Improve the circuit queue out-of-memory handler. Previously, when
956       we ran low on memory, we'd close whichever circuits had the most
957       queued cells. Now, we close those that have the *oldest* queued
958       cells, on the theory that those are most responsible for us
959       running low on memory. Based on analysis from a forthcoming paper
960       by Jansen, Tschorsch, Johnson, and Scheuermann. Fixes bug 9093.
961     - Generate bootstrapping status update events correctly when fetching
962       microdescriptors. Fixes bug 9927.
963     - Update to the October 2 2013 Maxmind GeoLite Country database.
964
965   o Documentation fixes:
966     - Clarify the usage and risks of setting the ContactInfo torrc line
967       for your relay or bridge. Resolves ticket 9854.
968     - Add anchors to the manpage so we can link to the html version of
969       the documentation for specific options. Resolves ticket 9866.
970     - Replace remaining references to DirServer in man page and
971       log entries. Resolves ticket 10124.
972
973
974 Changes in version 0.2.5.1-alpha - 2013-10-02
975   Tor 0.2.5.1-alpha introduces experimental support for syscall sandboxing
976   on Linux, allows bridges that offer pluggable transports to report usage
977   statistics, fixes many issues to make testing easier, and provides
978   a pile of minor features and bugfixes that have been waiting for a
979   release of the new branch.
980
981   This is the first alpha release in a new series, so expect there to
982   be bugs. Users who would rather test out a more stable branch should
983   stay with 0.2.4.x for now.
984
985   o Major features (security):
986     - Use the seccomp2 syscall filtering facility on Linux to limit
987       which system calls Tor can invoke. This is an experimental,
988       Linux-only feature to provide defense-in-depth against unknown
989       attacks. To try turning it on, set "Sandbox 1" in your torrc
990       file. Please be ready to report bugs. We hope to add support
991       for better sandboxing in the future, including more fine-grained
992       filters, better division of responsibility, and support for more
993       platforms. This work has been done by Cristian-Matei Toader for
994       Google Summer of Code.
995     - Re-enable TLS 1.1 and 1.2 when built with OpenSSL 1.0.1e or later.
996       Resolves ticket 6055. (OpenSSL before 1.0.1 didn't have TLS 1.1 or
997       1.2, and OpenSSL from 1.0.1 through 1.0.1d had bugs that prevented
998       renegotiation from working with TLS 1.1 or 1.2, so we had disabled
999       them to solve bug 6033.)
1000
1001   o Major features (other):
1002     - Add support for passing arguments to managed pluggable transport
1003       proxies. Implements ticket 3594.
1004     - Bridges now track GeoIP information and the number of their users
1005       even when pluggable transports are in use, and report usage
1006       statistics in their extra-info descriptors. Resolves tickets 4773
1007       and 5040.
1008     - Make testing Tor networks bootstrap better: lower directory fetch
1009       retry schedules and maximum interval without directory requests,
1010       and raise maximum download tries. Implements ticket 6752.
1011     - Add make target 'test-network' to run tests on a Chutney network.
1012       Implements ticket 8530.
1013     - The ntor handshake is now on-by-default, no matter what the
1014       directory authorities recommend. Implements ticket 8561.
1015
1016   o Major bugfixes:
1017     - Instead of writing destroy cells directly to outgoing connection
1018       buffers, queue them and intersperse them with other outgoing cells.
1019       This can prevent a set of resource starvation conditions where too
1020       many pending destroy cells prevent data cells from actually getting
1021       delivered. Reported by "oftc_must_be_destroyed". Fixes bug 7912;
1022       bugfix on 0.2.0.1-alpha.
1023     - If we are unable to save a microdescriptor to the journal, do not
1024       drop it from memory and then reattempt downloading it. Fixes bug
1025       9645; bugfix on 0.2.2.6-alpha.
1026     - The new channel code sometimes lost track of in-progress circuits,
1027       causing long-running clients to stop building new circuits. The
1028       fix is to always call circuit_n_chan_done(chan, 0) from
1029       channel_closed(). Fixes bug 9776; bugfix on 0.2.4.17-rc.
1030
1031   o Build features:
1032     - Tor now builds each source file in two modes: a mode that avoids
1033       exposing identifiers needlessly, and another mode that exposes
1034       more identifiers for testing. This lets the compiler do better at
1035       optimizing the production code, while enabling us to take more
1036       radical measures to let the unit tests test things.
1037     - The production builds no longer include functions used only in
1038       the unit tests; all functions exposed from a module only for
1039       unit-testing are now static in production builds.
1040     - Add an --enable-coverage configuration option to make the unit
1041       tests (and a new src/or/tor-cov target) to build with gcov test
1042       coverage support.
1043
1044   o Testing:
1045     - We now have rudimentary function mocking support that our unit
1046       tests can use to test functions in isolation. Function mocking
1047       lets the tests temporarily replace a function's dependencies with
1048       stub functions, so that the tests can check the function without
1049       invoking the other functions it calls.
1050     - Add more unit tests for the <circid,channel>->circuit map, and
1051       the destroy-cell-tracking code to fix bug 7912.
1052     - Unit tests for failing cases of the TAP onion handshake.
1053     - More unit tests for address-manipulation functions.
1054
1055   o Minor features (protecting client timestamps):
1056     - Clients no longer send timestamps in their NETINFO cells. These were
1057       not used for anything, and they provided one small way for clients
1058       to be distinguished from each other as they moved from network to
1059       network or behind NAT. Implements part of proposal 222.
1060     - Clients now round timestamps in INTRODUCE cells down to the nearest
1061       10 minutes. If a new Support022HiddenServices option is set to 0, or
1062       if it's set to "auto" and the feature is disabled in the consensus,
1063       the timestamp is sent as 0 instead. Implements part of proposal 222.
1064     - Stop sending timestamps in AUTHENTICATE cells. This is not such
1065       a big deal from a security point of view, but it achieves no actual
1066       good purpose, and isn't needed. Implements part of proposal 222.
1067     - Reduce down accuracy of timestamps in hidden service descriptors.
1068       Implements part of proposal 222.
1069
1070   o Minor features (config options):
1071     - Config (torrc) lines now handle fingerprints which are missing
1072       their initial '$'. Resolves ticket 4341; improvement over 0.0.9pre5.
1073     - Support a --dump-config option to print some or all of the
1074       configured options. Mainly useful for debugging the command-line
1075       option parsing code. Helps resolve ticket 4647.
1076     - Raise awareness of safer logging: notify user of potentially
1077       unsafe config options, like logging more verbosely than severity
1078       "notice" or setting SafeLogging to 0. Resolves ticket 5584.
1079     - Add a new configuration option TestingV3AuthVotingStartOffset
1080       that bootstraps a network faster by changing the timing for
1081       consensus votes. Addresses ticket 8532.
1082     - Add a new torrc option "ServerTransportOptions" that allows
1083       bridge operators to pass configuration parameters to their
1084       pluggable transports. Resolves ticket 8929.
1085     - The config (torrc) file now accepts bandwidth and space limits in
1086       bits as well as bytes. (Anywhere that you can say "2 Kilobytes",
1087       you can now say "16 kilobits", and so on.) Resolves ticket 9214.
1088       Patch by CharlieB.
1089
1090   o Minor features (build):
1091     - Add support for `--library-versions` flag. Implements ticket 6384.
1092     - Return the "unexpected sendme" warnings to a warn severity, but make
1093       them rate limited, to help diagnose ticket 8093.
1094     - Detect a missing asciidoc, and warn the user about it, during
1095       configure rather than at build time. Fixes issue 6506. Patch from
1096       Arlo Breault.
1097
1098   o Minor features (other):
1099     - Use the SOCK_NONBLOCK socket type, if supported, to open nonblocking
1100       sockets in a single system call. Implements ticket 5129.
1101     - Log current accounting state (bytes sent and received + remaining
1102       time for the current accounting period) in the relay's heartbeat
1103       message. Implements ticket 5526; patch from Peter Retzlaff.
1104     - Implement the TRANSPORT_LAUNCHED control port event that
1105       notifies controllers about new launched pluggable
1106       transports. Resolves ticket 5609.
1107     - If we're using the pure-C 32-bit curve25519_donna implementation
1108       of curve25519, build it with the -fomit-frame-pointer option to
1109       make it go faster on register-starved hosts. This improves our
1110       handshake performance by about 6% on i386 hosts without nacl.
1111       Closes ticket 8109.
1112     - Update to the September 4 2013 Maxmind GeoLite Country database.
1113
1114   o Minor bugfixes:
1115     - Set the listen() backlog limit to the largest actually supported
1116       on the system, not to the value in a header file. Fixes bug 9716;
1117       bugfix on every released Tor.
1118     - No longer accept malformed http headers when parsing urls from
1119       headers. Now we reply with Bad Request ("400"). Fixes bug 2767;
1120       bugfix on 0.0.6pre1.
1121     - In munge_extrainfo_into_routerinfo(), check the return value of
1122       memchr(). This would have been a serious issue if we ever passed
1123       it a non-extrainfo. Fixes bug 8791; bugfix on 0.2.0.6-alpha. Patch
1124       from Arlo Breault.
1125     - On the chance that somebody manages to build Tor on a
1126       platform where time_t is unsigned, correct the way that
1127       microdesc_add_to_cache() handles negative time arguments.
1128       Fixes bug 8042; bugfix on 0.2.3.1-alpha.
1129     - Reject relative control socket paths and emit a warning. Previously,
1130       single-component control socket paths would be rejected, but Tor
1131       would not log why it could not validate the config. Fixes bug 9258;
1132       bugfix on 0.2.3.16-alpha.
1133
1134   o Minor bugfixes (command line):
1135     - Use a single command-line parser for parsing torrc options on the
1136       command line and for finding special command-line options to avoid
1137       inconsistent behavior for torrc option arguments that have the same
1138       names as command-line options. Fixes bugs 4647 and 9578; bugfix on
1139       0.0.9pre5.
1140     - No longer allow 'tor --hash-password' with no arguments. Fixes bug
1141       9573; bugfix on 0.0.9pre5.
1142
1143   o Minor fixes (build, auxiliary programs):
1144     - Stop preprocessing the "torify" script with autoconf, since
1145       it no longer refers to LOCALSTATEDIR. Fixes bug 5505; patch
1146       from Guilhem.
1147     - The tor-fw-helper program now follows the standard convention and
1148       exits with status code "0" on success. Fixes bug 9030; bugfix on
1149       0.2.3.1-alpha. Patch by Arlo Breault.
1150     - Corrected ./configure advice for what openssl dev package you should
1151       install on Debian. Fixes bug 9207; bugfix on 0.2.0.1-alpha.
1152
1153   o Minor code improvements:
1154     - Remove constants and tests for PKCS1 padding; it's insecure and
1155       shouldn't be used for anything new. Fixes bug 8792; patch
1156       from Arlo Breault.
1157     - Remove instances of strcpy() from the unit tests. They weren't
1158       hurting anything, since they were only in the unit tests, but it's
1159       embarassing to have strcpy() in the code at all, and some analysis
1160       tools don't like it. Fixes bug 8790; bugfix on 0.2.3.6-alpha and
1161       0.2.3.8-alpha. Patch from Arlo Breault.
1162
1163   o Removed features:
1164     - Remove migration code from when we renamed the "cached-routers"
1165       file to "cached-descriptors" back in 0.2.0.8-alpha. This
1166       incidentally resolves ticket 6502 by cleaning up the related code
1167       a bit. Patch from Akshay Hebbar.
1168
1169   o Code simplification and refactoring:
1170     - Extract the common duplicated code for creating a subdirectory
1171       of the data directory and writing to a file in it. Fixes ticket
1172       4282; patch from Peter Retzlaff.
1173     - Since OpenSSL 0.9.7, the i2d_*() functions support allocating output
1174       buffer. Avoid calling twice: i2d_RSAPublicKey(), i2d_DHparams(),
1175       i2d_X509(), and i2d_PublicKey(). Resolves ticket 5170.
1176     - Add a set of accessor functions for the circuit timeout data
1177       structure. Fixes ticket 6153; patch from "piet".
1178     - Clean up exit paths from connection_listener_new(). Closes ticket
1179       8789. Patch from Arlo Breault.
1180     - Since we rely on OpenSSL 0.9.8 now, we can use EVP_PKEY_cmp()
1181       and drop our own custom pkey_eq() implementation. Fixes bug 9043.
1182     - Use a doubly-linked list to implement the global circuit list.
1183       Resolves ticket 9108. Patch from Marek Majkowski.
1184     - Remove contrib/id_to_fp.c since it wasn't used anywhere.
1185
1186
1187 Changes in version 0.2.4.17-rc - 2013-09-05
1188   Tor 0.2.4.17-rc is the third release candidate for the Tor 0.2.4.x
1189   series. It adds an emergency step to help us tolerate the massive
1190   influx of users: 0.2.4 clients using the new (faster and safer) "NTor"
1191   circuit-level handshakes now effectively jump the queue compared to
1192   the 0.2.3 clients using "TAP" handshakes. This release also fixes a
1193   big bug hindering bridge reachability tests.
1194
1195   o Major features:
1196     - Relays now process the new "NTor" circuit-level handshake requests
1197       with higher priority than the old "TAP" circuit-level handshake
1198       requests. We still process some TAP requests to not totally starve
1199       0.2.3 clients when NTor becomes popular. A new consensus parameter
1200       "NumNTorsPerTAP" lets us tune the balance later if we need to.
1201       Implements ticket 9574.
1202
1203   o Major bugfixes:
1204     - If the circuit build timeout logic is disabled (via the consensus,
1205       or because we are an authority), then don't build testing circuits.
1206       Fixes bug 9657; bugfix on 0.2.2.14-alpha.
1207     - Bridges now send AUTH_CHALLENGE cells during their v3 handshakes;
1208       previously they did not, which prevented them from receiving
1209       successful connections from relays for self-test or bandwidth
1210       testing. Also, when a relay is extending a circuit to a bridge,
1211       it needs to send a NETINFO cell, even when the bridge hasn't sent
1212       an AUTH_CHALLENGE cell. Fixes bug 9546; bugfix on 0.2.3.6-alpha.
1213     - If the time to download the next old-style networkstatus is in
1214       the future, do not decline to consider whether to download the
1215       next microdescriptor networkstatus. Fixes bug 9564; bugfix on
1216       0.2.3.14-alpha.
1217
1218   o Minor bugfixes:
1219     - Avoid double-closing the listener socket in our socketpair()
1220       replacement (used on Windows) in the case where the addresses on
1221       our opened sockets don't match what we expected. Fixes bug 9400;
1222       bugfix on 0.0.2pre7. Found by Coverity.
1223
1224   o Minor fixes (config options):
1225     - Avoid overflows when the user sets MaxCircuitDirtiness to a
1226       ridiculously high value, by imposing a (ridiculously high) 30-day
1227       maximum on MaxCircuitDirtiness.
1228     - Fix the documentation of HeartbeatPeriod to say that the heartbeat
1229       message is logged at notice, not at info.
1230     - Warn and fail if a server is configured not to advertise any
1231       ORPorts at all. (We need *something* to put in our descriptor,
1232       or we just won't work.)
1233
1234   o Minor features:
1235     - Track how many "TAP" and "NTor" circuit handshake requests we get,
1236       and how many we complete, and log it every hour to help relay
1237       operators follow trends in network load. Addresses ticket 9658.
1238     - Update to the August 7 2013 Maxmind GeoLite Country database.
1239
1240
1241 Changes in version 0.2.4.16-rc - 2013-08-10
1242   Tor 0.2.4.16-rc is the second release candidate for the Tor 0.2.4.x
1243   series. It fixes several crash bugs in the 0.2.4 branch.
1244
1245   o Major bugfixes:
1246     - Fix a bug in the voting algorithm that could yield incorrect results
1247       when a non-naming authority declared too many flags. Fixes bug 9200;
1248       bugfix on 0.2.0.3-alpha.
1249     - Fix an uninitialized read that could in some cases lead to a remote
1250       crash while parsing INTRODUCE2 cells. Bugfix on 0.2.4.1-alpha.
1251       Anybody running a hidden service on the experimental 0.2.4.x
1252       branch should upgrade. (This is, so far as we know, unrelated to
1253       the recent news.)
1254     - Avoid an assertion failure when processing DNS replies without the
1255       answer types we expected. Fixes bug 9337; bugfix on 0.2.4.7-alpha.
1256     - Avoid a crash when using --hash-password. Fixes bug 9295; bugfix on
1257       0.2.4.15-rc. Found by stem integration tests.
1258
1259   o Minor bugfixes:
1260     - Fix an invalid memory read that occured when a pluggable
1261       transport proxy failed its configuration protocol.
1262       Fixes bug 9288; bugfix on 0.2.4.1-alpha.
1263     - When evaluating whether to use a connection that we haven't
1264       decided is canonical using a recent link protocol version,
1265       decide that it's canonical only if it used address _does_
1266       match the desired address. Fixes bug 9309; bugfix on
1267       0.2.4.4-alpha. Reported by skruffy.
1268     - Make the default behavior of NumDirectoryGuards be to track
1269       NumEntryGuards. Now a user who changes only NumEntryGuards will get
1270       the behavior she expects. Fixes bug 9354; bugfix on 0.2.4.8-alpha.
1271     - Fix a spurious compilation warning with some older versions of
1272       GCC on FreeBSD. Fixes bug 9254; bugfix on 0.2.4.14-alpha.
1273
1274   o Minor features:
1275     - Update to the July 3 2013 Maxmind GeoLite Country database.
1276
1277
1278 Changes in version 0.2.4.15-rc - 2013-07-01
1279   Tor 0.2.4.15-rc is the first release candidate for the Tor 0.2.4.x
1280   series. It fixes a few smaller bugs, but generally appears stable.
1281   Please test it and let us know whether it is!
1282
1283   o Major bugfixes:
1284     - When receiving a new configuration file via the control port's
1285       LOADCONF command, do not treat the defaults file as absent.
1286       Fixes bug 9122; bugfix on 0.2.3.9-alpha.
1287
1288   o Minor features:
1289     - Issue a warning when running with the bufferevents backend enabled.
1290       It's still not stable, and people should know that they're likely
1291       to hit unexpected problems. Closes ticket 9147.
1292
1293
1294 Changes in version 0.2.4.14-alpha - 2013-06-18
1295   Tor 0.2.4.14-alpha fixes a pair of client guard enumeration problems
1296   present in 0.2.4.13-alpha.
1297
1298   o Major bugfixes:
1299     - When we have too much memory queued in circuits (according to a new
1300       MaxMemInCellQueues option), close the circuits consuming the most
1301       memory. This prevents us from running out of memory as a relay if
1302       circuits fill up faster than they can be drained. Fixes bug 9063;
1303       bugfix on the 54th commit of Tor. This bug is a further fix beyond
1304       bug 6252, whose fix was merged into 0.2.3.21-rc.
1305
1306       This change also fixes an earlier approach taken in 0.2.4.13-alpha,
1307       where we tried to solve this issue simply by imposing an upper limit
1308       on the number of queued cells for a single circuit. That approach
1309       proved to be problematic, since there are ways to provoke clients to
1310       send a number of cells in excess of any such reasonable limit. Fixes
1311       bug 9072; bugfix on 0.2.4.13-alpha.
1312
1313     - Limit hidden service descriptors to at most ten introduction
1314       points, to slow one kind of guard enumeration. Fixes bug 9002;
1315       bugfix on 0.1.1.11-alpha.
1316
1317
1318 Changes in version 0.2.4.13-alpha - 2013-06-14
1319   Tor 0.2.4.13-alpha fixes a variety of potential remote crash
1320   vulnerabilities, makes socks5 username/password circuit isolation
1321   actually actually work (this time for sure!), and cleans up a bunch
1322   of other issues in preparation for a release candidate.
1323
1324   o Major bugfixes (robustness):
1325     - Close any circuit that has too many cells queued on it. Fixes
1326       bug 9063; bugfix on the 54th commit of Tor. This bug is a further
1327       fix beyond bug 6252, whose fix was merged into 0.2.3.21-rc.
1328     - Prevent the get_freelists() function from running off the end of
1329       the list of freelists if it somehow gets an unrecognized
1330       allocation. Fixes bug 8844; bugfix on 0.2.0.16-alpha. Reported by
1331       eugenis.
1332     - Avoid an assertion failure on OpenBSD (and perhaps other BSDs)
1333       when an exit connection with optimistic data succeeds immediately
1334       rather than returning EINPROGRESS. Fixes bug 9017; bugfix on
1335       0.2.3.1-alpha.
1336     - Fix a directory authority crash bug when building a consensus
1337       using an older consensus as its basis. Fixes bug 8833. Bugfix
1338       on 0.2.4.12-alpha.
1339
1340   o Major bugfixes:
1341     - Avoid a memory leak where we would leak a consensus body when we
1342       find that a consensus which we couldn't previously verify due to
1343       missing certificates is now verifiable. Fixes bug 8719; bugfix
1344       on 0.2.0.10-alpha.
1345     - We used to always request authority certificates by identity digest,
1346       meaning we'd get the newest one even when we wanted one with a
1347       different signing key. Then we would complain about being given
1348       a certificate we already had, and never get the one we really
1349       wanted. Now we use the "fp-sk/" resource as well as the "fp/"
1350       resource to request the one we want. Fixes bug 5595; bugfix on
1351       0.2.0.8-alpha.
1352     - Follow the socks5 protocol when offering username/password
1353       authentication. The fix for bug 8117 exposed this bug, and it
1354       turns out real-world applications like Pidgin do care. Bugfix on
1355       0.2.3.2-alpha; fixes bug 8879.
1356     - Prevent failures on Windows Vista and later when rebuilding the
1357       microdescriptor cache. Diagnosed by Robert Ransom. Fixes bug 8822;
1358       bugfix on 0.2.4.12-alpha.
1359
1360   o Minor bugfixes:
1361     - Fix an impossible buffer overrun in the AES unit tests. Fixes
1362       bug 8845; bugfix on 0.2.0.7-alpha. Found by eugenis.
1363     - If for some reason we fail to write a microdescriptor while
1364       rebuilding the cache, do not let the annotations from that
1365       microdescriptor linger in the cache file, and do not let the
1366       microdescriptor stay recorded as present in its old location.
1367       Fixes bug 9047; bugfix on 0.2.2.6-alpha.
1368     - Fix a memory leak that would occur whenever a configuration
1369       option changed. Fixes bug 8718; bugfix on 0.2.3.3-alpha.
1370     - Paste the description for PathBias parameters from the man
1371       page into or.h, so the code documents them too. Fixes bug 7982;
1372       bugfix on 0.2.3.17-beta and 0.2.4.8-alpha.
1373     - Relays now treat a changed IPv6 ORPort as sufficient reason to
1374       publish an updated descriptor. Fixes bug 6026; bugfix on
1375       0.2.4.1-alpha.
1376     - When launching a resolve request on behalf of an AF_UNIX control
1377       socket, omit the address field of the new entry connection, used in
1378       subsequent controller events, rather than letting tor_dup_addr()
1379       set it to "<unknown address type>". Fixes bug 8639; bugfix on
1380       0.2.4.12-alpha.
1381
1382   o Minor bugfixes (log messages):
1383     - Fix a scaling issue in the path bias accounting code that
1384       resulted in "Bug:" log messages from either
1385       pathbias_scale_close_rates() or pathbias_count_build_success().
1386       This represents a bugfix on a previous bugfix: the original fix
1387       attempted in 0.2.4.10-alpha was incomplete. Fixes bug 8235; bugfix
1388       on 0.2.4.1-alpha.
1389     - Give a less useless error message when the user asks for an IPv4
1390       address on an IPv6-only port, or vice versa. Fixes bug 8846; bugfix
1391       on 0.2.4.7-alpha.
1392
1393   o Minor features:
1394     - Downgrade "unexpected SENDME" warnings to protocol-warn for 0.2.4.x,
1395       to tolerate bug 8093 for now.
1396     - Add an "ignoring-advertised-bws" boolean to the flag-threshold lines
1397       in directory authority votes to describe whether they have enough
1398       measured bandwidths to ignore advertised (relay descriptor)
1399       bandwidth claims. Resolves ticket 8711.
1400     - Update to the June 5 2013 Maxmind GeoLite Country database.
1401
1402   o Removed documentation:
1403     - Remove some of the older contents of doc/ as obsolete; move others
1404       to torspec.git. Fixes bug 8965.
1405
1406   o Code simplification and refactoring:
1407     - Avoid using character buffers when constructing most directory
1408       objects: this approach was unwieldy and error-prone. Instead,
1409       build smartlists of strings, and concatenate them when done.
1410
1411
1412 Changes in version 0.2.4.12-alpha - 2013-04-18
1413   Tor 0.2.4.12-alpha moves Tor forward on several fronts: it starts the
1414   process for lengthening the guard rotation period, makes directory
1415   authority opinions in the consensus a bit less gameable, makes socks5
1416   username/password circuit isolation actually work, and fixes a wide
1417   variety of other issues.
1418
1419   o Major features:
1420     - Raise the default time that a client keeps an entry guard from
1421       "1-2 months" to "2-3 months", as suggested by Tariq Elahi's WPES
1422       2012 paper. (We would make it even longer, but we need better client
1423       load balancing first.) Also, make the guard lifetime controllable
1424       via a new GuardLifetime torrc option and a GuardLifetime consensus
1425       parameter. Start of a fix for bug 8240; bugfix on 0.1.1.11-alpha.
1426     - Directory authorities now prefer using measured bandwidths to
1427       advertised ones when computing flags and thresholds. Resolves
1428       ticket 8273.
1429     - Directory authorities that have more than a threshold number
1430       of relays with measured bandwidths now treat relays with unmeasured
1431       bandwidths as having bandwidth 0. Resolves ticket 8435.
1432
1433   o Major bugfixes (assert / resource use):
1434     - Avoid a bug where our response to TLS renegotiation under certain
1435       network conditions could lead to a busy-loop, with 100% CPU
1436       consumption. Fixes bug 5650; bugfix on 0.2.0.16-alpha.
1437     - Avoid an assertion when we discover that we'd like to write a cell
1438       onto a closing connection: just discard the cell. Fixes another
1439       case of bug 7350; bugfix on 0.2.4.4-alpha.
1440
1441   o Major bugfixes (client-side privacy):
1442     - When we mark a circuit as unusable for new circuits, have it
1443       continue to be unusable for new circuits even if MaxCircuitDirtiness
1444       is increased too much at the wrong time, or the system clock jumps
1445       backwards. Fixes bug 6174; bugfix on 0.0.2pre26.
1446     - If ClientDNSRejectInternalAddresses ("do not believe DNS queries
1447       which have resolved to internal addresses") is set, apply that
1448       rule to IPv6 as well. Fixes bug 8475; bugfix on 0.2.0.7-alpha.
1449     - When an exit relay rejects a stream with reason "exit policy", but
1450       we only know an exit policy summary (e.g. from the microdesc
1451       consensus) for it, do not mark the relay as useless for all exiting.
1452       Instead, mark just the circuit as unsuitable for that particular
1453       address. Fixes part of bug 7582; bugfix on 0.2.3.2-alpha.
1454     - Allow applications to get proper stream isolation with
1455       IsolateSOCKSAuth. Many SOCKS5 clients that want to offer
1456       username/password authentication also offer "no authentication". Tor
1457       had previously preferred "no authentication", so the applications
1458       never actually sent Tor their auth details. Now Tor selects
1459       username/password authentication if it's offered. You can disable
1460       this behavior on a per-SOCKSPort basis via PreferSOCKSNoAuth. Fixes
1461       bug 8117; bugfix on 0.2.3.3-alpha.
1462
1463   o Major bugfixes (other):
1464     - When unable to find any working directory nodes to use as a
1465       directory guard, give up rather than adding the same non-working
1466       nodes to the directory guard list over and over. Fixes bug 8231;
1467       bugfix on 0.2.4.8-alpha.
1468
1469   o Minor features:
1470     - Reject as invalid most directory objects containing a NUL.
1471       Belt-and-suspender fix for bug 8037.
1472     - In our testsuite, create temporary directories with a bit more
1473       entropy in their name to make name collisions less likely. Fixes
1474       bug 8638.
1475     - Add CACHED keyword to ADDRMAP events in the control protocol
1476       to indicate whether a DNS result will be cached or not. Resolves
1477       ticket 8596.
1478     - Update to the April 3 2013 Maxmind GeoLite Country database.
1479
1480   o Minor features (build):
1481     - Detect and reject attempts to build Tor with threading support
1482       when OpenSSL has been compiled without threading support.
1483       Fixes bug 6673.
1484     - Clarify that when autoconf is checking for nacl, it is checking
1485       specifically for nacl with a fast curve25519 implementation.
1486       Fixes bug 8014.
1487     - Warn if building on a platform with an unsigned time_t: there
1488       are too many places where Tor currently assumes that time_t can
1489       hold negative values. We'd like to fix them all, but probably
1490       some will remain.
1491
1492   o Minor bugfixes (build):
1493     - Fix some bugs in tor-fw-helper-natpmp when trying to build and
1494       run it on Windows. More bugs likely remain. Patch from Gisle Vanem.
1495       Fixes bug 7280; bugfix on 0.2.3.1-alpha.
1496     - Add the old src/or/micro-revision.i filename to CLEANFILES.
1497       On the off chance that somebody has one, it will go away as soon
1498       as they run "make clean". Fix for bug 7143; bugfix on 0.2.4.1-alpha.
1499     - Build Tor correctly on 32-bit platforms where the compiler can build
1500       but not run code using the "uint128_t" construction. Fixes bug 8587;
1501       bugfix on 0.2.4.8-alpha.
1502     - Fix compilation warning with some versions of clang that would
1503       prefer the -Wswitch-enum compiler flag to warn about switch
1504       statements with missing enum values, even if those switch
1505       statements have a "default:" statement. Fixes bug 8598; bugfix
1506       on 0.2.4.10-alpha.
1507
1508   o Minor bugfixes (protocol):
1509     - Fix the handling of a TRUNCATE cell when it arrives while the
1510       circuit extension is in progress. Fixes bug 7947; bugfix on 0.0.7.1.
1511     - Fix a misframing issue when reading the version numbers in a
1512       VERSIONS cell. Previously we would recognize [00 01 00 02] as
1513       'version 1, version 2, and version 0x100', when it should have
1514       only included versions 1 and 2. Fixes bug 8059; bugfix on
1515       0.2.0.10-alpha. Reported pseudonymously.
1516     - Make the format and order of STREAM events for DNS lookups
1517       consistent among the various ways to launch DNS lookups. Fixes
1518       bug 8203; bugfix on 0.2.0.24-rc. Patch by "Desoxy."
1519     - Correct our check for which versions of Tor support the EXTEND2
1520       cell. We had been willing to send it to Tor 0.2.4.7-alpha and
1521       later, when support was really added in version 0.2.4.8-alpha.
1522       Fixes bug 8464; bugfix on 0.2.4.8-alpha.
1523
1524   o Minor bugfixes (other):
1525     - Correctly store microdescriptors and extrainfo descriptors with
1526       an internal NUL byte. Fixes bug 8037; bugfix on 0.2.0.1-alpha.
1527       Bug reported by "cypherpunks".
1528     - Increase the width of the field used to remember a connection's
1529       link protocol version to two bytes. Harmless for now, since the
1530       only currently recognized versions are one byte long. Reported
1531       pseudonymously. Fixes bug 8062; bugfix on 0.2.0.10-alpha.
1532     - If the state file's path bias counts are invalid (presumably from a
1533       buggy Tor prior to 0.2.4.10-alpha), make them correct. Also add
1534       additional checks and log messages to the scaling of Path Bias
1535       counts, in case there still are remaining issues with scaling.
1536       Should help resolve bug 8235.
1537     - Eliminate several instances where we use "Nickname=ID" to refer to
1538       nodes in logs. Use "Nickname (ID)" instead. (Elsewhere, we still use
1539       "$ID=Nickname", which is also acceptable.) Fixes bug 7065. Bugfix
1540       on 0.2.3.21-rc, 0.2.4.5-alpha, 0.2.4.8-alpha, and 0.2.4.10-alpha.
1541
1542   o Minor bugfixes (syscalls):
1543     - Always check the return values of functions fcntl() and
1544       setsockopt(). We don't believe these are ever actually failing in
1545       practice, but better safe than sorry. Also, checking these return
1546       values should please analysis tools like Coverity. Patch from
1547       'flupzor'. Fixes bug 8206; bugfix on all versions of Tor.
1548     - Use direct writes rather than stdio when building microdescriptor
1549       caches, in an attempt to mitigate bug 8031, or at least make it
1550       less common.
1551
1552   o Minor bugfixes (config):
1553     - When rejecting a configuration because we were unable to parse a
1554       quoted string, log an actual error message. Fixes bug 7950; bugfix
1555       on 0.2.0.16-alpha.
1556     - Behave correctly when the user disables LearnCircuitBuildTimeout
1557       but doesn't tell us what they would like the timeout to be. Fixes
1558       bug 6304; bugfix on 0.2.2.14-alpha.
1559     - When autodetecting the number of CPUs, use the number of available
1560       CPUs in preference to the number of configured CPUs. Inform the
1561       user if this reduces the number of available CPUs. Fixes bug 8002;
1562       bugfix on 0.2.3.1-alpha.
1563     - Make it an error when you set EntryNodes but disable UseGuardNodes,
1564       since it will (surprisingly to some users) ignore EntryNodes. Fixes
1565       bug 8180; bugfix on 0.2.3.11-alpha.
1566     - Allow TestingTorNetworks to override the 4096-byte minimum for
1567       the Fast threshold. Otherwise they can't bootstrap until they've
1568       observed more traffic. Fixes bug 8508; bugfix on 0.2.4.10-alpha.
1569     - Fix some logic errors when the user manually overrides the
1570       PathsNeededToBuildCircuits option in torrc. Fixes bug 8599; bugfix
1571       on 0.2.4.10-alpha.
1572
1573   o Minor bugfixes (log messages to help diagnose bugs):
1574     - If we fail to free a microdescriptor because of bug 7164, log
1575       the filename and line number from which we tried to free it.
1576     - Add another diagnostic to the heartbeat message: track and log
1577       overhead that TLS is adding to the data we write. If this is
1578       high, we are sending too little data to SSL_write at a time.
1579       Diagnostic for bug 7707.
1580     - Add more detail to a log message about relaxed timeouts, to help
1581       track bug 7799.
1582     - Warn more aggressively when flushing microdescriptors to a
1583       microdescriptor cache fails, in an attempt to mitigate bug 8031,
1584       or at least make it more diagnosable.
1585     - Improve debugging output to help track down bug 8185 ("Bug:
1586       outgoing relay cell has n_chan==NULL. Dropping.")
1587     - Log the purpose of a path-bias testing circuit correctly.
1588       Improves a log message from bug 8477; bugfix on 0.2.4.8-alpha.
1589
1590   o Minor bugfixes (0.2.4.x log messages that were too noisy):
1591     - Don't attempt to relax the timeout of already opened 1-hop circuits.
1592       They might never timeout. This should eliminate some/all cases of
1593       the relaxed timeout log message.
1594     - Use circuit creation time for network liveness evaluation. This
1595       should eliminate warning log messages about liveness caused
1596       by changes in timeout evaluation. Fixes bug 6572; bugfix on
1597       0.2.4.8-alpha.
1598     - Reduce a path bias length check from notice to info. The message
1599       is triggered when creating controller circuits. Fixes bug 8196;
1600       bugfix on 0.2.4.8-alpha.
1601     - Fix a path state issue that triggered a notice during relay startup.
1602       Fixes bug 8320; bugfix on 0.2.4.10-alpha.
1603     - Reduce occurrences of warns about circuit purpose in
1604       connection_ap_expire_building(). Fixes bug 8477; bugfix on
1605       0.2.4.11-alpha.
1606
1607   o Minor bugfixes (pre-0.2.4.x log messages that were too noisy):
1608     - If we encounter a write failure on a SOCKS connection before we
1609       finish our SOCKS handshake, don't warn that we closed the
1610       connection before we could send a SOCKS reply. Fixes bug 8427;
1611       bugfix on 0.1.0.1-rc.
1612     - Correctly recognize that [::1] is a loopback address. Fixes
1613       bug 8377; bugfix on 0.2.1.3-alpha.
1614     - Fix a directory authority warn caused when we have a large amount
1615       of badexit bandwidth. Fixes bug 8419; bugfix on 0.2.2.10-alpha.
1616     - Don't log inappropriate heartbeat messages when hibernating: a
1617       hibernating node is _expected_ to drop out of the consensus,
1618       decide it isn't bootstrapped, and so forth. Fixes bug 7302;
1619       bugfix on 0.2.3.1-alpha.
1620     - Don't complain about bootstrapping problems while hibernating.
1621       These complaints reflect a general code problem, but not one
1622       with any problematic effects (no connections are actually
1623       opened). Fixes part of bug 7302; bugfix on 0.2.3.2-alpha.
1624
1625   o Documentation fixes:
1626     - Update tor-fw-helper.1.txt and tor-fw-helper.c to make option
1627       names match. Fixes bug 7768.
1628     - Make the torify manpage no longer refer to tsocks; torify hasn't
1629       supported tsocks since 0.2.3.14-alpha.
1630     - Make the tor manpage no longer reference tsocks.
1631     - Fix the GeoIPExcludeUnknown documentation to refer to
1632       ExcludeExitNodes rather than the currently nonexistent
1633       ExcludeEntryNodes. Spotted by "hamahangi" on tor-talk.
1634
1635   o Removed files:
1636     - The tor-tsocks.conf is no longer distributed or installed. We
1637       recommend that tsocks users use torsocks instead. Resolves
1638       ticket 8290.
1639
1640
1641 Changes in version 0.2.4.11-alpha - 2013-03-11
1642   Tor 0.2.4.11-alpha makes relay measurement by directory authorities
1643   more robust, makes hidden service authentication work again, and
1644   resolves a DPI fingerprint for Tor's SSL transport.
1645
1646   o Major features (directory authorities):
1647     - Directory authorities now support a new consensus method (17)
1648       where they cap the published bandwidth of servers for which
1649       insufficient bandwidth measurements exist. Fixes part of bug 2286.
1650     - Directory authorities that set "DisableV2DirectoryInfo_ 1" no longer
1651       serve any v2 directory information. Now we can test disabling the
1652       old deprecated v2 directory format, and see whether doing so has
1653       any effect on network load. Begins to fix bug 6783.
1654     - Directory authorities now include inside each vote a statement of
1655       the performance thresholds they used when assigning flags.
1656       Implements ticket 8151.
1657
1658   o Major bugfixes (directory authorities):
1659     - Stop marking every relay as having been down for one hour every
1660       time we restart a directory authority. These artificial downtimes
1661       were messing with our Stable and Guard flag calculations. Fixes
1662       bug 8218 (introduced by the fix for 1035). Bugfix on 0.2.2.23-alpha.
1663
1664   o Major bugfixes (hidden services):
1665     - Allow hidden service authentication to succeed again. When we
1666       refactored the hidden service introduction code back
1667       in 0.2.4.1-alpha, we didn't update the code that checks
1668       whether authentication information is present, causing all
1669       authentication checks to return "false". Fix for bug 8207; bugfix
1670       on 0.2.4.1-alpha. Found by Coverity; this is CID 718615.
1671
1672   o Minor features (relays, bridges):
1673     - Make bridge relays check once a minute for whether their IP
1674       address has changed, rather than only every 15 minutes. Resolves
1675       bugs 1913 and 1992.
1676     - Refactor resolve_my_address() so it returns the method by which we
1677       decided our public IP address (explicitly configured, resolved from
1678       explicit hostname, guessed from interfaces, learned by gethostname).
1679       Now we can provide more helpful log messages when a relay guesses
1680       its IP address incorrectly (e.g. due to unexpected lines in
1681       /etc/hosts). Resolves ticket 2267.
1682     - Teach bridge-using clients to avoid 0.2.2 bridges when making
1683       microdescriptor-related dir requests, and only fall back to normal
1684       descriptors if none of their bridges can handle microdescriptors
1685       (as opposed to the fix in ticket 4013, which caused them to fall
1686       back to normal descriptors if *any* of their bridges preferred
1687       them). Resolves ticket 4994.
1688     - Randomize the lifetime of our SSL link certificate, so censors can't
1689       use the static value for filtering Tor flows. Resolves ticket 8443;
1690       related to ticket 4014 which was included in 0.2.2.33.
1691     - Support a new version of the link protocol that allows 4-byte circuit
1692       IDs. Previously, circuit IDs were limited to 2 bytes, which presented
1693       a possible resource exhaustion issue. Closes ticket 7351; implements
1694       proposal 214.
1695
1696   o Minor features (portability):
1697     - Tweak the curve25519-donna*.c implementations to tolerate systems
1698       that lack stdint.h. Fixes bug 3894; bugfix on 0.2.4.8-alpha.
1699     - Use Ville Laurikari's implementation of AX_CHECK_SIGN() to determine
1700       the signs of types during autoconf. This is better than our old
1701       approach, which didn't work when cross-compiling.
1702     - Detect the sign of enum values, rather than assuming that MSC is the
1703       only compiler where enum types are all signed. Fixes bug 7727;
1704       bugfix on 0.2.4.10-alpha.
1705
1706   o Minor features (other):
1707     - Say "KBytes" rather than "KB" in the man page (for various values
1708       of K), to further reduce confusion about whether Tor counts in
1709       units of memory or fractions of units of memory. Resolves ticket 7054.
1710     - Clear the high bit on curve25519 public keys before passing them to
1711       our backend, in case we ever wind up using a backend that doesn't do
1712       so itself. If we used such a backend, and *didn't* clear the high bit,
1713       we could wind up in a situation where users with such backends would
1714       be distinguishable from users without. Fixes bug 8121; bugfix on
1715       0.2.4.8-alpha.
1716     - Update to the March 6 2013 Maxmind GeoLite Country database.
1717
1718   o Minor bugfixes (clients):
1719     - When we receive a RELAY_END cell with the reason DONE, or with no
1720       reason, before receiving a RELAY_CONNECTED cell, report the SOCKS
1721       status as "connection refused". Previously we reported these cases
1722       as success but then immediately closed the connection. Fixes bug
1723       7902; bugfix on 0.1.0.1-rc. Reported by "oftc_must_be_destroyed".
1724     - Downgrade an assertion in connection_ap_expire_beginning to an
1725       LD_BUG message. The fix for bug 8024 should prevent this message
1726       from displaying, but just in case, a warn that we can diagnose
1727       is better than more assert crashes. Fixes bug 8065; bugfix on
1728       0.2.4.8-alpha.
1729     - Lower path use bias thresholds to .80 for notice and .60 for warn.
1730       Also make the rate limiting flags for the path use bias log messages
1731       independent from the original path bias flags. Fixes bug 8161;
1732       bugfix on 0.2.4.10-alpha.
1733
1734   o Minor bugfixes (relays):
1735     - Stop trying to resolve our hostname so often (e.g. every time we
1736       think about doing a directory fetch). Now we reuse the cached
1737       answer in some cases. Fixes bugs 1992 (bugfix on 0.2.0.20-rc)
1738       and 2410 (bugfix on 0.1.2.2-alpha).
1739     - Stop sending a stray "(null)" in some cases for the server status
1740       "EXTERNAL_ADDRESS" controller event. Resolves bug 8200; bugfix
1741       on 0.1.2.6-alpha.
1742     - When choosing which stream on a formerly stalled circuit to wake
1743       first, make better use of the platform's weak RNG. Previously,
1744       we had been using the % ("modulo") operator to try to generate a
1745       1/N chance of picking each stream, but this behaves badly with
1746       many platforms' choice of weak RNG. Fixes bug 7801; bugfix on
1747       0.2.2.20-alpha.
1748     - Use our own weak RNG when we need a weak RNG. Windows's rand() and
1749       Irix's random() only return 15 bits; Solaris's random() returns more
1750       bits but its RAND_MAX says it only returns 15, and so on. Motivated
1751       by the fix for bug 7801; bugfix on 0.2.2.20-alpha.
1752
1753   o Minor bugfixes (directory authorities):
1754     - Directory authorities now use less space when formatting identical
1755       microdescriptor lines in directory votes. Fixes bug 8158; bugfix
1756       on 0.2.4.1-alpha.
1757
1758   o Minor bugfixes (memory leaks spotted by Coverity -- bug 7816):
1759     - Avoid leaking memory if we fail to compute a consensus signature
1760       or we generate a consensus we can't parse. Bugfix on 0.2.0.5-alpha.
1761     - Fix a memory leak when receiving headers from an HTTPS proxy. Bugfix
1762       on 0.2.1.1-alpha.
1763     - Fix a memory leak during safe-cookie controller authentication.
1764       Bugfix on 0.2.3.13-alpha.
1765     - Avoid memory leak of IPv6 policy content if we fail to format it into
1766       a router descriptor. Bugfix on 0.2.4.7-alpha.
1767
1768   o Minor bugfixes (other code correctness issues):
1769     - Avoid a crash if we fail to generate an extrainfo descriptor.
1770       Fixes bug 8208; bugfix on 0.2.3.16-alpha. Found by Coverity;
1771       this is CID 718634.
1772     - When detecting the largest possible file descriptor (in order to
1773       close all file descriptors when launching a new program), actually
1774       use _SC_OPEN_MAX. The old code for doing this was very, very broken.
1775       Fixes bug 8209; bugfix on 0.2.3.1-alpha. Found by Coverity; this
1776       is CID 743383.
1777     - Fix a copy-and-paste error when adding a missing A1 to a routerset
1778       because of GeoIPExcludeUnknown. Fix for Coverity CID 980650.
1779       Bugfix on 0.2.4.10-alpha.
1780     - Fix an impossible-to-trigger integer overflow when estimating how
1781       long our onionskin queue would take. (This overflow would require us
1782       to accept 4 million onionskins before processing 100 of them.) Fixes
1783       bug 8210; bugfix on 0.2.4.10-alpha.
1784
1785   o Code simplification and refactoring:
1786     - Add a wrapper function for the common "log a message with a
1787       rate-limit" case.
1788
1789
1790 Changes in version 0.2.4.10-alpha - 2013-02-04
1791   Tor 0.2.4.10-alpha adds defenses at the directory authority level from
1792   certain attacks that flood the network with relays; changes the queue
1793   for circuit create requests from a sized-based limit to a time-based
1794   limit; resumes building with MSVC on Windows; and fixes a wide variety
1795   of other issues.
1796
1797   o Major bugfixes (directory authority):
1798     - When computing directory thresholds, ignore any rejected-as-sybil
1799       nodes during the computation so that they can't influence Fast,
1800       Guard, etc. (We should have done this for proposal 109.) Fixes
1801       bug 8146.
1802     - When marking a node as a likely sybil, reset its uptime metrics
1803       to zero, so that it cannot time towards getting marked as Guard,
1804       Stable, or HSDir. (We should have done this for proposal 109.) Fixes
1805       bug 8147.
1806
1807   o Major bugfixes:
1808     - When a TLS write is partially successful but incomplete, remember
1809       that the flushed part has been flushed, and notice that bytes were
1810       actually written. Reported and fixed pseudonymously. Fixes bug
1811       7708; bugfix on Tor 0.1.0.5-rc.
1812     - Reject bogus create and relay cells with 0 circuit ID or 0 stream
1813       ID: these could be used to create unexpected streams and circuits
1814       which would count as "present" to some parts of Tor but "absent"
1815       to others, leading to zombie circuits and streams or to a bandwidth
1816       denial-of-service. Fixes bug 7889; bugfix on every released version
1817       of Tor. Reported by "oftc_must_be_destroyed".
1818     - Rename all macros in our local copy of queue.h to begin with "TOR_".
1819       This change seems the only good way to permanently prevent conflicts
1820       with queue.h on various operating systems. Fixes bug 8107; bugfix
1821       on 0.2.4.6-alpha.
1822
1823   o Major features (relay):
1824     - Instead of limiting the number of queued onionskins (aka circuit
1825       create requests) to a fixed, hard-to-configure number, we limit
1826       the size of the queue based on how many we expect to be able to
1827       process in a given amount of time. We estimate the time it will
1828       take to process an onionskin based on average processing time
1829       of previous onionskins. Closes ticket 7291. You'll never have to
1830       configure MaxOnionsPending again.
1831
1832   o Major features (portability):
1833     - Resume building correctly with MSVC and Makefile.nmake. This patch
1834       resolves numerous bugs and fixes reported by ultramage, including
1835       7305, 7308, 7309, 7310, 7312, 7313, 7315, 7316, and 7669.
1836     - Make the ntor and curve25519 code build correctly with MSVC.
1837       Fix on 0.2.4.8-alpha.
1838
1839   o Minor features:
1840     - When directory authorities are computing thresholds for flags,
1841       never let the threshold for the Fast flag fall below 4096
1842       bytes. Also, do not consider nodes with extremely low bandwidths
1843       when deciding thresholds for various directory flags. This change
1844       should raise our threshold for Fast relays, possibly in turn
1845       improving overall network performance; see ticket 1854. Resolves
1846       ticket 8145.
1847     - The Tor client now ignores sub-domain components of a .onion
1848       address. This change makes HTTP "virtual" hosting
1849       possible: http://foo.aaaaaaaaaaaaaaaa.onion/ and
1850       http://bar.aaaaaaaaaaaaaaaa.onion/ can be two different websites
1851       hosted on the same hidden service. Implements proposal 204.
1852     - We compute the overhead from passing onionskins back and forth to
1853       cpuworkers, and report it when dumping statistics in response to
1854       SIGUSR1. Supports ticket 7291.
1855
1856   o Minor features (path selection):
1857     - When deciding whether we have enough descriptors to build circuits,
1858       instead of looking at raw relay counts, look at which fraction
1859       of (bandwidth-weighted) paths we're able to build. This approach
1860       keeps clients from building circuits if their paths are likely to
1861       stand out statistically. The default fraction of paths needed is
1862       taken from the consensus directory; you can override it with the
1863       new PathsNeededToBuildCircuits option. Fixes ticket 5956.
1864     - When any country code is listed in ExcludeNodes or ExcludeExitNodes,
1865       and we have GeoIP information, also exclude all nodes with unknown
1866       countries "??" and "A1". This behavior is controlled by the
1867       new GeoIPExcludeUnknown option: you can make such nodes always
1868       excluded with "GeoIPExcludeUnknown 1", and disable the feature
1869       with "GeoIPExcludeUnknown 0". Setting "GeoIPExcludeUnknown auto"
1870       gets you the default behavior. Implements feature 7706.
1871     - Path Use Bias: Perform separate accounting for successful circuit
1872       use. Keep separate statistics on stream attempt rates versus stream
1873       success rates for each guard. Provide configurable thresholds to
1874       determine when to emit log messages or disable use of guards that
1875       fail too many stream attempts. Resolves ticket 7802.
1876
1877   o Minor features (log messages):
1878     - When learning a fingerprint for a bridge, log its corresponding
1879       transport type. Implements ticket 7896.
1880     - Improve the log message when "Bug/attack: unexpected sendme cell
1881       from client" occurs, to help us track bug 8093.
1882
1883   o Minor bugfixes:
1884     - Remove a couple of extraneous semicolons that were upsetting the
1885       cparser library. Patch by Christian Grothoff. Fixes bug 7115;
1886       bugfix on 0.2.2.1-alpha.
1887     - Remove a source of rounding error during path bias count scaling;
1888       don't count cannibalized circuits as used for path bias until we
1889       actually try to use them; and fix a circuit_package_relay_cell()
1890       warning message about n_chan==NULL. Fixes bug 7802.
1891     - Detect nacl when its headers are in a nacl/ subdirectory. Also,
1892       actually link against nacl when we're configured to use it. Fixes
1893       bug 7972; bugfix on 0.2.4.8-alpha.
1894     - Compile correctly with the --disable-curve25519 option. Fixes
1895       bug 8153; bugfix on 0.2.4.8-alpha.
1896
1897   o Build improvements:
1898     - Do not report status verbosely from autogen.sh unless the -v flag
1899       is specified. Fixes issue 4664. Patch from Onizuka.
1900     - Replace all calls to snprintf() outside of src/ext with
1901       tor_snprintf(). Also remove the #define to replace snprintf with
1902       _snprintf on Windows; they have different semantics, and all of
1903       our callers should be using tor_snprintf() anyway. Fixes bug 7304.
1904     - Try to detect if we are ever building on a platform where
1905       memset(...,0,...) does not set the value of a double to 0.0. Such
1906       platforms are permitted by the C standard, though in practice
1907       they're pretty rare (since IEEE 754 is nigh-ubiquitous). We don't
1908       currently support them, but it's better to detect them and fail
1909       than to perform erroneously.
1910
1911   o Removed features:
1912     - Stop exporting estimates of v2 and v3 directory traffic shares
1913       in extrainfo documents. They were unneeded and sometimes inaccurate.
1914       Also stop exporting any v2 directory request statistics. Resolves
1915       ticket 5823.
1916     - Drop support for detecting and warning about versions of Libevent
1917       before 1.3e. Nothing reasonable ships with them any longer;
1918       warning the user about them shouldn't be needed. Resolves ticket
1919       6826.
1920
1921   o Code simplifications and refactoring:
1922     - Rename "isin" functions to "contains", for grammar. Resolves
1923       ticket 5285.
1924     - Rename Tor's logging function log() to tor_log(), to avoid conflicts
1925       with the natural logarithm function from the system libm. Resolves
1926       ticket 7599.
1927
1928
1929 Changes in version 0.2.4.9-alpha - 2013-01-15
1930   Tor 0.2.4.9-alpha provides a quick fix to make the new ntor handshake
1931   work more robustly.
1932
1933   o Major bugfixes:
1934     - Fix backward compatibility logic when receiving an embedded ntor
1935       handshake tunneled in a CREATE cell. This clears up the "Bug:
1936       couldn't format CREATED cell" warning. Fixes bug 7959; bugfix
1937       on 0.2.4.8-alpha.
1938
1939
1940 Changes in version 0.2.4.8-alpha - 2013-01-14
1941   Tor 0.2.4.8-alpha introduces directory guards to reduce user enumeration
1942   risks, adds a new stronger and faster circuit handshake, and offers
1943   stronger and faster link encryption when both sides support it.
1944
1945   o Major features:
1946     - Preliminary support for directory guards (proposal 207): when
1947       possible, clients now use their entry guards for non-anonymous
1948       directory requests. This can help prevent client enumeration. Note
1949       that this behavior only works when we have a usable consensus
1950       directory, and when options about what to download are more or less
1951       standard. In the future we should re-bootstrap from our guards,
1952       rather than re-bootstrapping from the preconfigured list of
1953       directory sources that ships with Tor. Resolves ticket 6526.
1954     - Tor relays and clients now support a better CREATE/EXTEND cell
1955       format, allowing the sender to specify multiple address, identity,
1956       and handshake types. Implements Robert Ransom's proposal 200;
1957       closes ticket 7199.
1958
1959   o Major features (new circuit handshake):
1960     - Tor now supports a new circuit extension handshake designed by Ian
1961       Goldberg, Douglas Stebila, and Berkant Ustaoglu. Our original
1962       circuit extension handshake, later called "TAP", was a bit slow
1963       (especially on the relay side), had a fragile security proof, and
1964       used weaker keys than we'd now prefer. The new circuit handshake
1965       uses Dan Bernstein's "curve25519" elliptic-curve Diffie-Hellman
1966       function, making it significantly more secure than the older
1967       handshake, and significantly faster. Tor can use one of two built-in
1968       pure-C curve25519-donna implementations by Adam Langley, or it
1969       can link against the "nacl" library for a tuned version if present.
1970
1971       The built-in version is very fast for 64-bit systems when building
1972       with GCC. The built-in 32-bit version is still faster than the
1973       old TAP protocol, but using libnacl is better on most such hosts.
1974
1975       Clients don't currently use this protocol by default, since
1976       comparatively few clients support it so far. To try it, set
1977       UseNTorHandshake to 1.
1978
1979       Implements proposal 216; closes ticket 7202.
1980
1981   o Major features (better link encryption):
1982     - Relays can now enable the ECDHE TLS ciphersuites when available
1983       and appropriate. These ciphersuites let us negotiate forward-secure
1984       TLS secret keys more safely and more efficiently than with our
1985       previous use of Diffie-Hellman modulo a 1024-bit prime. By default,
1986       public relays prefer the (faster) P224 group, and bridges prefer
1987       the (more common) P256 group; you can override this with the
1988       TLSECGroup option.
1989
1990       Enabling these ciphers was a little tricky, since for a long time,
1991       clients had been claiming to support them without actually doing
1992       so, in order to foil fingerprinting. But with the client-side
1993       implementation of proposal 198 in 0.2.3.17-beta, clients can now
1994       match the ciphers from recent Firefox versions *and* list the
1995       ciphers they actually mean, so relays can believe such clients
1996       when they advertise ECDHE support in their TLS ClientHello messages.
1997
1998       This feature requires clients running 0.2.3.17-beta or later,
1999       and requires both sides to be running OpenSSL 1.0.0 or later
2000       with ECC support. OpenSSL 1.0.1, with the compile-time option
2001       "enable-ec_nistp_64_gcc_128", is highly recommended.
2002
2003       Implements the relay side of proposal 198; closes ticket 7200.
2004
2005   o Major bugfixes:
2006     - Avoid crashing when, as a relay without IPv6-exit support, a
2007       client insists on getting an IPv6 address or nothing. Fixes bug
2008       7814; bugfix on 0.2.4.7-alpha.
2009
2010   o Minor features:
2011     - Improve circuit build timeout handling for hidden services.
2012       In particular: adjust build timeouts more accurately depending
2013       upon the number of hop-RTTs that a particular circuit type
2014       undergoes. Additionally, launch intro circuits in parallel
2015       if they timeout, and take the first one to reply as valid.
2016     - Work correctly on Unix systems where EAGAIN and EWOULDBLOCK are
2017       separate error codes; or at least, don't break for that reason.
2018       Fixes bug 7935. Reported by "oftc_must_be_destroyed".
2019     - Update to the January 2 2013 Maxmind GeoLite Country database.
2020
2021   o Minor features (testing):
2022     - Add benchmarks for DH (1024-bit multiplicative group) and ECDH
2023       (P-256) Diffie-Hellman handshakes to src/or/bench.
2024     - Add benchmark functions to test onion handshake performance.
2025
2026   o Minor features (path bias detection):
2027     - Alter the Path Bias log messages to be more descriptive in terms
2028       of reporting timeouts and other statistics.
2029     - Create three levels of Path Bias log messages, as opposed to just
2030       two. These are configurable via consensus as well as via the torrc
2031       options PathBiasNoticeRate, PathBiasWarnRate, PathBiasExtremeRate.
2032       The default values are 0.70, 0.50, and 0.30 respectively.
2033     - Separate the log message levels from the decision to drop guards,
2034       which also is available via torrc option PathBiasDropGuards.
2035       PathBiasDropGuards still defaults to 0 (off).
2036     - Deprecate PathBiasDisableRate in favor of PathBiasDropGuards
2037       in combination with PathBiasExtremeRate.
2038     - Increase the default values for PathBiasScaleThreshold and
2039       PathBiasCircThreshold from (200, 20) to (300, 150).
2040     - Add in circuit usage accounting to path bias. If we try to use a
2041       built circuit but fail for any reason, it counts as path bias.
2042       Certain classes of circuits where the adversary gets to pick your
2043       destination node are exempt from this accounting. Usage accounting
2044       can be specifically disabled via consensus parameter or torrc.
2045     - Convert all internal path bias state to double-precision floating
2046       point, to avoid roundoff error and other issues.
2047     - Only record path bias information for circuits that have completed
2048       *two* hops. Assuming end-to-end tagging is the attack vector, this
2049       makes us more resilient to ambient circuit failure without any
2050       detection capability loss.
2051
2052   o Minor bugfixes (log messages):
2053     - Rate-limit the "No circuits are opened. Relaxed timeout for a
2054       circuit with channel state open..." message to once per hour to
2055       keep it from filling the notice logs. Mitigates bug 7799 but does
2056       not fix the underlying cause. Bugfix on 0.2.4.7-alpha.
2057     - Avoid spurious warnings when configuring multiple client ports of
2058       which only some are nonlocal. Previously, we had claimed that some
2059       were nonlocal when in fact they weren't. Fixes bug 7836; bugfix on
2060       0.2.3.3-alpha.
2061
2062   o Code simplifications and refactoring:
2063     - Get rid of a couple of harmless clang warnings, where we compared
2064       enums to ints. These warnings are newly introduced in clang 3.2.
2065     - Split the onion.c file into separate modules for the onion queue
2066       and the different handshakes it supports.
2067     - Remove the marshalling/unmarshalling code for sending requests to
2068       cpuworkers over a socket, and instead just send structs. The
2069       recipient will always be the same Tor binary as the sender, so
2070       any encoding is overkill.
2071
2072
2073 Changes in version 0.2.4.7-alpha - 2012-12-24
2074   Tor 0.2.4.7-alpha introduces a new approach to providing fallback
2075   directory mirrors for more robust bootstrapping; fixes more issues where
2076   clients with changing network conditions refuse to make any circuits;
2077   adds initial support for exiting to IPv6 addresses; resumes being able
2078   to update our GeoIP database, and includes the geoip6 file this time;
2079   turns off the client-side DNS cache by default due to privacy risks;
2080   and fixes a variety of other issues.
2081
2082   o Major features (client resilience):
2083     - Add a new "FallbackDir" torrc option to use when we can't use
2084       a directory mirror from the consensus (either because we lack a
2085       consensus, or because they're all down). Currently, all authorities
2086       are fallbacks by default, and there are no other default fallbacks,
2087       but that will change. This option will allow us to give clients a
2088       longer list of servers to try to get a consensus from when first
2089       connecting to the Tor network, and thereby reduce load on the
2090       directory authorities. Implements proposal 206, "Preconfigured
2091       directory sources for bootstrapping". We also removed the old
2092       "FallbackNetworkstatus" option, since we never got it working well
2093       enough to use it. Closes bug 572.
2094     - If we have no circuits open, use a relaxed timeout (the
2095       95-percentile cutoff) until a circuit succeeds. This heuristic
2096       should allow Tor to succeed at building circuits even when the
2097       network connection drastically changes. Should help with bug 3443.
2098
2099   o Major features (IPv6):
2100     - Relays can now exit to IPv6 addresses: make sure that you have IPv6
2101       connectivity, then set the IPv6Exit flag to 1. Also make sure your
2102       exit policy reads as you would like: the address * applies to all
2103       address families, whereas *4 is IPv4 address only, and *6 is IPv6
2104       addresses only. On the client side, you'll need to wait until the
2105       authorities have upgraded, wait for enough exits to support IPv6,
2106       apply the "IPv6Traffic" flag to a SocksPort, and use Socks5. Closes
2107       ticket 5547, implements proposal 117 as revised in proposal 208.
2108
2109       We DO NOT recommend that clients with actual anonymity needs start
2110       using IPv6 over Tor yet, since not enough exits support it yet.
2111
2112   o Major features (geoip database):
2113     - Maxmind began labelling Tor relays as being in country "A1",
2114       which breaks by-country node selection inside Tor. Now we use a
2115       script to replace "A1" ("Anonymous Proxy") entries in our geoip
2116       file with real country codes. This script fixes about 90% of "A1"
2117       entries automatically and uses manual country code assignments to
2118       fix the remaining 10%. See src/config/README.geoip for details.
2119       Fixes bug 6266. Also update to the December 5 2012 Maxmind GeoLite
2120       Country database, as modified above.
2121
2122   o Major bugfixes (client-side DNS):
2123     - Turn off the client-side DNS cache by default. Updating and using
2124       the DNS cache is now configurable on a per-client-port
2125       level. SOCKSPort, DNSPort, etc lines may now contain
2126       {No,}Cache{IPv4,IPv6,}DNS lines to indicate that we shouldn't
2127       cache these types of DNS answers when we receive them from an
2128       exit node in response to an application request on this port, and
2129       {No,}UseCached{IPv4,IPv6,DNS} lines to indicate that if we have
2130       cached DNS answers of these types, we shouldn't use them. It's
2131       potentially risky to use cached DNS answers at the client, since
2132       doing so can indicate to one exit what answers we've gotten
2133       for DNS lookups in the past. With IPv6, this becomes especially
2134       problematic. Using cached DNS answers for requests on the same
2135       circuit would present less linkability risk, since all traffic
2136       on a circuit is already linkable, but it would also provide
2137       little performance benefit: the exit node caches DNS replies
2138       too. Implements a simplified version of Proposal 205. Implements
2139       ticket 7570.
2140
2141   o Major bugfixes (other):
2142     - Alter circuit build timeout measurement to start at the point
2143       where we begin the CREATE/CREATE_FAST step (as opposed to circuit
2144       initialization). This should make our timeout measurements more
2145       uniform. Previously, we were sometimes including ORconn setup time
2146       in our circuit build time measurements. Should resolve bug 3443.
2147     - Fix an assertion that could trigger in hibernate_go_dormant() when
2148       closing an or_connection_t: call channel_mark_for_close() rather
2149       than connection_mark_for_close(). Fixes bug 7267. Bugfix on
2150       0.2.4.4-alpha.
2151     - Include the geoip6 IPv6 GeoIP database in the tarball. Fixes bug
2152       7655; bugfix on 0.2.4.6-alpha.
2153
2154   o Minor features:
2155     - Add a new torrc option "ServerTransportListenAddr" to let bridge
2156       operators select the address where their pluggable transports will
2157       listen for connections. Resolves ticket 7013.
2158     - Allow an optional $ before the node identity digest in the
2159       controller command GETINFO ns/id/<identity>, for consistency with
2160       md/id/<identity> and desc/id/<identity>. Resolves ticket 7059.
2161     - Log packaged cell fullness as part of the heartbeat message.
2162       Diagnosis to try to determine the extent of bug 7743.
2163
2164   o Minor features (IPv6):
2165     - AutomapHostsOnResolve now supports IPv6 addresses. By default, we
2166       prefer to hand out virtual IPv6 addresses, since there are more of
2167       them and we can't run out. To override this behavior and make IPv4
2168       addresses preferred, set NoPreferIPv6Automap on whatever SOCKSPort
2169       or DNSPort you're using for resolving. Implements ticket 7571.
2170     - AutomapHostsOnResolve responses are now randomized, to avoid
2171       annoying situations where Tor is restarted and applications
2172       connect to the wrong addresses.
2173     - Never try more than 1000 times to pick a new virtual address when
2174       AutomapHostsOnResolve is set. That's good enough so long as we
2175       aren't close to handing out our entire virtual address space;
2176       if you're getting there, it's best to switch to IPv6 virtual
2177       addresses anyway.
2178
2179   o Minor bugfixes:
2180     - The ADDRMAP command can no longer generate an ill-formed error
2181       code on a failed MAPADDRESS. It now says "internal" rather than
2182       an English sentence fragment with spaces in the middle. Bugfix on
2183       Tor 0.2.0.19-alpha.
2184     - Fix log messages and comments to avoid saying "GMT" when we mean
2185       "UTC". Fixes bug 6113.
2186     - Compile on win64 using mingw64. Fixes bug 7260; patches from
2187       "yayooo".
2188     - Fix a crash when debugging unit tests on Windows: deallocate a
2189       shared library with FreeLibrary, not CloseHandle. Fixes bug 7306;
2190       bugfix on 0.2.2.17-alpha. Reported by "ultramage".
2191
2192   o Renamed options:
2193     - The DirServer option is now DirAuthority, for consistency with
2194       current naming patterns. You can still use the old DirServer form.
2195
2196   o Code simplification and refactoring:
2197     - Move the client-side address-map/virtual-address/DNS-cache code
2198       out of connection_edge.c into a new addressmap.c module.
2199     - Remove unused code for parsing v1 directories and "running routers"
2200       documents. Fixes bug 6887.
2201
2202
2203 Changes in version 0.2.3.25 - 2012-11-19
2204   The Tor 0.2.3 release series is dedicated to the memory of Len "rabbi"
2205   Sassaman (1980-2011), a long-time cypherpunk, anonymity researcher,
2206   Mixmaster maintainer, Pynchon Gate co-designer, CodeCon organizer,
2207   programmer, and friend. Unstinting in his dedication to the cause of
2208   freedom, he inspired and helped many of us as we began our work on
2209   anonymity, and inspires us still. Please honor his memory by writing
2210   software to protect people's freedoms, and by helping others to do so.
2211
2212   Tor 0.2.3.25, the first stable release in the 0.2.3 branch, features
2213   significantly reduced directory overhead (via microdescriptors),
2214   enormous crypto performance improvements for fast relays on new
2215   enough hardware, a new v3 TLS handshake protocol that can better
2216   resist fingerprinting, support for protocol obfuscation plugins (aka
2217   pluggable transports), better scalability for hidden services, IPv6
2218   support for bridges, performance improvements like allowing clients
2219   to skip the first round-trip on the circuit ("optimistic data") and
2220   refilling token buckets more often, a new "stream isolation" design
2221   to isolate different applications on different circuits, and many
2222   stability, security, and privacy fixes.
2223
2224   o Major bugfixes:
2225     - Tor tries to wipe potentially sensitive data after using it, so
2226       that if some subsequent security failure exposes Tor's memory,
2227       the damage will be limited. But we had a bug where the compiler
2228       was eliminating these wipe operations when it decided that the
2229       memory was no longer visible to a (correctly running) program,
2230       hence defeating our attempt at defense in depth. We fix that
2231       by using OpenSSL's OPENSSL_cleanse() operation, which a compiler
2232       is unlikely to optimize away. Future versions of Tor may use
2233       a less ridiculously heavy approach for this. Fixes bug 7352.
2234       Reported in an article by Andrey Karpov.
2235
2236   o Minor bugfixes:
2237     - Fix a harmless bug when opting against publishing a relay descriptor
2238       because DisableNetwork is set. Fixes bug 7464; bugfix on
2239       0.2.3.9-alpha.
2240
2241
2242 Changes in version 0.2.4.6-alpha - 2012-11-13
2243   Tor 0.2.4.6-alpha fixes an assert bug that has been plaguing relays,
2244   makes our defense-in-depth memory wiping more reliable, and begins to
2245   count IPv6 addresses in bridge statistics,
2246
2247   o Major bugfixes:
2248     - Fix an assertion failure that could occur when closing a connection
2249       with a spliced rendezvous circuit. Fix for bug 7212; bugfix on
2250       Tor 0.2.4.4-alpha.
2251     - Tor tries to wipe potentially sensitive data after using it, so
2252       that if some subsequent security failure exposes Tor's memory,
2253       the damage will be limited. But we had a bug where the compiler
2254       was eliminating these wipe operations when it decided that the
2255       memory was no longer visible to a (correctly running) program,
2256       hence defeating our attempt at defense in depth. We fix that
2257       by using OpenSSL's OPENSSL_cleanse() operation, which a compiler
2258       is unlikely to optimize away. Future versions of Tor may use
2259       a less ridiculously heavy approach for this. Fixes bug 7352.
2260       Reported in an article by Andrey Karpov.
2261
2262   o Minor features:
2263     - Add GeoIP database for IPv6 addresses. The new config option
2264       is GeoIPv6File.
2265     - Bridge statistics now count bridge clients connecting over IPv6:
2266       bridge statistics files now list "bridge-ip-versions" and
2267       extra-info documents list "geoip6-db-digest". The control protocol
2268       "CLIENTS_SEEN" and "ip-to-country" queries now support IPv6. Initial
2269       implementation by "shkoo", addressing ticket 5055.
2270
2271   o Minor bugfixes:
2272     - Warn when we are binding low ports when hibernation is enabled;
2273       previously we had warned when we were _advertising_ low ports with
2274       hibernation enabled. Fixes bug 7285; bugfix on 0.2.3.9-alpha.
2275     - Fix a harmless bug when opting against publishing a relay descriptor
2276       because DisableNetwork is set. Fixes bug 7464; bugfix on
2277       0.2.3.9-alpha.
2278     - Add warning message when a managed proxy dies during configuration.
2279       Fixes bug 7195; bugfix on 0.2.4.2-alpha.
2280     - Fix a linking error when building tor-fw-helper without miniupnp.
2281       Fixes bug 7235; bugfix on 0.2.4.2-alpha. Fix by Anthony G. Basile.
2282     - Check for closing an or_connection_t without going through correct
2283       channel functions; emit a warning and then call
2284       connection_or_close_for_error() so we don't assert as in bugs 7212
2285       and 7267.
2286     - Compile correctly on compilers without C99 designated initializer
2287       support. Fixes bug 7286; bugfix on 0.2.4.4-alpha.
2288     - Avoid a possible assert that can occur when channel_send_destroy() is
2289       called on a channel in CHANNEL_STATE_CLOSING, CHANNEL_STATE_CLOSED,
2290       or CHANNEL_STATE_ERROR when the Tor process is resumed after being
2291       blocked for a long interval. Fixes bug 7350; bugfix on 0.2.4.4-alpha.
2292     - Fix a memory leak on failing cases of channel_tls_process_certs_cell.
2293       Fixes bug 7422; bugfix on 0.2.4.4-alpha.
2294
2295   o Code simplification and refactoring:
2296     - Start using OpenBSD's implementation of queue.h, so that we don't
2297       need to hand-roll our own pointer and list structures whenever we
2298       need them. (We can't rely on a sys/queue.h, since some operating
2299       systems don't have them, and the ones that do have them don't all
2300       present the same extensions.)
2301
2302
2303 Changes in version 0.2.4.5-alpha - 2012-10-25
2304   Tor 0.2.4.5-alpha comes hard at the heels of 0.2.4.4-alpha, to fix
2305   two important security vulnerabilities that could lead to remotely
2306   triggerable relay crashes, fix a major bug that was preventing clients
2307   from choosing suitable exit nodes, and refactor some of our code.
2308
2309   o Major bugfixes (security, also in 0.2.3.24-rc):
2310     - Fix a group of remotely triggerable assertion failures related to
2311       incorrect link protocol negotiation. Found, diagnosed, and fixed
2312       by "some guy from France". Fix for CVE-2012-2250; bugfix on
2313       0.2.3.6-alpha.
2314     - Fix a denial of service attack by which any directory authority
2315       could crash all the others, or by which a single v2 directory
2316       authority could crash everybody downloading v2 directory
2317       information. Fixes bug 7191; bugfix on 0.2.0.10-alpha.
2318
2319   o Major bugfixes (also in 0.2.3.24-rc):
2320     - When parsing exit policy summaries from microdescriptors, we had
2321       previously been ignoring the last character in each one, so that
2322       "accept 80,443,8080" would be treated by clients as indicating
2323       a node that allows access to ports 80, 443, and 808. That would
2324       lead to clients attempting connections that could never work,
2325       and ignoring exit nodes that would support their connections. Now
2326       clients parse these exit policy summaries correctly. Fixes bug 7192;
2327       bugfix on 0.2.3.1-alpha.
2328
2329   o Minor bugfixes (also in 0.2.3.24-rc):
2330     - Clients now consider the ClientRejectInternalAddresses config option
2331       when using a microdescriptor consensus stanza to decide whether
2332       an exit relay would allow exiting to an internal address. Fixes
2333       bug 7190; bugfix on 0.2.3.1-alpha.
2334
2335   o Minor bugfixes:
2336     - Only disable TLS session ticket support when running as a TLS
2337       server. Now clients will blend better with regular Firefox
2338       connections. Fixes bug 7189; bugfix on Tor 0.2.3.23-rc.
2339
2340   o Code simplification and refactoring:
2341     - Start using OpenBSD's implementation of queue.h (originally by
2342       Niels Provos).
2343     - Move the entry node code from circuitbuild.c to its own file.
2344     - Move the circuit build timeout tracking code from circuitbuild.c
2345       to its own file.
2346
2347
2348 Changes in version 0.2.3.24-rc - 2012-10-25
2349   Tor 0.2.3.24-rc fixes two important security vulnerabilities that
2350   could lead to remotely triggerable relay crashes, and fixes
2351   a major bug that was preventing clients from choosing suitable exit
2352   nodes.
2353
2354   o Major bugfixes (security):
2355     - Fix a group of remotely triggerable assertion failures related to
2356       incorrect link protocol negotiation. Found, diagnosed, and fixed
2357       by "some guy from France". Fix for CVE-2012-2250; bugfix on
2358       0.2.3.6-alpha.
2359     - Fix a denial of service attack by which any directory authority
2360       could crash all the others, or by which a single v2 directory
2361       authority could crash everybody downloading v2 directory
2362       information. Fixes bug 7191; bugfix on 0.2.0.10-alpha.
2363
2364   o Major bugfixes:
2365     - When parsing exit policy summaries from microdescriptors, we had
2366       previously been ignoring the last character in each one, so that
2367       "accept 80,443,8080" would be treated by clients as indicating
2368       a node that allows access to ports 80, 443, and 808. That would
2369       lead to clients attempting connections that could never work,
2370       and ignoring exit nodes that would support their connections. Now
2371       clients parse these exit policy summaries correctly. Fixes bug 7192;
2372       bugfix on 0.2.3.1-alpha.
2373
2374   o Minor bugfixes:
2375     - Clients now consider the ClientRejectInternalAddresses config option
2376       when using a microdescriptor consensus stanza to decide whether
2377       an exit relay would allow exiting to an internal address. Fixes
2378       bug 7190; bugfix on 0.2.3.1-alpha.
2379
2380
2381 Changes in version 0.2.4.4-alpha - 2012-10-20
2382   Tor 0.2.4.4-alpha adds a new v3 directory authority, fixes a privacy
2383   vulnerability introduced by a change in OpenSSL, fixes a remotely
2384   triggerable assert, and adds new channel_t and circuitmux_t abstractions
2385   that will make it easier to test new connection transport and cell
2386   scheduling algorithms.
2387
2388   o New directory authorities (also in 0.2.3.23-rc):
2389     - Add Faravahar (run by Sina Rabbani) as the ninth v3 directory
2390       authority. Closes ticket 5749.
2391
2392   o Major bugfixes (security/privacy, also in 0.2.3.23-rc):
2393     - Disable TLS session tickets. OpenSSL's implementation was giving
2394       our TLS session keys the lifetime of our TLS context objects, when
2395       perfect forward secrecy would want us to discard anything that
2396       could decrypt a link connection as soon as the link connection
2397       was closed. Fixes bug 7139; bugfix on all versions of Tor linked
2398       against OpenSSL 1.0.0 or later. Found by Florent Daignière.
2399     - Discard extraneous renegotiation attempts once the V3 link
2400       protocol has been initiated. Failure to do so left us open to
2401       a remotely triggerable assertion failure. Fixes CVE-2012-2249;
2402       bugfix on 0.2.3.6-alpha. Reported by "some guy from France".
2403
2404   o Internal abstraction features:
2405     - Introduce new channel_t abstraction between circuits and
2406       or_connection_t to allow for implementing alternate OR-to-OR
2407       transports. A channel_t is an abstract object which can either be a
2408       cell-bearing channel, which is responsible for authenticating and
2409       handshaking with the remote OR and transmitting cells to and from
2410       it, or a listening channel, which spawns new cell-bearing channels
2411       at the request of remote ORs. Implements part of ticket 6465.
2412     - Also new is the channel_tls_t subclass of channel_t, adapting it
2413       to the existing or_connection_t code. The V2/V3 protocol handshaking
2414       code which formerly resided in command.c has been moved below the
2415       channel_t abstraction layer and may be found in channeltls.c now.
2416       Implements the rest of ticket 6465.
2417     - Introduce new circuitmux_t storing the queue of circuits for
2418       a channel; this encapsulates and abstracts the queue logic and
2419       circuit selection policy, and allows the latter to be overridden
2420       easily by switching out a policy object. The existing EWMA behavior
2421       is now implemented as a circuitmux_policy_t. Resolves ticket 6816.
2422
2423   o Required libraries:
2424     - Tor now requires OpenSSL 0.9.8 or later. OpenSSL 1.0.0 or later is
2425       strongly recommended.
2426
2427   o Minor features:
2428     - Warn users who run hidden services on a Tor client with
2429       UseEntryGuards disabled that their hidden services will be
2430       vulnerable to http://freehaven.net/anonbib/#hs-attack06 (the
2431       attack which motivated Tor to support entry guards in the first
2432       place). Resolves ticket 6889.
2433     - Tor now builds correctly on Bitrig, an OpenBSD fork. Patch from
2434       dhill. Resolves ticket 6982.
2435     - Option OutboundBindAddress can be specified multiple times and
2436       accepts IPv6 addresses. Resolves ticket 6876.
2437
2438   o Minor bugfixes (also in 0.2.3.23-rc):
2439     - Don't serve or accept v2 hidden service descriptors over a
2440       relay's DirPort. It's never correct to do so, and disabling it
2441       might make it more annoying to exploit any bugs that turn up in the
2442       descriptor-parsing code. Fixes bug 7149.
2443     - Fix two cases in src/or/transports.c where we were calling
2444       fmt_addr() twice in a parameter list. Bug found by David
2445       Fifield. Fixes bug 7014; bugfix on 0.2.3.9-alpha.
2446     - Fix memory leaks whenever we logged any message about the "path
2447       bias" detection. Fixes bug 7022; bugfix on 0.2.3.21-rc.
2448     - When relays refuse a "create" cell because their queue of pending
2449       create cells is too big (typically because their cpu can't keep up
2450       with the arrival rate), send back reason "resource limit" rather
2451       than reason "internal", so network measurement scripts can get a
2452       more accurate picture. Fixes bug 7037; bugfix on 0.1.1.11-alpha.
2453
2454   o Minor bugfixes:
2455     - Command-line option "--version" implies "--quiet". Fixes bug 6997.
2456     - Free some more still-in-use memory at exit, to make hunting for
2457       memory leaks easier. Resolves bug 7029.
2458     - When a Tor client gets a "truncated" relay cell, the first byte of
2459       its payload specifies why the circuit was truncated. We were
2460       ignoring this 'reason' byte when tearing down the circuit, resulting
2461       in the controller not being told why the circuit closed. Now we
2462       pass the reason from the truncated cell to the controller. Bugfix
2463       on 0.1.2.3-alpha; fixes bug 7039.
2464     - Downgrade "Failed to hand off onionskin" messages to "debug"
2465       severity, since they're typically redundant with the "Your computer
2466       is too slow" messages. Fixes bug 7038; bugfix on 0.2.2.16-alpha.
2467     - Make clients running with IPv6 bridges connect over IPv6 again,
2468       even without setting new config options ClientUseIPv6 and
2469       ClientPreferIPv6ORPort. Fixes bug 6757; bugfix on 0.2.4.1-alpha.
2470     - Use square brackets around IPv6 addresses in numerous places
2471       that needed them, including log messages, HTTPS CONNECT proxy
2472       requests, TransportProxy statefile entries, and pluggable transport
2473       extra-info lines. Fixes bug 7011; patch by David Fifield.
2474
2475   o Code refactoring and cleanup:
2476     - Source files taken from other packages now reside in src/ext;
2477       previously they were scattered around the rest of Tor.
2478     - Avoid use of reserved identifiers in our C code. The C standard
2479       doesn't like us declaring anything that starts with an
2480       underscore, so let's knock it off before we get in trouble. Fix
2481       for bug 1031; bugfix on the first Tor commit.
2482
2483
2484 Changes in version 0.2.3.23-rc - 2012-10-20
2485   Tor 0.2.3.23-rc adds a new v3 directory authority, fixes a privacy
2486   vulnerability introduced by a change in OpenSSL, and fixes a variety
2487   of smaller bugs in preparation for the release.
2488
2489   o New directory authorities:
2490     - Add Faravahar (run by Sina Rabbani) as the ninth v3 directory
2491       authority. Closes ticket 5749.
2492
2493   o Major bugfixes (security/privacy):
2494     - Disable TLS session tickets. OpenSSL's implementation was giving
2495       our TLS session keys the lifetime of our TLS context objects, when
2496       perfect forward secrecy would want us to discard anything that
2497       could decrypt a link connection as soon as the link connection
2498       was closed. Fixes bug 7139; bugfix on all versions of Tor linked
2499       against OpenSSL 1.0.0 or later. Found by Florent Daignière.
2500     - Discard extraneous renegotiation attempts once the V3 link
2501       protocol has been initiated. Failure to do so left us open to
2502       a remotely triggerable assertion failure. Fixes CVE-2012-2249;
2503       bugfix on 0.2.3.6-alpha. Reported by "some guy from France".
2504
2505   o Major bugfixes:
2506     - Fix a possible crash bug when checking for deactivated circuits
2507       in connection_or_flush_from_first_active_circuit(). Fixes bug 6341;
2508       bugfix on 0.2.2.7-alpha. Bug report and fix received pseudonymously.
2509
2510   o Minor bugfixes (on 0.2.3.x):
2511     - Fix two cases in src/or/transports.c where we were calling
2512       fmt_addr() twice in a parameter list. Bug found by David
2513       Fifield. Fixes bug 7014; bugfix on 0.2.3.9-alpha.
2514     - Convert an assert in the pathbias code to a log message. The assert
2515       appears to only be triggerable by Tor2Web mode. Fixes bug 6866;
2516       bugfix on 0.2.3.17-beta.
2517     - Fix memory leaks whenever we logged any message about the "path
2518       bias" detection. Fixes bug 7022; bugfix on 0.2.3.21-rc.
2519
2520   o Minor bugfixes (on 0.2.2.x and earlier):
2521     - Don't serve or accept v2 hidden service descriptors over a relay's
2522       DirPort. It's never correct to do so, and disabling it might
2523       make it more annoying to exploit any bugs that turn up in the
2524       descriptor-parsing code. Fixes bug 7149.
2525     - When relays refuse a "create" cell because their queue of pending
2526       create cells is too big (typically because their cpu can't keep up
2527       with the arrival rate), send back reason "resource limit" rather
2528       than reason "internal", so network measurement scripts can get a
2529       more accurate picture. Bugfix on 0.1.1.11-alpha; fixes bug 7037.
2530     - Correct file sizes when reading binary files on Cygwin, to avoid
2531       a bug where Tor would fail to read its state file. Fixes bug 6844;
2532       bugfix on 0.1.2.7-alpha.
2533     - Avoid undefined behaviour when parsing the list of supported
2534       rendezvous/introduction protocols in a hidden service descriptor.
2535       Previously, Tor would have confused (as-yet-unused) protocol version
2536       numbers greater than 32 with lower ones on many platforms. Fixes
2537       bug 6827; bugfix on 0.2.0.10-alpha. Found by George Kadianakis.
2538
2539   o Documentation fixes:
2540     - Clarify that hidden services are TCP only. Fixes bug 6024.
2541
2542
2543 Changes in version 0.2.4.3-alpha - 2012-09-22
2544   Tor 0.2.4.3-alpha fixes another opportunity for a remotely triggerable
2545   assertion, resumes letting relays test reachability of their DirPort,
2546   and cleans up a bunch of smaller bugs.
2547
2548   o Security fixes:
2549     - Fix an assertion failure in tor_timegm() that could be triggered
2550       by a badly formatted directory object. Bug found by fuzzing with
2551       Radamsa. Fixes bug 6811; bugfix on 0.2.0.20-rc.
2552
2553   o Major bugfixes:
2554     - Fix a possible crash bug when checking for deactivated circuits
2555       in connection_or_flush_from_first_active_circuit(). Fixes bug 6341;
2556       bugfix on 0.2.2.7-alpha. Bug report and fix received pseudonymously.
2557     - Allow routers to detect that their own DirPorts are running. When
2558       we removed support for versions_supports_begindir, we also
2559       accidentally removed the mechanism we used to self-test our
2560       DirPort. Diagnosed with help from kargig. Fixes bugs 6814 and 6815;
2561       bugfix on 0.2.4.2-alpha.
2562
2563   o Security features:
2564     - Switch to a completely time-invariant approach for picking nodes
2565       weighted by bandwidth. Our old approach would run through the
2566       part of the loop after it had made its choice slightly slower
2567       than it ran through the part of the loop before it had made its
2568       choice. Addresses ticket 6538.
2569     - Disable the use of Guard nodes when in Tor2WebMode. Guard usage
2570       by tor2web clients allows hidden services to identify tor2web
2571       clients through their repeated selection of the same rendezvous
2572       and introduction point circuit endpoints (their guards). Resolves
2573       ticket 6888.
2574
2575   o Minor features:
2576     - Enable Tor to read configuration, state, and key information from
2577       a FIFO. Previously Tor would only read from files with a positive
2578       stat.st_size. Code from meejah; fixes bug 6044.
2579
2580   o Minor bugfixes:
2581     - Correct file sizes when reading binary files on Cygwin, to avoid
2582       a bug where Tor would fail to read its state file. Fixes bug 6844;
2583       bugfix on 0.1.2.7-alpha.
2584     - Correctly handle votes with more than 31 flags. Fixes bug 6853;
2585       bugfix on 0.2.0.3-alpha.
2586     - When complaining about a client port on a public address, log
2587       which address we're complaining about. Fixes bug 4020; bugfix on
2588       0.2.3.3-alpha. Patch by Tom Fitzhenry.
2589     - Convert an assert in the pathbias code to a log message. The assert
2590       appears to only be triggerable by Tor2Web mode. Fixes bug 6866;
2591       bugfix on 0.2.3.17-beta.
2592     - Our new buildsystem was overzealous about rebuilding manpages: it
2593       would rebuild them all whenever any one of them changed. Now our
2594       dependency checking should be correct. Fixes bug 6843; bugfix on
2595       0.2.4.1-alpha.
2596     - Don't do reachability testing over IPv6 unless AuthDirPublishIPv6
2597       is set. Fixes bug 6880. Bugfix on 0.2.4.1-alpha.
2598     - Correct log printout about which address family is preferred
2599       when connecting to a bridge with both an IPv4 and IPv6 OR port.
2600       Fixes bug 6884; bugfix on 0.2.4.1-alpha.
2601
2602   o Minor bugfixes (code cleanliness):
2603     - Fix round_to_power_of_2() so it doesn't invoke undefined behavior
2604       with large values. This situation was untriggered, but nevertheless
2605       incorrect. Fixes bug 6831; bugfix on 0.2.0.1-alpha.
2606     - Reject consensus votes with more than 64 known-flags. We aren't even
2607       close to that limit yet, and our code doesn't handle it correctly.
2608       Fixes bug 6833; bugfix on 0.2.0.1-alpha.
2609     - Avoid undefined behaviour when parsing the list of supported
2610       rendezvous/introduction protocols in a hidden service descriptor.
2611       Previously, Tor would have confused (as-yet-unused) protocol version
2612       numbers greater than 32 with lower ones on many platforms. Fixes
2613       bug 6827; bugfix on 0.2.0.10-alpha. Found by George Kadianakis.
2614     - Fix handling of rendezvous client authorization types over 8.
2615       Fixes bug 6861; bugfix on 0.2.1.5-alpha.
2616     - Fix building with older versions of GCC (2.95, for one) that don't
2617       like preprocessor directives inside macro arguments. Found by
2618       grarpamp. Fixes bug 6842; bugfix on 0.2.4.2-alpha.
2619     - Switch weighted node selection rule from using a list of doubles
2620       to using a list of int64_t. This change should make the process
2621       slightly easier to debug and maintain. Needed to finish ticket 6538.
2622
2623   o Code simplification and refactoring:
2624     - Move the generic "config" code into a new file, and have "config.c"
2625       hold only torrc- and state-related code. Resolves ticket 6823.
2626     - Move the core of our "choose a weighted element at random" logic
2627       into its own function, and give it unit tests. Now the logic is
2628       testable, and a little less fragile too.
2629     - Removed the testing_since field of node_t, which hasn't been used
2630       for anything since 0.2.0.9-alpha.
2631
2632   o Documentation fixes:
2633     - Clarify that hidden services are TCP only. Fixes bug 6024.
2634     - Resolve a typo in torrc.sample.in. Fixes bug 6819; bugfix on
2635       0.2.3.14-alpha.
2636
2637
2638 Changes in version 0.2.3.22-rc - 2012-09-11
2639   Tor 0.2.3.22-rc fixes another opportunity for a remotely triggerable
2640   assertion.
2641
2642   o Security fixes:
2643     - Fix an assertion failure in tor_timegm() that could be triggered
2644       by a badly formatted directory object. Bug found by fuzzing with
2645       Radamsa. Fixes bug 6811; bugfix on 0.2.0.20-rc.
2646
2647   o Minor bugfixes:
2648     - Avoid segfault when starting up having run with an extremely old
2649       version of Tor and parsing its state file. Fixes bug 6801; bugfix
2650       on 0.2.2.23-alpha.
2651
2652
2653 Changes in version 0.2.2.39 - 2012-09-11
2654   Tor 0.2.2.39 fixes two more opportunities for remotely triggerable
2655   assertions.
2656
2657   o Security fixes:
2658     - Fix an assertion failure in tor_timegm() that could be triggered
2659       by a badly formatted directory object. Bug found by fuzzing with
2660       Radamsa. Fixes bug 6811; bugfix on 0.2.0.20-rc.
2661     - Do not crash when comparing an address with port value 0 to an
2662       address policy. This bug could have been used to cause a remote
2663       assertion failure by or against directory authorities, or to
2664       allow some applications to crash clients. Fixes bug 6690; bugfix
2665       on 0.2.1.10-alpha.
2666
2667
2668 Changes in version 0.2.4.2-alpha - 2012-09-10
2669   Tor 0.2.4.2-alpha enables port forwarding for pluggable transports,
2670   raises the default rate limiting even more, and makes the bootstrapping
2671   log messages less noisy.
2672
2673   o Major features:
2674     - Automatically forward the TCP ports of pluggable transport
2675       proxies using tor-fw-helper if PortForwarding is enabled. Implements
2676       ticket 4567.
2677
2678   o Major bugfixes:
2679     - Raise the default BandwidthRate/BandwidthBurst values from 5MB/10MB
2680       to 1GB/1GB. The previous defaults were intended to be "basically
2681       infinite", but it turns out they're now limiting our 100mbit+
2682       relays and bridges. Fixes bug 6605; bugfix on 0.2.0.10-alpha (the
2683       last time we raised it).
2684
2685   o Minor features:
2686     - Detect when we're running with a version of OpenSSL other than the
2687       one we compiled with. This has occasionally given people hard-to-
2688       track-down errors.
2689     - Log fewer lines at level "notice" about our OpenSSL and Libevent
2690       versions and capabilities when everything is going right. Resolves
2691       part of ticket 6736.
2692     - Directory authorities no long accept descriptors for any version of
2693       Tor before 0.2.2.35, or for any 0.2.3 release before 0.2.3.10-alpha.
2694       These versions are insecure, unsupported, or both. Implements
2695       ticket 6789.
2696
2697   o Minor bugfixes:
2698     - Rename the (internal-use-only) UsingTestingNetworkDefaults option
2699       to start with a triple-underscore so the controller won't touch it.
2700       Patch by Meejah. Fixes bug 3155. Bugfix on 0.2.2.23-alpha.
2701     - Avoid segfault when starting up having run with an extremely old
2702       version of Tor and parsing its state file. Fixes bug 6801; bugfix
2703       on 0.2.2.23-alpha.
2704     - Rename the (testing-use-only) _UseFilteringSSLBufferevents option
2705       so it doesn't start with _. Fixes bug 3155. Bugfix on 0.2.3.1-alpha.
2706     - Don't follow the NULL pointer if microdescriptor generation fails.
2707       (This does not appear to be triggerable, but it's best to be safe.)
2708       Found by "f. tp.". Fixes bug 6797; bugfix on 0.2.4.1-alpha.
2709     - Fix mis-declared dependencies on src/common/crypto.c and
2710       src/or/tor_main.c that could break out-of-tree builds under some
2711       circumstances. Fixes bug 6778; bugfix on 0.2.4.1-alpha.
2712     - Avoid a warning when building common_sha1.i out of tree. Fixes bug
2713       6778; bugfix on 0.2.4.1-alpha.
2714     - Fix a harmless (in this case) build warning for implicitly
2715       converting a strlen() to an int. Bugfix on 0.2.4.1-alpha.
2716
2717   o Removed features:
2718     - Now that all versions before 0.2.2.x are disallowed, we no longer
2719       need to work around their missing features. Thus we can remove a
2720       bunch of compatibility code.
2721
2722   o Code refactoring:
2723     - Tweak tor-fw-helper to accept an arbitrary amount of arbitrary
2724       TCP ports to forward. In the past it only accepted two ports:
2725       the ORPort and the DirPort.
2726
2727
2728 Changes in version 0.2.4.1-alpha - 2012-09-05
2729   Tor 0.2.4.1-alpha lets bridges publish their pluggable transports to
2730   bridgedb; lets relays use IPv6 addresses and directory authorities
2731   advertise them; and switches to a cleaner build interface.
2732
2733   This is the first alpha release in a new series, so expect there to
2734   be bugs. Users who would rather test out a more stable branch should
2735   stay with 0.2.3.x for now.
2736
2737   o Major features (bridges):
2738     - Bridges now report the pluggable transports they support to the
2739       bridge authority, so it can pass the supported transports on to
2740       bridgedb and/or eventually do reachability testing. Implements
2741       ticket 3589.
2742
2743   o Major features (IPv6):
2744     - Bridge authorities now accept IPv6 bridge addresses and include
2745       them in network status documents. Implements ticket 5534.
2746     - Clients who set "ClientUseIPv6 1" may connect to entry nodes over
2747       IPv6. Set "ClientPreferIPv6ORPort 1" to make this even more likely
2748       to happen. Implements ticket 5535.
2749     - All kind of relays, not just bridges, can now advertise an IPv6
2750       OR port. Implements ticket 6362.
2751     - Directory authorities vote on IPv6 OR ports using the new consensus
2752       method 14. Implements ticket 6363.
2753
2754   o Major features (build):
2755     - Switch to a nonrecursive Makefile structure. Now instead of each
2756       Makefile.am invoking other Makefile.am's, there is a master
2757       Makefile.am that includes the others. This change makes our build
2758       process slightly more maintainable, and improves parallelism for
2759       building with make -j. Original patch by Stewart Smith; various
2760       fixes by Jim Meyering.
2761     - Where available, we now use automake's "silent" make rules by
2762       default, so that warnings are easier to spot. You can get the old
2763       behavior with "make V=1". Patch by Stewart Smith for ticket 6522.
2764
2765   o Minor features (code security and spec conformance):
2766     - Clear keys and key-derived material left on the stack in
2767       rendservice.c and rendclient.c. Check return value of
2768       crypto_pk_write_private_key_to_string() in rend_service_load_keys().
2769       These fixes should make us more forward-secure against cold-boot
2770       attacks and the like. Fixes bug 2385.
2771     - Reject EXTEND cells sent to nonexistent streams. According to the
2772       spec, an EXTEND cell sent to _any_ nonzero stream ID is invalid, but
2773       we were only checking for stream IDs that were currently in use.
2774       Found while hunting for more instances of bug 6271. Bugfix on
2775       0.0.2pre8, which introduced incremental circuit construction.
2776
2777   o Minor features (streamlining);
2778     - No longer include the "opt" prefix when generating routerinfos
2779       or v2 directories: it has been needless since Tor 0.1.2. Closes
2780       ticket 5124.
2781     - Remove some now-needless code that tried to aggressively flush
2782       OR connections as data was added to them. Since 0.2.0.1-alpha, our
2783       cell queue logic has saved us from the failure mode that this code
2784       was supposed to prevent. Removing this code will limit the number
2785       of baroque control flow paths through Tor's network logic. Reported
2786       pseudonymously on IRC. Fixes bug 6468; bugfix on 0.2.0.1-alpha.
2787
2788   o Minor features (controller):
2789     - Add a "GETINFO signal/names" control port command. Implements
2790       ticket 3842.
2791     - Provide default values for all options via "GETINFO config/defaults".
2792       Implements ticket 4971.
2793
2794   o Minor features (IPv6):
2795     - New config option "AuthDirHasIPv6Connectivity 1" that directory
2796       authorities should set if they have IPv6 connectivity and want to
2797       do reachability tests for IPv6 relays. Implements feature 5974.
2798     - A relay with an IPv6 OR port now sends that address in NETINFO
2799       cells (in addition to its other address). Implements ticket 6364.
2800
2801   o Minor features (log messages):
2802     - Omit the first heartbeat log message, because it never has anything
2803       useful to say, and it clutters up the bootstrapping messages.
2804       Resolves ticket 6758.
2805     - Don't log about reloading the microdescriptor cache at startup. Our
2806       bootstrap warnings are supposed to tell the user when there's a
2807       problem, and our bootstrap notices say when there isn't. Resolves
2808       ticket 6759; bugfix on 0.2.2.6-alpha.
2809     - Don't log "I learned some more directory information" when we're
2810       reading cached directory information. Reserve it for when new
2811       directory information arrives in response to a fetch. Resolves
2812       ticket 6760.
2813     - Prevent rounding error in path bias counts when scaling
2814       them down, and use the correct scale factor default. Also demote
2815       some path bias related log messages down a level and make others
2816       less scary sounding. Fixes bug 6647. Bugfix against 0.2.3.17-beta.
2817     - We no longer warn so much when generating manpages from their
2818       asciidoc source.
2819
2820   o Code simplifications and refactoring:
2821     - Enhance our internal sscanf replacement so that we can eliminate
2822       the last remaining uses of the system sscanf. (Though those uses
2823       of sscanf were safe, sscanf itself is generally error prone, so
2824       we want to eliminate when we can.) Fixes ticket 4195 and Coverity
2825       CID 448.
2826     - Move ipv6_preferred from routerinfo_t to node_t. Addresses bug 4620.
2827     - Move last_reachable and testing_since from routerinfo_t to node_t.
2828       Implements ticket 5529.
2829     - Add replaycache_t structure, functions and unit tests, then refactor
2830       rend_service_introduce() to be more clear to read, improve, debug,
2831       and test. Resolves bug 6177.
2832     - Finally remove support for malloc_good_size and malloc_usable_size.
2833       We had hoped that these functions would let us eke a little more
2834       memory out of our malloc implementation. Unfortunately, the only
2835       implementations that provided these functions are also ones that
2836       are already efficient about not overallocation: they never got us
2837       more than 7 or so bytes per allocation. Removing them saves us a
2838       little code complexity and a nontrivial amount of build complexity.
2839
2840   o New requirements:
2841     - Tor maintainers now require Automake version 1.9 or later to build
2842       Tor from the Git repository. (Automake is not required when building
2843       from a source distribution.)
2844
2845
2846 Changes in version 0.2.3.21-rc - 2012-09-05
2847   Tor 0.2.3.21-rc is the fourth release candidate for the Tor 0.2.3.x
2848   series. It fixes a trio of potential security bugs, fixes a bug where
2849   we were leaving some of the fast relays out of the microdescriptor
2850   consensus, resumes interpreting "ORPort 0" and "DirPort 0" correctly,
2851   and cleans up other smaller issues.
2852
2853   o Major bugfixes (security):
2854     - Tear down the circuit if we get an unexpected SENDME cell. Clients
2855       could use this trick to make their circuits receive cells faster
2856       than our flow control would have allowed, or to gum up the network,
2857       or possibly to do targeted memory denial-of-service attacks on
2858       entry nodes. Fixes bug 6252. Bugfix on the 54th commit on Tor --
2859       from July 2002, before the release of Tor 0.0.0. We had committed
2860       this patch previously, but we had to revert it because of bug 6271.
2861       Now that 6271 is fixed, this patch appears to work.
2862     - Reject any attempt to extend to an internal address. Without
2863       this fix, a router could be used to probe addresses on an internal
2864       network to see whether they were accepting connections. Fixes bug
2865       6710; bugfix on 0.0.8pre1.
2866     - Do not crash when comparing an address with port value 0 to an
2867       address policy. This bug could have been used to cause a remote
2868       assertion failure by or against directory authorities, or to
2869       allow some applications to crash clients. Fixes bug 6690; bugfix
2870       on 0.2.1.10-alpha.
2871
2872   o Major bugfixes:
2873     - Remove the upper bound on microdescriptor length. We were hitting
2874       the limit for routers with complex exit policies or family
2875       declarations, causing clients to not use them. Fixes the first
2876       piece of bug 6404; fix on 0.2.2.6-alpha.
2877     - Detect "ORPort 0" as meaning, uniformly, that we're not running
2878       as a relay. Previously, some of our code would treat the presence
2879       of any ORPort line as meaning that we should act like a relay,
2880       even though our new listener code would correctly not open any
2881       ORPorts for ORPort 0. Similar bugs in other Port options are also
2882       fixed. Fixes the first half of bug 6507; bugfix on 0.2.3.3-alpha.
2883
2884   o Minor bugfixes:
2885     - Avoid a pair of double-free and use-after-mark bugs that can
2886       occur with certain timings in canceled and re-received DNS
2887       requests. Fixes bug 6472; bugfix on 0.0.7rc1.
2888     - Fix build and 64-bit compile warnings from --enable-openbsd-malloc.
2889       Fixes bug 6379. Bugfix on 0.2.0.20-rc.
2890     - Allow one-hop directory fetching circuits the full "circuit build
2891       timeout" period, rather than just half of it, before failing them
2892       and marking the relay down. This fix should help reduce cases where
2893       clients declare relays (or worse, bridges) unreachable because
2894       the TLS handshake takes a few seconds to complete. Fixes bug 6743;
2895       bugfix on 0.2.2.2-alpha, where we changed the timeout from a static
2896       30 seconds.
2897     - Authorities no longer include any router in their microdescriptor
2898       consensuses for which they couldn't generate or agree on a
2899       microdescriptor. Fixes the second piece of bug 6404; fix on
2900       0.2.2.6-alpha.
2901     - Detect and reject attempts to specify both "FooPort" and
2902       "FooPort 0" in the same configuration domain. (It's still okay
2903       to have a FooPort in your configuration file, and use "FooPort 0"
2904       on the command line to disable it.) Fixes the second half of bug
2905       6507; bugfix on 0.2.3.3-alpha.
2906     - Make wildcarded addresses (that is, ones beginning with "*.") work
2907       when provided via the controller's MapAddress command. Previously,
2908       they were accepted, but we never actually noticed that they were
2909       wildcards. Fixes bug 6244; bugfix on 0.2.3.9-alpha.
2910     - Avoid crashing on a malformed state file where EntryGuardPathBias
2911       precedes EntryGuard. Fix for bug 6774; bugfix on 0.2.3.17-beta.
2912     - Add a (probably redundant) memory clear between iterations of
2913       the router status voting loop, to prevent future coding errors
2914       where data might leak between iterations of the loop. Resolves
2915       ticket 6514.
2916
2917   o Minor bugfixes (log messages):
2918     - Downgrade "set buildtimeout to low value" messages to "info"
2919       severity; they were never an actual problem, there was never
2920       anything reasonable to do about them, and they tended to spam logs
2921       from time to time. Fixes bug 6251; bugfix on 0.2.2.2-alpha.
2922     - Downgrade path-bias warning messages to "info". We'll try to get
2923       them working better in 0.2.4. Add internal circuit construction
2924       state to protect against the noisy warn message "Unexpectedly high
2925       circuit_successes". Also add some additional rate-limited notice
2926       messages to help determine the root cause of the warn. Fixes bug
2927       6475. Bugfix against 0.2.3.17-beta.
2928     - Move log message when unable to find a microdesc in a routerstatus
2929       entry to parse time. Previously we'd spam this warning every time
2930       we tried to figure out which microdescriptors to download. Fixes
2931       the third piece of bug 6404; fix on 0.2.3.18-rc.
2932
2933   o Minor features:
2934     - Consider new, removed or changed IPv6 OR ports a non-cosmetic
2935       change when the authority is deciding whether to accept a newly
2936       uploaded descriptor. Implements ticket 6423.
2937     - Add missing documentation for consensus and microdesc files.
2938       Resolves ticket 6732.
2939
2940
2941 Changes in version 0.2.2.38 - 2012-08-12
2942   Tor 0.2.2.38 fixes a remotely triggerable crash bug, and fixes a timing
2943   attack that could in theory leak path information.
2944
2945   o Security fixes:
2946     - Avoid an uninitialized memory read when reading a vote or consensus
2947       document that has an unrecognized flavor name. This read could
2948       lead to a remote crash bug. Fixes bug 6530; bugfix on 0.2.2.6-alpha.
2949     - Try to leak less information about what relays a client is
2950       choosing to a side-channel attacker. Previously, a Tor client would
2951       stop iterating through the list of available relays as soon as it
2952       had chosen one, thus finishing a little earlier when it picked
2953       a router earlier in the list. If an attacker can recover this
2954       timing information (nontrivial but not proven to be impossible),
2955       they could learn some coarse-grained information about which relays
2956       a client was picking (middle nodes in particular are likelier to
2957       be affected than exits). The timing attack might be mitigated by
2958       other factors (see bug 6537 for some discussion), but it's best
2959       not to take chances. Fixes bug 6537; bugfix on 0.0.8rc1.
2960
2961
2962 Changes in version 0.2.3.20-rc - 2012-08-05
2963   Tor 0.2.3.20-rc is the third release candidate for the Tor 0.2.3.x
2964   series. It fixes a pair of code security bugs and a potential anonymity
2965   issue, updates our RPM spec files, and cleans up other smaller issues.
2966
2967   o Security fixes:
2968     - Avoid read-from-freed-memory and double-free bugs that could occur
2969       when a DNS request fails while launching it. Fixes bug 6480;
2970       bugfix on 0.2.0.1-alpha.
2971     - Avoid an uninitialized memory read when reading a vote or consensus
2972       document that has an unrecognized flavor name. This read could
2973       lead to a remote crash bug. Fixes bug 6530; bugfix on 0.2.2.6-alpha.
2974     - Try to leak less information about what relays a client is
2975       choosing to a side-channel attacker. Previously, a Tor client would
2976       stop iterating through the list of available relays as soon as it
2977       had chosen one, thus finishing a little earlier when it picked
2978       a router earlier in the list. If an attacker can recover this
2979       timing information (nontrivial but not proven to be impossible),
2980       they could learn some coarse-grained information about which relays
2981       a client was picking (middle nodes in particular are likelier to
2982       be affected than exits). The timing attack might be mitigated by
2983       other factors (see bug 6537 for some discussion), but it's best
2984       not to take chances. Fixes bug 6537; bugfix on 0.0.8rc1.
2985
2986   o Minor features:
2987     - Try to make the warning when giving an obsolete SOCKSListenAddress
2988       a little more useful.
2989     - Terminate active server managed proxies if Tor stops being a
2990       relay. Addresses parts of bug 6274; bugfix on 0.2.3.6-alpha.
2991     - Provide a better error message about possible OSX Asciidoc failure
2992       reasons. Fixes bug 6436.
2993     - Warn when Tor is configured to use accounting in a way that can
2994       link a hidden service to some other hidden service or public
2995       address. Resolves ticket 6490.
2996
2997   o Minor bugfixes:
2998     - Check return value of fputs() when writing authority certificate
2999       file. Fixes Coverity issue 709056; bugfix on 0.2.0.1-alpha.
3000     - Ignore ServerTransportPlugin lines when Tor is not configured as
3001       a relay. Fixes bug 6274; bugfix on 0.2.3.6-alpha.
3002     - When disabling guards for having too high a proportion of failed
3003       circuits, make sure to look at each guard. Fixes bug 6397; bugfix
3004       on 0.2.3.17-beta.
3005
3006   o Packaging (RPM):
3007     - Update our default RPM spec files to work with mock and rpmbuild
3008       on RHEL/Fedora. They have an updated set of dependencies and
3009       conflicts, a fix for an ancient typo when creating the "_tor"
3010       user, and better instructions. Thanks to Ondrej Mikle for the
3011       patch series. Fixes bug 6043.
3012
3013   o Testing:
3014     - Make it possible to set the TestingTorNetwork configuration
3015       option using AlternateDirAuthority and AlternateBridgeAuthority
3016       as an alternative to setting DirServer. Addresses ticket 6377.
3017
3018   o Documentation:
3019     - Clarify the documentation for the Alternate*Authority options.
3020       Fixes bug 6387.
3021     - Fix some typos in the manpages. Patch from A. Costa. Fixes bug 6500.
3022
3023   o Code simplification and refactoring:
3024     - Do not use SMARTLIST_FOREACH for any loop whose body exceeds
3025       10 lines. Also, don't nest them. Doing so in the past has
3026       led to hard-to-debug code. The new style is to use the
3027       SMARTLIST_FOREACH_{BEGIN,END} pair. Addresses issue 6400.
3028
3029
3030 Changes in version 0.2.3.19-rc - 2012-07-06
3031   Tor 0.2.3.19-rc is the second release candidate for the Tor 0.2.3.x
3032   series. It fixes the compile on Windows, reverts to a GeoIP database
3033   that isn't as broken, and fixes a flow control bug that has been around
3034   since the beginning of Tor.
3035
3036   o Major bugfixes:
3037     - Fix a bug handling SENDME cells on nonexistent streams that could
3038       result in bizarre window values. Report and patch contributed
3039       pseudonymously. Fixes part of bug 6271. This bug was introduced
3040       before the first Tor release, in svn commit r152.
3041     - Revert to the May 1 2012 Maxmind GeoLite Country database. In the
3042       June 2012 database, Maxmind marked many Tor relays as country "A1",
3043       which will cause risky behavior for clients that set EntryNodes
3044       or ExitNodes. Addresses bug 6334; bugfix on 0.2.3.17-beta.
3045     - Instead of ENOBUFS on Windows, say WSAENOBUFS. Fixes compilation
3046       on Windows. Fixes bug 6296; bugfix on 0.2.3.18-rc.
3047
3048   o Minor bugfixes:
3049     - Fix wrong TCP port range in parse_port_range(). Fixes bug 6218;
3050       bugfix on 0.2.1.10-alpha.
3051
3052
3053 Changes in version 0.2.3.18-rc - 2012-06-28
3054   Tor 0.2.3.18-rc is the first release candidate for the Tor 0.2.3.x
3055   series. It fixes a few smaller bugs, but generally appears stable.
3056   Please test it and let us know whether it is!
3057
3058   o Major bugfixes:
3059     - Allow wildcarded mapaddress targets to be specified on the
3060       controlport. Partially fixes bug 6244; bugfix on 0.2.3.9-alpha.
3061     - Make our linker option detection code more robust against linkers
3062       such as on FreeBSD 8, where a bad combination of options completes
3063       successfully but makes an unrunnable binary. Fixes bug 6173;
3064       bugfix on 0.2.3.17-beta.
3065
3066   o Minor bugfixes (on 0.2.2.x and earlier):
3067     - Avoid a false positive in the util/threads unit test by increasing
3068       the maximum timeout time. Fixes bug 6227; bugfix on 0.2.0.4-alpha.
3069     - Replace "Sending publish request" log messages with "Launching
3070       upload", so that they no longer confusingly imply that we're
3071       sending something to a directory we might not even be connected
3072       to yet. Fixes bug 3311; bugfix on 0.2.0.10-alpha.
3073     - Make sure to set *socket_error in all error cases in
3074       connection_connect(), so it can't produce a warning about
3075       errno being zero from errno_to_orconn_end_reason(). Bugfix on
3076       0.2.1.1-alpha; resolves ticket 6028.
3077     - Downgrade "Got a certificate, but we already have it" log messages
3078       from warning to info, except when we're a dirauth. Fixes bug 5238;
3079       bugfix on 0.2.1.7-alpha.
3080     - When checking for requested signatures on the latest consensus
3081       before serving it to a client, make sure to check the right
3082       consensus flavor. Bugfix on 0.2.2.6-alpha.
3083     - Downgrade "eventdns rejected address" message to LOG_PROTOCOL_WARN.
3084       Fixes bug 5932; bugfix on 0.2.2.7-alpha.
3085
3086   o Minor bugfixes (on 0.2.3.x):
3087     - Make format_helper_exit_status() avoid unnecessary space padding
3088       and stop confusing log_from_pipe(). Fixes ticket 5557; bugfix
3089       on 0.2.3.1-alpha.
3090     - Downgrade a message about cleaning the microdescriptor cache to
3091       "info" from "notice". Fixes bug 6238; bugfix on 0.2.3.1-alpha.
3092     - Log a BUG message at severity INFO if we have a networkstatus with
3093       a missing entry for some microdescriptor. Continues on a patch
3094       to 0.2.3.2-alpha.
3095     - Improve the log message when a managed proxy fails to launch. Fixes
3096       bug 5099; bugfix on 0.2.3.6-alpha.
3097     - Don't do DNS lookups when parsing corrupted managed proxy protocol
3098       messages. Fixes bug 6226; bugfix on 0.2.3.6-alpha.
3099     - When formatting wildcarded address mappings for the controller,
3100       be sure to include "*." as appropriate. Partially fixes bug 6244;
3101       bugfix on 0.2.3.9-alpha.
3102     - Avoid a warning caused by using strcspn() from glibc with clang 3.0.
3103       Bugfix on 0.2.3.13-alpha.
3104     - Stop logging messages about running with circuit timeout learning
3105       enabled at severity LD_BUG. Fixes bug 6169; bugfix on 0.2.3.17-beta.
3106     - Disable a spurious warning about reading on a marked and flushing
3107       connection. We shouldn't be doing that, but apparently we
3108       sometimes do. Fixes bug 6203; bugfix on 0.2.3.17-beta.
3109     - Fix a bug that stopped AllowDotExit from working on addresses
3110       that had an entry in the DNS cache. Fixes bug 6211; bugfix on
3111       0.2.3.17-beta.
3112
3113   o Code simplification, refactoring, unit tests:
3114     - Move tor_gettimeofday_cached() into compat_libevent.c, and use
3115       Libevent's notion of cached time when possible.
3116     - Remove duplicate code for invoking getrlimit() from control.c.
3117     - Add a unit test for the environment_variable_names_equal function.
3118
3119   o Documentation:
3120     - Document the --defaults-torrc option, and the new (in 0.2.3)
3121       semantics for overriding, extending, and clearing lists of
3122       options. Closes bug 4748.
3123
3124
3125 Changes in version 0.2.3.17-beta - 2012-06-15
3126   Tor 0.2.3.17-beta enables compiler and linker hardening by default,
3127   gets our TLS handshake back on track for being able to blend in with
3128   Firefox, fixes a big bug in 0.2.3.16-alpha that broke Tor's interaction
3129   with Vidalia, and otherwise continues to get us closer to a release
3130   candidate.
3131
3132   o Major features:
3133     - Enable gcc and ld hardening by default. Resolves ticket 5210.
3134     - Update TLS cipher list to match Firefox 8 and later. Resolves
3135       ticket 4744.
3136     - Implement the client side of proposal 198: remove support for
3137       clients falsely claiming to support standard ciphersuites that
3138       they can actually provide. As of modern OpenSSL versions, it's not
3139       necessary to fake any standard ciphersuite, and doing so prevents
3140       us from using better ciphersuites in the future, since servers
3141       can't know whether an advertised ciphersuite is really supported or
3142       not. Some hosts -- notably, ones with very old versions of OpenSSL
3143       or where OpenSSL has been built with ECC disabled -- will stand
3144       out because of this change; TBB users should not be affected.
3145
3146   o Major bugfixes:
3147     - Change the default value for DynamicDHGroups (introduced in
3148       0.2.3.9-alpha) to 0. This feature can make Tor relays less
3149       identifiable by their use of the mod_ssl DH group, but at
3150       the cost of some usability (#4721) and bridge tracing (#6087)
3151       regressions. Resolves ticket 5598.
3152     - Send a CRLF at the end of each STATUS_* control protocol event. This
3153       bug tickled a bug in Vidalia which would make it freeze. Fixes
3154       bug 6094; bugfix on 0.2.3.16-alpha.
3155
3156   o Minor bugfixes:
3157     - Disable writing on marked-for-close connections when they are
3158       blocked on bandwidth, to prevent busy-looping in Libevent. Fixes
3159       bug 5263; bugfix on 0.0.2pre13, where we first added a special
3160       case for flushing marked connections.
3161     - Detect SSL handshake even when the initial attempt to write the
3162       server hello fails. Fixes bug 4592; bugfix on 0.2.0.13-alpha.
3163     - Change the AllowDotExit rules so they should actually work.
3164       We now enforce AllowDotExit only immediately after receiving an
3165       address via SOCKS or DNSPort: other sources are free to provide
3166       .exit addresses after the resolution occurs. Fixes bug 3940;
3167       bugfix on 0.2.2.1-alpha.
3168     - Fix a (harmless) integer overflow in cell statistics reported by
3169       some fast relays. Fixes bug 5849; bugfix on 0.2.2.1-alpha.
3170     - Make sure circuitbuild.c checks LearnCircuitBuildTimeout in all the
3171       right places and never depends on the consensus parameters or
3172       computes adaptive timeouts when it is disabled. Fixes bug 5049;
3173       bugfix on 0.2.2.14-alpha.
3174     - When building Tor on Windows with -DUNICODE (not default), ensure
3175       that error messages, filenames, and DNS server names are always
3176       NUL-terminated when we convert them to a single-byte encoding.
3177       Fixes bug 5909; bugfix on 0.2.2.16-alpha.
3178     - Make Tor build correctly again with -DUNICODE -D_UNICODE defined.
3179       Fixes bug 6097; bugfix on 0.2.2.16-alpha.
3180     - Fix an edge case where TestingTorNetwork is set but the authorities
3181       and relays all have an uptime of zero, where the private Tor network
3182       could briefly lack support for hidden services. Fixes bug 3886;
3183       bugfix on 0.2.2.18-alpha.
3184     - Correct the manpage's descriptions for the default values of
3185       DirReqStatistics and ExtraInfoStatistics. Fixes bug 2865; bugfix
3186       on 0.2.3.1-alpha.
3187     - Fix the documentation for the --hush and --quiet command line
3188       options, which changed their behavior back in 0.2.3.3-alpha.
3189     - Fix compilation warning with clang 3.1. Fixes bug 6141; bugfix on
3190       0.2.3.11-alpha.
3191
3192   o Minor features:
3193     - Rate-limit the "Weighted bandwidth is 0.000000" message, and add
3194       more information to it, so that we can track it down in case it
3195       returns again. Mitigates bug 5235.
3196     - Check CircuitBuildTimeout and LearnCircuitBuildTimeout in
3197       options_validate(); warn if LearnCircuitBuildTimeout is disabled and
3198       CircuitBuildTimeout is set unreasonably low. Resolves ticket 5452.
3199     - Warn the user when HTTPProxy, but no other proxy type, is
3200       configured. This can cause surprising behavior: it doesn't send
3201       all of Tor's traffic over the HTTPProxy -- it sends unencrypted
3202       directory traffic only. Resolves ticket 4663.
3203     - Issue a notice if a guard completes less than 40% of your circuits.
3204       Threshold is configurable by torrc option PathBiasNoticeRate and
3205       consensus parameter pb_noticepct. There is additional, off-by-
3206       default code to disable guards which fail too many circuits.
3207       Addresses ticket 5458.
3208     - Update to the June 6 2012 Maxmind GeoLite Country database.
3209
3210   o Code simplifications and refactoring:
3211     - Remove validate_pluggable_transports_config(): its warning
3212       message is now handled by connection_or_connect().
3213
3214
3215 Changes in version 0.2.2.37 - 2012-06-06
3216   Tor 0.2.2.37 introduces a workaround for a critical renegotiation
3217   bug in OpenSSL 1.0.1 (where 20% of the Tor network can't talk to itself
3218   currently).
3219
3220   o Major bugfixes:
3221     - Work around a bug in OpenSSL that broke renegotiation with TLS
3222       1.1 and TLS 1.2. Without this workaround, all attempts to speak
3223       the v2 Tor connection protocol when both sides were using OpenSSL
3224       1.0.1 would fail. Resolves ticket 6033.
3225     - When waiting for a client to renegotiate, don't allow it to add
3226       any bytes to the input buffer. This fixes a potential DoS issue.
3227       Fixes bugs 5934 and 6007; bugfix on 0.2.0.20-rc.
3228     - Fix an edge case where if we fetch or publish a hidden service
3229       descriptor, we might build a 4-hop circuit and then use that circuit
3230       for exiting afterwards -- even if the new last hop doesn't obey our
3231       ExitNodes config option. Fixes bug 5283; bugfix on 0.2.0.10-alpha.
3232
3233   o Minor bugfixes:
3234     - Fix a build warning with Clang 3.1 related to our use of vasprintf.
3235       Fixes bug 5969. Bugfix on 0.2.2.11-alpha.
3236
3237   o Minor features:
3238     - Tell GCC and Clang to check for any errors in format strings passed
3239       to the tor_v*(print|scan)f functions.
3240
3241
3242 Changes in version 0.2.3.16-alpha - 2012-06-05
3243   Tor 0.2.3.16-alpha introduces a workaround for a critical renegotiation
3244   bug in OpenSSL 1.0.1 (where 20% of the Tor network can't talk to itself
3245   currently). It also fixes a variety of smaller bugs and other cleanups
3246   that get us closer to a release candidate.
3247
3248   o Major bugfixes (general):
3249     - Work around a bug in OpenSSL that broke renegotiation with TLS
3250       1.1 and TLS 1.2. Without this workaround, all attempts to speak
3251       the v2 Tor connection protocol when both sides were using OpenSSL
3252       1.0.1 would fail. Resolves ticket 6033.
3253     - When waiting for a client to renegotiate, don't allow it to add
3254       any bytes to the input buffer. This fixes a potential DoS issue.
3255       Fixes bugs 5934 and 6007; bugfix on 0.2.0.20-rc.
3256     - Pass correct OR address to managed proxies (like obfsproxy),
3257       even when ORListenAddress is used. Fixes bug 4865; bugfix on
3258       0.2.3.9-alpha.
3259     - The advertised platform of a router now includes only its operating
3260       system's name (e.g., "Linux", "Darwin", "Windows 7"), and not its
3261       service pack level (for Windows) or its CPU architecture (for Unix).
3262       We also no longer include the "git-XYZ" tag in the version. Resolves
3263       part of bug 2988.
3264
3265   o Major bugfixes (clients):
3266     - If we are unable to find any exit that supports our predicted ports,
3267       stop calling them predicted, so that we don't loop and build
3268       hopeless circuits indefinitely. Fixes bug 3296; bugfix on 0.0.9pre6,
3269       which introduced predicted ports.
3270     - Fix an edge case where if we fetch or publish a hidden service
3271       descriptor, we might build a 4-hop circuit and then use that circuit
3272       for exiting afterwards -- even if the new last hop doesn't obey our
3273       ExitNodes config option. Fixes bug 5283; bugfix on 0.2.0.10-alpha.
3274     - Check at each new consensus whether our entry guards were picked
3275       long enough ago that we should rotate them. Previously, we only
3276       did this check at startup, which could lead to us holding a guard
3277       indefinitely. Fixes bug 5380; bugfix on 0.2.1.14-rc.
3278     - When fetching a bridge descriptor from a bridge authority,
3279       always do so anonymously, whether we have been able to open
3280       circuits or not. Partial fix for bug 1938; bugfix on 0.2.0.7-alpha.
3281       This behavior makes it *safer* to use UpdateBridgesFromAuthority,
3282       but we'll need to wait for bug 6010 before it's actually usable.
3283
3284   o Major bugfixes (directory authorities):
3285     - When computing weight parameters, behave more robustly in the
3286       presence of a bad bwweightscale value. Previously, the authorities
3287       would crash if they agreed on a sufficiently broken weight_scale
3288       value: now, they use a reasonable default and carry on. Partial
3289       fix for 5786; bugfix on 0.2.2.17-alpha.
3290     - Check more thoroughly to prevent a rogue authority from
3291       double-voting on any consensus directory parameter. Previously,
3292       authorities would crash in this case if the total number of
3293       votes for any parameter exceeded the number of active voters,
3294       but would let it pass otherwise. Partial fix for bug 5786; bugfix
3295       on 0.2.2.2-alpha.
3296
3297   o Minor features:
3298     - Rate-limit log messages when asked to connect anonymously to
3299       a private address. When these hit, they tended to hit fast and
3300       often. Also, don't bother trying to connect to addresses that we
3301       are sure will resolve to 127.0.0.1: getting 127.0.0.1 in a directory
3302       reply makes us think we have been lied to, even when the address the
3303       client tried to connect to was "localhost." Resolves ticket 2822.
3304     - Allow packagers to insert an extra string in server descriptor
3305       platform lines by setting the preprocessor variable TOR_BUILD_TAG.
3306       Resolves the rest of ticket 2988.
3307     - Raise the threshold of server descriptors needed (75%) and exit
3308       server descriptors needed (50%) before we will declare ourselves
3309       bootstrapped. This will make clients start building circuits a
3310       little later, but makes the initially constructed circuits less
3311       skewed and less in conflict with further directory fetches. Fixes
3312       ticket 3196.
3313     - Close any connection that sends unrecognized junk before the
3314       handshake. Solves an issue noted in bug 4369.
3315     - Improve log messages about managed transports. Resolves ticket 5070.
3316     - Tag a bridge's descriptor as "never to be sent unencrypted".
3317       This shouldn't matter, since bridges don't open non-anonymous
3318       connections to the bridge authority and don't allow unencrypted
3319       directory connections from clients, but we might as well make
3320       sure. Closes bug 5139.
3321     - Expose our view of whether we have gone dormant to the controller,
3322       via a new "GETINFO dormant" value. Torbutton and other controllers
3323       can use this to avoid doing periodic requests through Tor while
3324       it's dormant (bug 4718). Fixes bug 5954.
3325     - Tell GCC and Clang to check for any errors in format strings passed
3326       to the tor_v*(print|scan)f functions.
3327     - Update to the May 1 2012 Maxmind GeoLite Country database.
3328
3329   o Minor bugfixes (already included in 0.2.2.36):
3330     - Reject out-of-range times like 23:59:61 in parse_rfc1123_time().
3331       Fixes bug 5346; bugfix on 0.0.8pre3.
3332     - Correct parsing of certain date types in parse_http_time().
3333       Without this patch, If-Modified-Since would behave
3334       incorrectly. Fixes bug 5346; bugfix on 0.2.0.2-alpha. Patch from
3335       Esteban Manchado Velázques.
3336     - Make our number-parsing functions always treat too-large values
3337       as an error, even when those values exceed the width of the
3338       underlying type. Previously, if the caller provided these
3339       functions with minima or maxima set to the extreme values of the
3340       underlying integer type, these functions would return those
3341       values on overflow rather than treating overflow as an error.
3342       Fixes part of bug 5786; bugfix on 0.0.9.
3343     - If we hit the error case where routerlist_insert() replaces an
3344       existing (old) server descriptor, make sure to remove that
3345       server descriptor from the old_routers list. Fix related to bug
3346       1776. Bugfix on 0.2.2.18-alpha.
3347     - Clarify the behavior of MaxCircuitDirtiness with hidden service
3348       circuits. Fixes issue 5259.
3349
3350   o Minor bugfixes (coding cleanup, on 0.2.2.x and earlier):
3351     - Prevent a null-pointer dereference when receiving a data cell
3352       for a nonexistent stream when the circuit in question has an
3353       empty deliver window. We don't believe this is triggerable,
3354       since we don't currently allow deliver windows to become empty,
3355       but the logic is tricky enough that it's better to make the code
3356       robust. Fixes bug 5541; bugfix on 0.0.2pre14.
3357     - Fix a memory leak when trying to launch a DNS request when the
3358       network is disabled or the nameservers are unconfigurable. Fixes
3359       bug 5916; bugfix on Tor 0.1.2.1-alpha (for the unconfigurable
3360       nameserver case) and on 0.2.3.9-alpha (for the DisableNetwork case).
3361     - Don't hold a Windows file handle open for every file mapping;
3362       the file mapping handle is sufficient. Fixes bug 5951; bugfix on
3363       0.1.2.1-alpha.
3364     - Avoid O(n^2) performance characteristics when parsing a large
3365       extrainfo cache. Fixes bug 5828; bugfix on 0.2.0.1-alpha.
3366     - Format more doubles with %f, not %lf. Patch from grarpamp to make
3367       Tor build correctly on older BSDs again. Fixes bug 3894; bugfix on
3368       Tor 0.2.0.8-alpha.
3369     - Make our replacement implementation of strtok_r() compatible with
3370       the standard behavior of strtok_r(). Patch by nils. Fixes bug 5091;
3371       bugfix on 0.2.2.1-alpha.
3372     - Fix a NULL-pointer dereference on a badly formed
3373       SETCIRCUITPURPOSE command. Found by mikeyc. Fixes bug 5796;
3374       bugfix on 0.2.2.9-alpha.
3375     - Fix a build warning with Clang 3.1 related to our use of vasprintf.
3376       Fixes bug 5969. Bugfix on 0.2.2.11-alpha.
3377     - Defensively refactor rend_mid_rendezvous() so that protocol
3378       violations and length checks happen in the beginning. Fixes
3379       bug 5645.
3380     - Set _WIN32_WINNT to 0x0501 consistently throughout the code, so
3381       that IPv6 stuff will compile on MSVC, and compilation issues
3382       will be easier to track down. Fixes bug 5861.
3383
3384   o Minor bugfixes (correctness, on 0.2.2.x and earlier):
3385     - Exit nodes now correctly report EADDRINUSE and EADDRNOTAVAIL as
3386       resource exhaustion, so that clients can adjust their load to
3387       try other exits. Fixes bug 4710; bugfix on 0.1.0.1-rc, which
3388       started using END_STREAM_REASON_RESOURCELIMIT.
3389     - Don't check for whether the address we're using for outbound
3390       connections has changed until after the outbound connection has
3391       completed. On Windows, getsockname() doesn't succeed until the
3392       connection is finished. Fixes bug 5374; bugfix on 0.1.1.14-alpha.
3393     - If the configuration tries to set MyFamily on a bridge, refuse to
3394       do so, and warn about the security implications. Fixes bug 4657;
3395       bugfix on 0.2.0.3-alpha.
3396     - If the client fails to set a reasonable set of ciphersuites
3397       during its v2 handshake renegotiation, allow the renegotiation to
3398       continue nevertheless (i.e. send all the required certificates).
3399       Fixes bug 4591; bugfix on 0.2.0.20-rc.
3400     - When we receive a SIGHUP and the controller __ReloadTorrcOnSIGHUP
3401       option is set to 0 (which Vidalia version 0.2.16 now does when
3402       a SAVECONF attempt fails), perform other actions that SIGHUP
3403       usually causes (like reopening the logs). Fixes bug 5095; bugfix
3404       on 0.2.1.9-alpha.
3405     - If we fail to write a microdescriptor to the disk cache, do not
3406       continue replacing the old microdescriptor file. Fixes bug 2954;
3407       bugfix on 0.2.2.6-alpha.
3408     - Exit nodes don't need to fetch certificates for authorities that
3409       they don't recognize; only directory authorities, bridges,
3410       and caches need to do that. Fixes part of bug 2297; bugfix on
3411       0.2.2.11-alpha.
3412     - Correctly handle checking the permissions on the parent
3413       directory of a control socket in the root directory. Bug found
3414       by Esteban Manchado Velázquez. Fixes bug 5089; bugfix on Tor
3415       0.2.2.26-beta.
3416     - When told to add a bridge with the same digest as a preexisting
3417       bridge but a different addr:port, change the addr:port as
3418       requested. Previously we would not notice the change. Fixes half
3419       of bug 5603; fix on 0.2.2.26-beta.
3420     - End AUTHCHALLENGE error messages (in the control protocol) with
3421       a CRLF. Fixes bug 5760; bugfix on 0.2.2.36 and 0.2.3.13-alpha.
3422
3423   o Minor bugfixes (on 0.2.3.x):
3424     - Turn an assertion (that the number of handshakes received as a
3425       server is not < 1) into a warning. Fixes bug 4873; bugfix on
3426       0.2.3.1-alpha.
3427     - Format IPv4 addresses correctly in ADDRMAP events. (Previously,
3428       we had reversed them when the answer was cached.) Fixes bug
3429       5723; bugfix on 0.2.3.1-alpha.
3430     - Work correctly on Linux systems with accept4 support advertised in
3431       their headers, but without accept4 support in the kernel. Fix
3432       by murb. Fixes bug 5762; bugfix on 0.2.3.1-alpha.
3433     - When told to add a bridge with the same addr:port as a preexisting
3434       bridge but a different transport, change the transport as
3435       requested. Previously we would not notice the change. Fixes half
3436       of bug 5603; fix on 0.2.3.2-alpha.
3437     - Avoid a "double-reply" warning when replying to a SOCKS request
3438       with a parse error. Patch from Fabian Keil. Fixes bug 4108;
3439       bugfix on 0.2.3.4-alpha.
3440     - Fix a bug where a bridge authority crashes if it has seen no
3441       directory requests when it's time to write statistics to disk.
3442       Fixes bug 5891; bugfix on 0.2.3.6-alpha. Also fixes bug 5508 in
3443       a better way.
3444     - Don't try to open non-control listeners when DisableNetwork is set.
3445       Previously, we'd open all listeners, then immediately close them.
3446       Fixes bug 5604; bugfix on 0.2.3.9-alpha.
3447     - Don't abort the managed proxy protocol if the managed proxy
3448       sends us an unrecognized line; ignore it instead. Fixes bug
3449       5910; bugfix on 0.2.3.9-alpha.
3450     - Fix a compile warning in crypto.c when compiling with clang 3.1.
3451       Fixes bug 5969, bugfix on 0.2.3.9-alpha.
3452     - Fix a compilation issue on GNU Hurd, which doesn't have PATH_MAX.
3453       Fixes bug 5355; bugfix on 0.2.3.11-alpha.
3454     - Remove bogus definition of "_WIN32" from src/win32/orconfig.h, to
3455       unbreak the MSVC build. Fixes bug 5858; bugfix on 0.2.3.12-alpha.
3456     - Resolve numerous small warnings and build issues with MSVC. Resolves
3457       bug 5859.
3458
3459   o Documentation fixes:
3460     - Improve the manual's documentation for the NT Service command-line
3461       options. Addresses ticket 3964.
3462     - Clarify SessionGroup documentation slightly; resolves ticket 5437.
3463     - Document the changes to the ORPort and DirPort options, and the
3464       fact that {OR/Dir}ListenAddress is now unnecessary (and
3465       therefore deprecated). Resolves ticket 5597.
3466
3467   o Removed files:
3468     - Remove the torrc.bridge file: we don't use it for anything, and
3469       it had become badly desynchronized from torrc.sample. Resolves
3470       bug 5622.
3471
3472
3473 Changes in version 0.2.2.36 - 2012-05-24
3474   Tor 0.2.2.36 updates the addresses for two of the eight directory
3475   authorities, fixes some potential anonymity and security issues,
3476   and fixes several crash bugs.
3477
3478   Tor 0.2.1.x has reached its end-of-life. Those Tor versions have many
3479   known flaws, and nobody should be using them. You should upgrade. If
3480   you're using a Linux or BSD and its packages are obsolete, stop using
3481   those packages and upgrade anyway.
3482
3483   o Directory authority changes:
3484     - Change IP address for maatuska (v3 directory authority).
3485     - Change IP address for ides (v3 directory authority), and rename
3486       it to turtles.
3487
3488   o Security fixes:
3489     - When building or running with any version of OpenSSL earlier
3490       than 0.9.8s or 1.0.0f, disable SSLv3 support. These OpenSSL
3491       versions have a bug (CVE-2011-4576) in which their block cipher
3492       padding includes uninitialized data, potentially leaking sensitive
3493       information to any peer with whom they make a SSLv3 connection. Tor
3494       does not use SSL v3 by default, but a hostile client or server
3495       could force an SSLv3 connection in order to gain information that
3496       they shouldn't have been able to get. The best solution here is to
3497       upgrade to OpenSSL 0.9.8s or 1.0.0f (or later). But when building
3498       or running with a non-upgraded OpenSSL, we disable SSLv3 entirely
3499       to make sure that the bug can't happen.
3500     - Never use a bridge or a controller-supplied node as an exit, even
3501       if its exit policy allows it. Found by wanoskarnet. Fixes bug
3502       5342. Bugfix on 0.1.1.15-rc (for controller-purpose descriptors)
3503       and 0.2.0.3-alpha (for bridge-purpose descriptors).
3504     - Only build circuits if we have a sufficient threshold of the total
3505       descriptors that are marked in the consensus with the "Exit"
3506       flag. This mitigates an attack proposed by wanoskarnet, in which
3507       all of a client's bridges collude to restrict the exit nodes that
3508       the client knows about. Fixes bug 5343.
3509     - Provide controllers with a safer way to implement the cookie
3510       authentication mechanism. With the old method, if another locally
3511       running program could convince a controller that it was the Tor
3512       process, then that program could trick the controller into telling
3513       it the contents of an arbitrary 32-byte file. The new "SAFECOOKIE"
3514       authentication method uses a challenge-response approach to prevent
3515       this attack. Fixes bug 5185; implements proposal 193.
3516
3517   o Major bugfixes:
3518     - Avoid logging uninitialized data when unable to decode a hidden
3519       service descriptor cookie. Fixes bug 5647; bugfix on 0.2.1.5-alpha.
3520     - Avoid a client-side assertion failure when receiving an INTRODUCE2
3521       cell on a general purpose circuit. Fixes bug 5644; bugfix on
3522       0.2.1.6-alpha.
3523     - Fix builds when the path to sed, openssl, or sha1sum contains
3524       spaces, which is pretty common on Windows. Fixes bug 5065; bugfix
3525       on 0.2.2.1-alpha.
3526     - Correct our replacements for the timeradd() and timersub() functions
3527       on platforms that lack them (for example, Windows). The timersub()
3528       function is used when expiring circuits, while timeradd() is
3529       currently unused. Bug report and patch by Vektor. Fixes bug 4778;
3530       bugfix on 0.2.2.24-alpha.
3531     - Fix the SOCKET_OK test that we use to tell when socket
3532       creation fails so that it works on Win64. Fixes part of bug 4533;
3533       bugfix on 0.2.2.29-beta. Bug found by wanoskarnet.
3534
3535   o Minor bugfixes:
3536     - Reject out-of-range times like 23:59:61 in parse_rfc1123_time().
3537       Fixes bug 5346; bugfix on 0.0.8pre3.
3538     - Make our number-parsing functions always treat too-large values
3539       as an error, even when those values exceed the width of the
3540       underlying type. Previously, if the caller provided these
3541       functions with minima or maxima set to the extreme values of the
3542       underlying integer type, these functions would return those
3543       values on overflow rather than treating overflow as an error.
3544       Fixes part of bug 5786; bugfix on 0.0.9.
3545     - Older Linux kernels erroneously respond to strange nmap behavior
3546       by having accept() return successfully with a zero-length
3547       socket. When this happens, just close the connection. Previously,
3548       we would try harder to learn the remote address: but there was
3549       no such remote address to learn, and our method for trying to
3550       learn it was incorrect. Fixes bugs 1240, 4745, and 4747. Bugfix
3551       on 0.1.0.3-rc. Reported and diagnosed by "r1eo".
3552     - Correct parsing of certain date types in parse_http_time().
3553       Without this patch, If-Modified-Since would behave
3554       incorrectly. Fixes bug 5346; bugfix on 0.2.0.2-alpha. Patch from
3555       Esteban Manchado Velázques.
3556     - Change the BridgePassword feature (part of the "bridge community"
3557       design, which is not yet implemented) to use a time-independent
3558       comparison. The old behavior might have allowed an adversary
3559       to use timing to guess the BridgePassword value. Fixes bug 5543;
3560       bugfix on 0.2.0.14-alpha.
3561     - Detect and reject certain misformed escape sequences in
3562       configuration values. Previously, these values would cause us
3563       to crash if received in a torrc file or over an authenticated
3564       control port. Bug found by Esteban Manchado Velázquez, and
3565       independently by Robert Connolly from Matta Consulting who further
3566       noted that it allows a post-authentication heap overflow. Patch
3567       by Alexander Schrijver. Fixes bugs 5090 and 5402 (CVE 2012-1668);
3568       bugfix on 0.2.0.16-alpha.
3569     - Fix a compile warning when using the --enable-openbsd-malloc
3570       configure option. Fixes bug 5340; bugfix on 0.2.0.20-rc.
3571     - During configure, detect when we're building with clang version
3572       3.0 or lower and disable the -Wnormalized=id and -Woverride-init
3573       CFLAGS. clang doesn't support them yet.
3574     - When sending an HTTP/1.1 proxy request, include a Host header.
3575       Fixes bug 5593; bugfix on 0.2.2.1-alpha.
3576     - Fix a NULL-pointer dereference on a badly formed SETCIRCUITPURPOSE
3577       command. Found by mikeyc. Fixes bug 5796; bugfix on 0.2.2.9-alpha.
3578     - If we hit the error case where routerlist_insert() replaces an
3579       existing (old) server descriptor, make sure to remove that
3580       server descriptor from the old_routers list. Fix related to bug
3581       1776. Bugfix on 0.2.2.18-alpha.
3582
3583   o Minor bugfixes (documentation and log messages):
3584     - Fix a typo in a log message in rend_service_rendezvous_has_opened().
3585       Fixes bug 4856; bugfix on Tor 0.0.6.
3586     - Update "ClientOnly" man page entry to explain that there isn't
3587       really any point to messing with it. Resolves ticket 5005.
3588     - Document the GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays
3589       directory authority option (introduced in Tor 0.2.2.34).
3590     - Downgrade the "We're missing a certificate" message from notice
3591       to info: people kept mistaking it for a real problem, whereas it
3592       is seldom the problem even when we are failing to bootstrap. Fixes
3593       bug 5067; bugfix on 0.2.0.10-alpha.
3594     - Correctly spell "connect" in a log message on failure to create a
3595       controlsocket. Fixes bug 4803; bugfix on 0.2.2.26-beta.
3596     - Clarify the behavior of MaxCircuitDirtiness with hidden service
3597       circuits. Fixes issue 5259.
3598
3599   o Minor features:
3600     - Directory authorities now reject versions of Tor older than
3601       0.2.1.30, and Tor versions between 0.2.2.1-alpha and 0.2.2.20-alpha
3602       inclusive. These versions accounted for only a small fraction of
3603       the Tor network, and have numerous known security issues. Resolves
3604       issue 4788.
3605     - Update to the May 1 2012 Maxmind GeoLite Country database.
3606
3607   - Feature removal:
3608     - When sending or relaying a RELAY_EARLY cell, we used to convert
3609       it to a RELAY cell if the connection was using the v1 link
3610       protocol. This was a workaround for older versions of Tor, which
3611       didn't handle RELAY_EARLY cells properly. Now that all supported
3612       versions can handle RELAY_EARLY cells, and now that we're enforcing
3613       the "no RELAY_EXTEND commands except in RELAY_EARLY cells" rule,
3614       remove this workaround. Addresses bug 4786.
3615
3616
3617 Changes in version 0.2.3.15-alpha - 2012-04-30
3618   Tor 0.2.3.15-alpha fixes a variety of smaller bugs, including making
3619   the development branch build on Windows again.
3620
3621   o Minor bugfixes (on 0.2.2.x and earlier):
3622     - Make sure that there are no unhandled pending TLS errors before
3623       reading from a TLS stream. We had checks in 0.1.0.3-rc, but
3624       lost them in 0.1.0.5-rc when we refactored read_to_buf_tls().
3625       Bugfix on 0.1.0.5-rc; fixes bug 4528.
3626     - Fix an assert that directory authorities could trigger on sighup
3627       during some configuration state transitions. We now don't treat
3628       it as a fatal error when the new descriptor we just generated in
3629       init_keys() isn't accepted. Fixes bug 4438; bugfix on 0.2.1.9-alpha.
3630     - After we pick a directory mirror, we would refuse to use it if
3631       it's in our ExcludeExitNodes list, resulting in mysterious failures
3632       to bootstrap for people who just wanted to avoid exiting from
3633       certain locations. Fixes bug 5623; bugfix on 0.2.2.25-alpha.
3634     - When building with --enable-static-tor on OpenBSD, do not
3635       erroneously attempt to link -lrt. Fixes bug 5103.
3636
3637   o Minor bugfixes (on 0.2.3.x):
3638     - When Tor is built with kernel headers from a recent (last few
3639       years) Linux kernel, do not fail to run on older (pre-2.6.28
3640       Linux kernels). Fixes bug 5112; bugfix on 0.2.3.1-alpha.
3641     - Fix cross-compilation issues with mingw. Bugfixes on 0.2.3.6-alpha
3642       and 0.2.3.12-alpha.
3643     - Fix compilation with miniupnpc version 1.6; patch from
3644       Anthony G. Basile. Fixes bug 5434; bugfix on 0.2.3.12-alpha.
3645     - Fix compilation with MSVC, which had defined MS_WINDOWS. Bugfix
3646       on 0.2.3.13-alpha; found and fixed by Gisle Vanem.
3647     - Fix compilation on platforms without unistd.h, or where environ
3648       is defined in stdlib.h. Fixes bug 5704; bugfix on 0.2.3.13-alpha.
3649
3650   o Minor features:
3651     - Directory authorities are now a little more lenient at accepting
3652       older router descriptors, or newer router descriptors that don't
3653       make big changes. This should help ameliorate past and future
3654       issues where routers think they have uploaded valid descriptors,
3655       but the authorities don't think so. Fix for ticket 2479.
3656     - Make the code that clients use to detect an address change be
3657       IPv6-aware, so that it won't fill clients' logs with error
3658       messages when trying to get the IPv4 address of an IPv6
3659       connection. Implements ticket 5537.
3660
3661   o Removed features:
3662     - Remove the GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays option;
3663       authorities needed to use it for a while to keep the network working
3664       as people upgraded to 0.2.1.31, 0.2.2.34, or 0.2.3.6-alpha, but
3665       that was six months ago. As of now, it should no longer be needed
3666       or used.
3667
3668
3669 Changes in version 0.2.3.14-alpha - 2012-04-23
3670   Tor 0.2.3.14-alpha fixes yet more bugs to get us closer to a release
3671   candidate. It also dramatically speeds up AES: fast relays should
3672   consider switching to the newer OpenSSL library.
3673
3674   o Directory authority changes:
3675     - Change IP address for ides (v3 directory authority), and rename
3676       it to turtles.
3677
3678   o Major bugfixes:
3679     - Avoid logging uninitialized data when unable to decode a hidden
3680       service descriptor cookie. Fixes bug 5647; bugfix on 0.2.1.5-alpha.
3681     - Avoid a client-side assertion failure when receiving an INTRODUCE2
3682       cell on a general purpose circuit. Fixes bug 5644; bugfix on
3683       0.2.1.6-alpha.
3684     - If authorities are unable to get a v2 consensus document from other
3685       directory authorities, they no longer fall back to fetching
3686       them from regular directory caches. Fixes bug 5635; bugfix on
3687       0.2.2.26-beta, where routers stopped downloading v2 consensus
3688       documents entirely.
3689     - When we start a Tor client with a normal consensus already cached,
3690       be willing to download a microdescriptor consensus. Fixes bug 4011;
3691       fix on 0.2.3.1-alpha.
3692
3693   o Major features (performance):
3694     - When built to use OpenSSL 1.0.1, and built for an x86 or x86_64
3695       instruction set, take advantage of OpenSSL's AESNI, bitsliced, or
3696       vectorized AES implementations as appropriate. These can be much,
3697       much faster than other AES implementations.
3698
3699   o Minor bugfixes (0.2.2.x and earlier):
3700     - Don't launch more than 10 service-side introduction-point circuits
3701       for a hidden service in five minutes. Previously, we would consider
3702       launching more introduction-point circuits if at least one second
3703       had passed without any introduction-point circuits failing. Fixes
3704       bug 4607; bugfix on 0.0.7pre1.
3705     - Change the BridgePassword feature (part of the "bridge community"
3706       design, which is not yet implemented) to use a time-independent
3707       comparison. The old behavior might have allowed an adversary
3708       to use timing to guess the BridgePassword value. Fixes bug 5543;
3709       bugfix on 0.2.0.14-alpha.
3710     - Enforce correct return behavior of tor_vsscanf() when the '%%'
3711       pattern is used. Fixes bug 5558. Bugfix on 0.2.1.13.
3712     - When sending an HTTP/1.1 proxy request, include a Host header.
3713       Fixes bug 5593; bugfix on 0.2.2.1-alpha.
3714     - Don't log that we have "decided to publish new relay descriptor"
3715       unless we are actually publishing a descriptor. Fixes bug 3942;
3716       bugfix on 0.2.2.28-beta.
3717
3718   o Minor bugfixes (0.2.3.x):
3719     - Fix a bug where a bridge authority crashes (on a failed assert)
3720       if it has seen no directory requests when it's time to write
3721       statistics to disk. Fixes bug 5508. Bugfix on 0.2.3.6-alpha.
3722     - Fix bug stomping on ORPort option NoListen and ignoring option
3723       NoAdvertise. Fixes bug 5151; bugfix on 0.2.3.9-alpha.
3724     - In the testsuite, provide a large enough buffer in the tor_sscanf
3725       unit test. Otherwise we'd overrun that buffer and crash during
3726       the unit tests. Found by weasel. Fixes bug 5449; bugfix on
3727       0.2.3.12-alpha.
3728     - Make sure we create the keys directory if it doesn't exist and we're
3729       about to store the dynamic Diffie-Hellman parameters. Fixes bug
3730       5572; bugfix on 0.2.3.13-alpha.
3731     - Fix a small memory leak when trying to decode incorrect base16
3732       authenticator during SAFECOOKIE authentication. Found by
3733       Coverity Scan. Fixes CID 507. Bugfix on 0.2.3.13-alpha.
3734
3735   o Minor features:
3736     - Add more information to a log statement that might help track down
3737       bug 4091. If you're seeing "Bug: tor_addr_is_internal() called with a
3738       non-IP address" messages (or any Bug messages, for that matter!),
3739       please let us know about it.
3740     - Relays now understand an IPv6 address when they get one from a
3741       directory server. Resolves ticket 4875.
3742     - Resolve IPv6 addresses in bridge and entry statistics to country
3743       code "??" which means we at least count them. Resolves ticket 5053;
3744       improves on 0.2.3.9-alpha.
3745     - Update to the April 3 2012 Maxmind GeoLite Country database.
3746     - Begin a doc/state-contents.txt file to explain the contents of
3747       the Tor state file. Fixes bug 2987.
3748
3749   o Default torrc changes:
3750     - Stop listing "socksport 9050" in torrc.sample. We open a socks
3751       port on 9050 by default anyway, so this should not change anything
3752       in practice.
3753     - Stop mentioning the deprecated *ListenAddress options in
3754       torrc.sample. Fixes bug 5438.
3755     - Document unit of bandwidth related options in sample torrc.
3756       Fixes bug 5621.
3757
3758   o Removed features:
3759     - The "torify" script no longer supports the "tsocks" socksifier
3760       tool, since tsocks doesn't support DNS and UDP right for Tor.
3761       Everyone should be using torsocks instead. Fixes bugs 3530 and
3762       5180. Based on a patch by "ugh".
3763
3764   o Code refactoring:
3765     - Change the symmetric cipher interface so that creating and
3766       initializing a stream cipher are no longer separate functions.
3767     - Remove all internal support for unpadded RSA. We never used it, and
3768       it would be a bad idea to start.
3769
3770
3771 Changes in version 0.2.3.13-alpha - 2012-03-26
3772   Tor 0.2.3.13-alpha fixes a variety of stability and correctness bugs
3773   in managed pluggable transports, as well as providing other cleanups
3774   that get us closer to a release candidate.
3775
3776   o Directory authority changes:
3777     - Change IP address for maatuska (v3 directory authority).
3778
3779   o Security fixes:
3780     - Provide controllers with a safer way to implement the cookie
3781       authentication mechanism. With the old method, if another locally
3782       running program could convince a controller that it was the Tor
3783       process, then that program could trick the controller into telling
3784       it the contents of an arbitrary 32-byte file. The new "SAFECOOKIE"
3785       authentication method uses a challenge-response approach to prevent
3786       this attack. Fixes bug 5185, implements proposal 193.
3787     - Never use a bridge or a controller-supplied node as an exit, even
3788       if its exit policy allows it. Found by wanoskarnet. Fixes bug
3789       5342. Bugfix on 0.1.1.15-rc (for controller-purpose descriptors)
3790       and 0.2.0.3-alpha (for bridge-purpose descriptors).
3791     - Only build circuits if we have a sufficient threshold of the total
3792       descriptors that are marked in the consensus with the "Exit"
3793       flag. This mitigates an attack proposed by wanoskarnet, in which
3794       all of a client's bridges collude to restrict the exit nodes that
3795       the client knows about. Fixes bug 5343.
3796
3797   o Major bugfixes (on Tor 0.2.3.x):
3798     - Avoid an assert when managed proxies like obfsproxy are configured,
3799       and we receive HUP signals or setconf attempts too rapidly. This
3800       situation happens most commonly when Vidalia tries to attach to
3801       Tor or tries to configure the Tor it's attached to. Fixes bug 5084;
3802       bugfix on 0.2.3.6-alpha.
3803     - Fix a relay-side pluggable transports bug where managed proxies were
3804       unreachable from the Internet, because Tor asked them to bind on
3805       localhost. Fixes bug 4725; bugfix on 0.2.3.9-alpha.
3806     - Stop discarding command-line arguments when TestingTorNetwork
3807       is set. Discovered by Kevin Bauer. Fixes bug 5373; bugfix on
3808       0.2.3.9-alpha, where task 4552 added support for two layers of
3809       torrc files.
3810     - Resume allowing the unit tests to run in gdb. This was accidentally
3811       made impossible when the DisableDebuggerAttachment option was
3812       introduced. Fixes bug 5448; bugfix on 0.2.3.9-alpha.
3813     - Resume building with nat-pmp support. Fixes bug 4955; bugfix on
3814       0.2.3.11-alpha. Reported by Anthony G. Basile.
3815
3816   o Minor bugfixes (on 0.2.2.x and earlier):
3817     - Ensure we don't cannibalize circuits that are longer than three hops
3818       already, so we don't end up making circuits with 5 or more
3819       hops. Patch contributed by wanoskarnet. Fixes bug 5231; bugfix on
3820       0.1.0.1-rc which introduced cannibalization.
3821     - Detect and reject certain misformed escape sequences in
3822       configuration values. Previously, these values would cause us
3823       to crash if received in a torrc file or over an authenticated
3824       control port. Bug found by Esteban Manchado Velázquez, and
3825       independently by Robert Connolly from Matta Consulting who further
3826       noted that it allows a post-authentication heap overflow. Patch
3827       by Alexander Schrijver. Fixes bugs 5090 and 5402 (CVE 2012-1668);
3828       bugfix on 0.2.0.16-alpha.
3829     - Fix a compile warning when using the --enable-openbsd-malloc
3830       configure option. Fixes bug 5340; bugfix on 0.2.0.20-rc.
3831     - Directory caches no longer refuse to clean out descriptors because
3832       of missing v2 networkstatus documents, unless they're configured
3833       to retrieve v2 networkstatus documents. Fixes bug 4838; bugfix on
3834       0.2.2.26-beta. Patch by Daniel Bryg.
3835     - Update to the latest version of the tinytest unit testing framework.
3836       This includes a couple of bugfixes that can be relevant for
3837       running forked unit tests on Windows, and removes all reserved
3838       identifiers.
3839
3840   o Minor bugfixes (on 0.2.3.x):
3841     - On a failed pipe() call, don't leak file descriptors. Fixes bug
3842       4296; bugfix on 0.2.3.1-alpha.
3843     - Spec conformance: on a v3 handshake, do not send a NETINFO cell
3844       until after we have received a CERTS cell. Fixes bug 4361; bugfix
3845       on 0.2.3.6-alpha. Patch by "frosty".
3846     - When binding to an IPv6 address, set the IPV6_V6ONLY socket
3847       option, so that the IP stack doesn't decide to use it for IPv4
3848       too. Fixes bug 4760; bugfix on 0.2.3.9-alpha.
3849     - Ensure that variables set in Tor's environment cannot override
3850       environment variables that Tor passes to a managed
3851       pluggable-transport proxy. Previously, Tor would pass every
3852       variable in its environment to managed proxies along with the new
3853       ones, in such a way that on many operating systems, the inherited
3854       environment variables would override those which Tor tried to
3855       explicitly set. Bugfix on 0.2.3.12-alpha for most Unixoid systems;
3856       bugfix on 0.2.3.9-alpha for Windows.
3857
3858   o Minor features:
3859     - A wide variety of new unit tests by Esteban Manchado Velázquez.
3860     - Shorten links in the tor-exit-notice file. Patch by Christian Kujau.
3861     - Update to the March 6 2012 Maxmind GeoLite Country database.
3862
3863
3864 Changes in version 0.2.3.12-alpha - 2012-02-13
3865   Tor 0.2.3.12-alpha lets fast exit relays scale better, allows clients
3866   to use bridges that run Tor 0.2.2.x, and resolves several big bugs
3867   when Tor is configured to use a pluggable transport like obfsproxy.
3868
3869   o Major bugfixes:
3870     - Fix builds when the path to sed, openssl, or sha1sum contains
3871       spaces, which is pretty common on Windows. Fixes bug 5065; bugfix
3872       on 0.2.2.1-alpha.
3873     - Set the SO_REUSEADDR socket option before we call bind() on outgoing
3874       connections. This change should allow busy exit relays to stop
3875       running out of available sockets as quickly. Fixes bug 4950;
3876       bugfix on 0.2.2.26-beta.
3877     - Allow 0.2.3.x clients to use 0.2.2.x bridges. Previously the client
3878       would ask the bridge for microdescriptors, which are only supported
3879       in 0.2.3.x, and then fail to bootstrap when it didn't get the
3880       answers it wanted. Fixes bug 4013; bugfix on 0.2.3.2-alpha.
3881     - Properly set up obfsproxy's environment when in managed mode. The
3882       Tor Browser Bundle needs LD_LIBRARY_PATH to be passed to obfsproxy,
3883       and when you run your Tor as a daemon, there's no HOME. Fixes bugs
3884       5076 and 5082; bugfix on 0.2.3.6-alpha.
3885
3886   o Minor features:
3887     - Use the dead_strip option when building Tor on OS X. This reduces
3888       binary size by almost 19% when linking openssl and libevent
3889       statically, which we do for Tor Browser Bundle.
3890     - Fix broken URLs in the sample torrc file, and tell readers about
3891       the OutboundBindAddress, ExitPolicyRejectPrivate, and
3892       PublishServerDescriptor options. Addresses bug 4652.
3893     - Update to the February 7 2012 Maxmind GeoLite Country database.
3894
3895   o Minor bugfixes:
3896     - Downgrade the "We're missing a certificate" message from notice
3897       to info: people kept mistaking it for a real problem, whereas it
3898       is seldom the problem even when we are failing to bootstrap. Fixes
3899       bug 5067; bugfix on 0.2.0.10-alpha.
3900     - Don't put "TOR_PT_EXTENDED_SERVER_PORT=127.0.0.1:4200" in a
3901       managed pluggable transport server proxy's environment.
3902       Previously, we would put it there, even though Tor doesn't
3903       implement an 'extended server port' yet, and even though Tor
3904       almost certainly isn't listening at that address. For now, we set
3905       it to an empty string to avoid crashing older obfsproxies. Bugfix
3906       on 0.2.3.6-alpha.
3907     - Log the heartbeat message every HeartbeatPeriod seconds, not every
3908       HeartbeatPeriod + 1 seconds. Fixes bug 4942; bugfix on
3909       0.2.3.1-alpha. Bug reported by Scott Bennett.
3910     - Calculate absolute paths correctly on Windows. Fixes bug 4973;
3911       bugfix on 0.2.3.11-alpha.
3912     - Update "ClientOnly" man page entry to explain that there isn't
3913       really any point to messing with it. Resolves ticket 5005.
3914     - Use the correct CVE number for CVE-2011-4576 in our comments and
3915       log messages. Found by "fermenthor". Resolves bug 5066; bugfix on
3916       0.2.3.11-alpha.
3917
3918   o Code simplifications and refactoring:
3919     - Use the _WIN32 macro throughout our code to detect Windows.
3920       (Previously we had used the obsolete 'WIN32' and the idiosyncratic
3921       'MS_WINDOWS'.)
3922
3923
3924 Changes in version 0.2.3.11-alpha - 2012-01-22
3925   Tor 0.2.3.11-alpha marks feature-freeze for the 0.2.3 tree. It deploys
3926   the last step of the plan to limit maximum circuit length, includes
3927   a wide variety of hidden service performance and correctness fixes,
3928   works around an OpenSSL security flaw if your distro is too stubborn
3929   to upgrade, and fixes a bunch of smaller issues.
3930
3931   o Major features:
3932     - Now that Tor 0.2.0.x is completely deprecated, enable the final
3933       part of "Proposal 110: Avoiding infinite length circuits" by
3934       refusing all circuit-extend requests that do not use a relay_early
3935       cell. This change helps Tor resist a class of denial-of-service
3936       attacks by limiting the maximum circuit length.
3937     - Adjust the number of introduction points that a hidden service
3938       will try to maintain based on how long its introduction points
3939       remain in use and how many introductions they handle. Fixes
3940       part of bug 3825.
3941     - Try to use system facilities for enumerating local interface
3942       addresses, before falling back to our old approach (which was
3943       binding a UDP socket, and calling getsockname() on it). That
3944       approach was scaring OS X users whose draconian firewall
3945       software warned about binding to UDP sockets, regardless of
3946       whether packets were sent. Now we try to use getifaddrs(),
3947       SIOCGIFCONF, or GetAdaptersAddresses(), depending on what the
3948       system supports. Resolves ticket 1827.
3949
3950   o Major security workaround:
3951     - When building or running with any version of OpenSSL earlier
3952       than 0.9.8s or 1.0.0f, disable SSLv3 support. These OpenSSL
3953       versions have a bug (CVE-2011-4576) in which their block cipher
3954       padding includes uninitialized data, potentially leaking sensitive
3955       information to any peer with whom they make a SSLv3 connection. Tor
3956       does not use SSL v3 by default, but a hostile client or server
3957       could force an SSLv3 connection in order to gain information that
3958       they shouldn't have been able to get. The best solution here is to
3959       upgrade to OpenSSL 0.9.8s or 1.0.0f (or later). But when building
3960       or running with a non-upgraded OpenSSL, we disable SSLv3 entirely
3961       to make sure that the bug can't happen.
3962
3963   o Major bugfixes:
3964     - Fix the SOCKET_OK test that we use to tell when socket
3965       creation fails so that it works on Win64. Fixes part of bug 4533;
3966       bugfix on 0.2.2.29-beta. Bug found by wanoskarnet.
3967     - Correct our replacements for the timeradd() and timersub() functions
3968       on platforms that lack them (for example, Windows). The timersub()
3969       function is used when expiring circuits, while timeradd() is
3970       currently unused. Bug report and patch by Vektor. Fixes bug 4778;
3971       bugfix on 0.2.2.24-alpha and 0.2.3.1-alpha.
3972     - Do not use OpenSSL 1.0.0's counter mode: it has a critical bug
3973       that was fixed in OpenSSL 1.0.0a. We test for the counter mode
3974       bug at runtime, not compile time, because some distributions hack
3975       their OpenSSL to mis-report its version. Fixes bug 4779; bugfix
3976       on 0.2.3.9-alpha. Found by Pascal.
3977
3978   o Minor features (controller):
3979     - Use absolute path names when reporting the torrc filename in the
3980       control protocol, so a controller can more easily find the torrc
3981       file. Resolves bug 1101.
3982     - Extend the control protocol to report flags that control a circuit's
3983       path selection in CIRC events and in replies to 'GETINFO
3984       circuit-status'. Implements part of ticket 2411.
3985     - Extend the control protocol to report the hidden service address
3986       and current state of a hidden-service-related circuit in CIRC
3987       events and in replies to 'GETINFO circuit-status'. Implements part
3988       of ticket 2411.
3989     - When reporting the path to the cookie file to the controller,
3990       give an absolute path. Resolves ticket 4881.
3991     - Allow controllers to request an event notification whenever a
3992       circuit is cannibalized or its purpose is changed. Implements
3993       part of ticket 3457.
3994     - Include the creation time of a circuit in CIRC and CIRC2
3995       control-port events and the list produced by the 'GETINFO
3996       circuit-status' control-port command.
3997
3998   o Minor features (directory authorities):
3999     - Directory authorities now reject versions of Tor older than
4000       0.2.1.30, and Tor versions between 0.2.2.1-alpha and 0.2.2.20-alpha
4001       inclusive. These versions accounted for only a small fraction of
4002       the Tor network, and have numerous known security issues. Resolves
4003       issue 4788.
4004     - Authority operators can now vote for all relays in a given
4005       set of countries to be BadDir/BadExit/Invalid/Rejected.
4006     - Provide two consensus parameters (FastFlagMinThreshold and
4007       FastFlagMaxThreshold) to control the range of allowable bandwidths
4008       for the Fast directory flag. These allow authorities to run
4009       experiments on appropriate requirements for being a "Fast" node.
4010       The AuthDirFastGuarantee config value still applies. Implements
4011       ticket 3946.
4012     - Document the GiveGuardFlagTo_CVE_2011_2768_VulnerableRelays
4013       directory authority option (introduced in Tor 0.2.2.34).
4014
4015   o Minor features (other):
4016     - Don't disable the DirPort when we cannot exceed our AccountingMax
4017       limit during this interval because the effective bandwidthrate is
4018       low enough. This is useful in a situation where AccountMax is only
4019       used as an additional safeguard or to provide statistics.
4020     - Prepend an informative header to generated dynamic_dh_params files.
4021     - If EntryNodes are given, but UseEntryGuards is set to 0, warn that
4022       EntryNodes will have no effect. Resolves issue 2571.
4023     - Log more useful messages when we fail to disable debugger
4024       attachment.
4025     - Log which authority we're missing votes from when we go to fetch
4026       them from the other auths.
4027     - Log (at debug level) whenever a circuit's purpose is changed.
4028     - Add missing documentation for the MaxClientCircuitsPending,
4029       UseMicrodescriptors, UserspaceIOCPBuffers, and
4030       _UseFilteringSSLBufferevents options, all introduced during
4031       the 0.2.3.x series.
4032     - Update to the January 3 2012 Maxmind GeoLite Country database.
4033
4034   o Minor bugfixes (hidden services):
4035     - Don't close hidden service client circuits which have almost
4036       finished connecting to their destination when they reach
4037       the normal circuit-build timeout. Previously, we would close
4038       introduction circuits which are waiting for an acknowledgement
4039       from the introduction point, and rendezvous circuits which have
4040       been specified in an INTRODUCE1 cell sent to a hidden service,
4041       after the normal CBT. Now, we mark them as 'timed out', and launch
4042       another rendezvous attempt in parallel. This behavior change can
4043       be disabled using the new CloseHSClientCircuitsImmediatelyOnTimeout
4044       option. Fixes part of bug 1297; bugfix on 0.2.2.2-alpha.
4045     - Don't close hidden-service-side rendezvous circuits when they
4046       reach the normal circuit-build timeout. This behaviour change can
4047       be disabled using the new
4048       CloseHSServiceRendCircuitsImmediatelyOnTimeout option. Fixes the
4049       remaining part of bug 1297; bugfix on 0.2.2.2-alpha.
4050     - Make sure we never mark the wrong rendezvous circuit as having
4051       had its introduction cell acknowleged by the introduction-point
4052       relay. Previously, when we received an INTRODUCE_ACK cell on a
4053       client-side hidden-service introduction circuit, we might have
4054       marked a rendezvous circuit other than the one we specified in
4055       the INTRODUCE1 cell as INTRO_ACKED, which would have produced
4056       a warning message and interfered with the hidden service
4057       connection-establishment process. Fixes bug 4759; bugfix on
4058       0.2.3.3-alpha, when we added the stream-isolation feature which
4059       might cause Tor to open multiple rendezvous circuits for the same
4060       hidden service.
4061     - Don't trigger an assertion failure when we mark a new client-side
4062       hidden-service introduction circuit for close during the process
4063       of creating it. Fixes bug 4796; bugfix on 0.2.3.6-alpha. Reported
4064       by murb.
4065
4066   o Minor bugfixes (log messages):
4067     - Correctly spell "connect" in a log message on failure to create a
4068       controlsocket. Fixes bug 4803; bugfix on 0.2.2.26-beta and
4069       0.2.3.2-alpha.
4070     - Fix a typo in a log message in rend_service_rendezvous_has_opened().
4071       Fixes bug 4856; bugfix on Tor 0.0.6.
4072     - Fix the log message describing how we work around discovering
4073       that our version is the ill-fated OpenSSL 0.9.8l. Fixes bug
4074       4837; bugfix on 0.2.2.9-alpha.
4075     - When logging about a disallowed .exit name, do not also call it
4076       an "invalid onion address". Fixes bug 3325; bugfix on 0.2.2.9-alpha.
4077
4078   o Minor bugfixes (build fixes):
4079     - During configure, detect when we're building with clang version
4080       3.0 or lower and disable the -Wnormalized=id and -Woverride-init
4081       CFLAGS. clang doesn't support them yet.
4082     - During configure, search for library containing cos function as
4083       libm lives in libcore on some platforms (BeOS/Haiku). Linking
4084       against libm was hard-coded before. Fixes the first part of bug
4085       4727; bugfix on 0.2.2.2-alpha. Patch and analysis by Martin Hebnes
4086       Pedersen.
4087     - Detect attempts to build Tor on (as yet hypothetical) versions
4088       of Windows where sizeof(intptr_t) != sizeof(SOCKET). Partial
4089       fix for bug 4533. Bugfix on 0.2.2.28-beta.
4090     - Preprocessor directives should not be put inside the arguments
4091       of a macro. This would break compilation with GCC releases prior
4092       to version 3.3. We would never recommend such an old GCC version,
4093       but it is apparently required for binary compatibility on some
4094       platforms (namely, certain builds of Haiku). Fixes the other part
4095       of bug 4727; bugfix on 0.2.3.3-alpha. Patch and analysis by Martin
4096       Hebnes Pedersen.
4097
4098   o Minor bugfixes (other):
4099     - Older Linux kernels erroneously respond to strange nmap behavior
4100       by having accept() return successfully with a zero-length
4101       socket. When this happens, just close the connection. Previously,
4102       we would try harder to learn the remote address: but there was
4103       no such remote address to learn, and our method for trying to
4104       learn it was incorrect. Fixes bugs 1240, 4745, and 4747. Bugfix
4105       on 0.1.0.3-rc. Reported and diagnosed by "r1eo".
4106     - Fix null-pointer access that could occur if TLS allocation failed.
4107       Fixes bug 4531; bugfix on 0.2.0.20-rc. Found by "troll_un". This was
4108       erroneously listed as fixed in 0.2.3.9-alpha, but the fix had
4109       accidentally been reverted.
4110     - Fix our implementation of crypto_random_hostname() so it can't
4111       overflow on ridiculously large inputs. (No Tor version has ever
4112       provided this kind of bad inputs, but let's be correct in depth.)
4113       Fixes bug 4413; bugfix on 0.2.2.9-alpha. Fix by Stephen Palmateer.
4114     - Find more places in the code that should have been testing for
4115       invalid sockets using the SOCKET_OK macro. Required for a fix
4116       for bug 4533. Bugfix on 0.2.2.28-beta.
4117     - Fix an assertion failure when, while running with bufferevents, a
4118       connection finishes connecting after it is marked for close, but
4119       before it is closed. Fixes bug 4697; bugfix on 0.2.3.1-alpha.
4120     - test_util_spawn_background_ok() hardcoded the expected value
4121       for ENOENT to 2. This isn't portable as error numbers are
4122       platform specific, and particularly the hurd has ENOENT at
4123       0x40000002. Construct expected string at runtime, using the correct
4124       value for ENOENT. Fixes bug 4733; bugfix on 0.2.3.1-alpha.
4125     - Reject attempts to disable DisableDebuggerAttachment while Tor is
4126       running. Fixes bug 4650; bugfix on 0.2.3.9-alpha.
4127     - Use an appropriate-width type for sockets in tor-fw-helper on
4128       win64. Fixes bug 1983 at last. Bugfix on 0.2.3.9-alpha.
4129
4130   o Feature removal:
4131     - When sending or relaying a RELAY_EARLY cell, we used to convert
4132       it to a RELAY cell if the connection was using the v1 link
4133       protocol. This was a workaround for older versions of Tor, which
4134       didn't handle RELAY_EARLY cells properly. Now that all supported
4135       versions can handle RELAY_EARLY cells, and now that we're enforcing
4136       the "no RELAY_EXTEND commands except in RELAY_EARLY cells" rule,
4137       remove this workaround. Addresses bug 4786.
4138
4139   o Code simplifications and refactoring:
4140     - Use OpenSSL's built-in SSL_state_string_long() instead of our
4141       own homebrewed ssl_state_to_string() replacement. Patch from
4142       Emile Snyder. Fixes bug 4653.
4143     - Use macros to indicate OpenSSL versions, so we don't need to worry
4144       about accidental hexadecimal bit shifts.
4145     - Remove some workaround code for OpenSSL 0.9.6 (which is no longer
4146       supported).
4147     - Convert more instances of tor_snprintf+tor_strdup into tor_asprintf.
4148     - Use the smartlist_add_asprintf() alias more consistently.
4149     - Use a TOR_INVALID_SOCKET macro when initializing a socket to an
4150       invalid value, rather than just -1.
4151     - Rename a handful of old identifiers, mostly related to crypto
4152       structures and crypto functions. By convention, our "create an
4153       object" functions are called "type_new()", our "free an object"
4154       functions are called "type_free()", and our types indicate that
4155       they are types only with a final "_t". But a handful of older
4156       types and functions broke these rules, with function names like
4157       "type_create" or "subsystem_op_type", or with type names like
4158       type_env_t.
4159
4160
4161 Changes in version 0.2.3.10-alpha - 2011-12-16
4162   Tor 0.2.3.10-alpha fixes a critical heap-overflow security issue in
4163   Tor's buffers code. Absolutely everybody should upgrade.
4164
4165   The bug relied on an incorrect calculation when making data continuous
4166   in one of our IO buffers, if the first chunk of the buffer was
4167   misaligned by just the wrong amount. The miscalculation would allow an
4168   attacker to overflow a piece of heap-allocated memory. To mount this
4169   attack, the attacker would need to either open a SOCKS connection to
4170   Tor's SocksPort (usually restricted to localhost), or target a Tor
4171   instance configured to make its connections through a SOCKS proxy
4172   (which Tor does not do by default).
4173
4174   Good security practice requires that all heap-overflow bugs should be
4175   presumed to be exploitable until proven otherwise, so we are treating
4176   this as a potential code execution attack. Please upgrade immediately!
4177   This bug does not affect bufferevents-based builds of Tor. Special
4178   thanks to "Vektor" for reporting this issue to us!
4179
4180   This release also contains a few minor bugfixes for issues discovered
4181   in 0.2.3.9-alpha.
4182
4183   o Major bugfixes:
4184     - Fix a heap overflow bug that could occur when trying to pull
4185       data into the first chunk of a buffer, when that chunk had
4186       already had some data drained from it. Fixes CVE-2011-2778;
4187       bugfix on 0.2.0.16-alpha. Reported by "Vektor".
4188
4189   o Minor bugfixes:
4190     - If we can't attach streams to a rendezvous circuit when we
4191       finish connecting to a hidden service, clear the rendezvous
4192       circuit's stream-isolation state and try to attach streams
4193       again. Previously, we cleared rendezvous circuits' isolation
4194       state either too early (if they were freshly built) or not at all
4195       (if they had been built earlier and were cannibalized). Bugfix on
4196       0.2.3.3-alpha; fixes bug 4655.
4197     - Fix compilation of the libnatpmp helper on non-Windows. Bugfix on
4198       0.2.3.9-alpha; fixes bug 4691. Reported by Anthony G. Basile.
4199     - Fix an assertion failure when a relay with accounting enabled
4200       starts up while dormant. Fixes bug 4702; bugfix on 0.2.3.9-alpha.
4201
4202   o Minor features:
4203     - Update to the December 6 2011 Maxmind GeoLite Country database.
4204
4205
4206 Changes in version 0.2.2.35 - 2011-12-16
4207   Tor 0.2.2.35 fixes a critical heap-overflow security issue in Tor's
4208   buffers code. Absolutely everybody should upgrade.
4209
4210   The bug relied on an incorrect calculation when making data continuous
4211   in one of our IO buffers, if the first chunk of the buffer was
4212   misaligned by just the wrong amount. The miscalculation would allow an
4213   attacker to overflow a piece of heap-allocated memory. To mount this
4214   attack, the attacker would need to either open a SOCKS connection to
4215   Tor's SocksPort (usually restricted to localhost), or target a Tor
4216   instance configured to make its connections through a SOCKS proxy
4217   (which Tor does not do by default).
4218
4219   Good security practice requires that all heap-overflow bugs should be
4220   presumed to be exploitable until proven otherwise, so we are treating
4221   this as a potential code execution attack. Please upgrade immediately!
4222   This bug does not affect bufferevents-based builds of Tor. Special
4223   thanks to "Vektor" for reporting this issue to us!
4224
4225   Tor 0.2.2.35 also fixes several bugs in previous versions, including
4226   crash bugs for unusual configurations, and a long-term bug that
4227   would prevent Tor from starting on Windows machines with draconian
4228   AV software.
4229
4230   With this release, we remind everyone that 0.2.0.x has reached its
4231   formal end-of-life. Those Tor versions have many known flaws, and
4232   nobody should be using them. You should upgrade -- ideally to the
4233   0.2.2.x series. If you're using a Linux or BSD and its packages are
4234   obsolete, stop using those packages and upgrade anyway.
4235
4236   The Tor 0.2.1.x series is also approaching its end-of-life: it will no
4237   longer receive support after some time in early 2012.
4238
4239   o Major bugfixes:
4240     - Fix a heap overflow bug that could occur when trying to pull
4241       data into the first chunk of a buffer, when that chunk had
4242       already had some data drained from it. Fixes CVE-2011-2778;
4243       bugfix on 0.2.0.16-alpha. Reported by "Vektor".
4244     - Initialize Libevent with the EVENT_BASE_FLAG_NOLOCK flag enabled, so
4245       that it doesn't attempt to allocate a socketpair. This could cause
4246       some problems on Windows systems with overzealous firewalls. Fix for
4247       bug 4457; workaround for Libevent versions 2.0.1-alpha through
4248       2.0.15-stable.
4249     - If we mark an OR connection for close based on a cell we process,
4250       don't process any further cells on it. We already avoid further
4251       reads on marked-for-close connections, but now we also discard the
4252       cells we'd already read. Fixes bug 4299; bugfix on 0.2.0.10-alpha,
4253       which was the first version where we might mark a connection for
4254       close based on processing a cell on it.
4255     - Correctly sanity-check that we don't underflow on a memory
4256       allocation (and then assert) for hidden service introduction
4257       point decryption. Bug discovered by Dan Rosenberg. Fixes bug 4410;
4258       bugfix on 0.2.1.5-alpha.
4259     - Fix a memory leak when we check whether a hidden service
4260       descriptor has any usable introduction points left. Fixes bug
4261       4424. Bugfix on 0.2.2.25-alpha.
4262     - Don't crash when we're running as a relay and don't have a GeoIP
4263       file. Bugfix on 0.2.2.34; fixes bug 4340. This backports a fix
4264       we've had in the 0.2.3.x branch already.
4265     - When running as a client, do not print a misleading (and plain
4266       wrong) log message that we're collecting "directory request"
4267       statistics: clients don't collect statistics. Also don't create a
4268       useless (because empty) stats file in the stats/ directory. Fixes
4269       bug 4353; bugfix on 0.2.2.34.
4270
4271   o Minor bugfixes:
4272     - Detect failure to initialize Libevent. This fix provides better
4273       detection for future instances of bug 4457.
4274     - Avoid frequent calls to the fairly expensive cull_wedged_cpuworkers
4275       function. This was eating up hideously large amounts of time on some
4276       busy servers. Fixes bug 4518; bugfix on 0.0.9.8.
4277     - Resolve an integer overflow bug in smartlist_ensure_capacity().
4278       Fixes bug 4230; bugfix on Tor 0.1.0.1-rc. Based on a patch by
4279       Mansour Moufid.
4280     - Don't warn about unused log_mutex in log.c when building with
4281       --disable-threads using a recent GCC. Fixes bug 4437; bugfix on
4282       0.1.0.6-rc which introduced --disable-threads.
4283     - When configuring, starting, or stopping an NT service, stop
4284       immediately after the service configuration attempt has succeeded