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