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