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