aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* Use strlcpy in create_unix_sockaddr()Nick Mathewson2011-07-01
| | | | | | | | | | | Using strncpy meant that if listenaddress were ever >= sizeof(sockaddr_un.sun_path), we would fail to nul-terminate sun_path. This isn't a big deal: we never read sun_path, and the kernel is smart enough to reject the sockaddr_un if it isn't nul-terminated. Nonetheless, it's a dumb failure mode. Instead, we should reject addresses that don't fit in sockaddr_un.sun_path. Coverity found this; it's CID 428. Bugfix on 0.2.0.3-alpha.
* Fix a rare memory leak in rend_cache_storeNick Mathewson2011-07-01
| | | | | | | | | | | When we rejected a descriptor for not being the one we wanted, we were letting the parsed descriptor go out of scope. Found by Coverity; CID # 30. Bugfix on 0.2.1.26. (No changes file yet, since this is not in any 0.2.1.x release.)
* Abandon rendezvous circuits on SIGNAL NEWNYMRobert Ransom2011-06-17
|
* move to the june 1 2011 maxmind geoip dbRoger Dingledine2011-06-05
|
* Merge branch 'bug2574' into maint-0.2.1Nick Mathewson2011-05-28
|\
| * Work correctly if your nameserver is ::1Nick Mathewson2011-05-23
| | | | | | | | | | | | | | | | | | We had all the code in place to handle this right... except that we were unconditionally opening a PF_INET socket instead of looking at sa_family. Ow. Fixes bug 2574; not a bugfix on any particular version, since this never worked before.
* | squash! Add crypto_pk_check_key_public_exponent functionNick Mathewson2011-05-16
| | | | | | | | | | | | Rename crypto_pk_check_key_public_exponent to crypto_pk_public_exponent_ok: it's nice to name predicates s.t. you can tell how to interpret true and false.
* | Require that certain public keys have public exponent 65537Robert Ransom2011-05-16
| |
* | Add crypto_pk_check_key_public_exponent functionRobert Ransom2011-05-16
| |
* | Check fetched rendezvous descriptors' service IDsRobert Ransom2011-05-16
| |
* | Fixup whitespace issues from 3122 commitNick Mathewson2011-05-15
| |
* | Another doc tweak on tor_memcmp: <b>b</b>, not <b>.Nick Mathewson2011-05-15
| |
* | minor tweaks to 4b19730c8234dRoger Dingledine2011-05-15
| |
* | Merge remote-tracking branch 'public/bug3122_memcmp_squashed' into maint-0.2.1Nick Mathewson2011-05-12
|\ \
| * | Hand-conversion and audit phase of memcmp transitionNick Mathewson2011-05-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Here I looked at the results of the automated conversion and cleaned them up as follows: If there was a tor_memcmp or tor_memeq that was in fact "safe"[*] I changed it to a fast_memcmp or fast_memeq. Otherwise if there was a tor_memcmp that could turn into a tor_memneq or tor_memeq, I converted it. This wants close attention. [*] I'm erring on the side of caution here, and leaving some things as tor_memcmp that could in my opinion use the data-dependent fast_memcmp variant.
| * | Automated conversion of memcmp to tor_memcmp/tor_mem[n]eqNick Mathewson2011-05-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit is _exactly_ the result of perl -i -pe 's/\bmemcmp\(/tor_memcmp\(/g' src/*/*.[ch] perl -i -pe 's/\!\s*tor_memcmp\(/tor_memeq\(/g' src/*/*.[ch] perl -i -pe 's/0\s*==\s*tor_memcmp\(/tor_memeq\(/g' src/*/*.[ch] perl -i -pe 's/0\s*!=\s*tor_memcmp\(/tor_memneq\(/g' src/*/*.[ch] git checkout src/common/di_ops.[ch] git checkout src/or/test.c git checkout src/common/test.h
| * | Add a "di_ops.h" include to util.hNick Mathewson2011-05-11
| | |
| * | Add a data-independent variant of memcmp and a d-i memeq function.Nick Mathewson2011-05-11
| |/ | | | | | | | | The tor_memcmp code is by Robert Ransom, and the tor_memeq code is by me. Both incorporate some ideas from DJB's stuff.
* | Fix crash when read_file_to_string() fails in SAVECONFNick Mathewson2011-05-11
| | | | | | | | | | | | The new behavior is to try to rename the old file if there is one there that we can't read. In all likelihood, that will fail too, but at least we tried, and at least it won't crash.
* | Update to the May 1 2011 Maxmind GeoLite Country databaseRoger Dingledine2011-05-10
|/
* Fix a failure case of connection_ap_handshake_attach_circuit()Sebastian Hahn2011-04-28
| | | | | tor_fragile_assert() might be a no-op, so we have to return something here to indicate failure to the caller.
* Fix a bug introduced by purging rend_cache on NEWNYMRobert Ransom2011-04-28
| | | | | | | | If the user sent a SIGNAL NEWNYM command after we fetched a rendezvous descriptor, while we were building the introduction-point circuit, we would give up entirely on trying to connect to the hidden service. Original patch by rransom slightly edited to go into 0.2.1
* Allow rend_client_send_introduction to fail transientlyRobert Ransom2011-04-28
| | | | i.e. without closing the AP connection.
* Forget all rendezvous client state on SIGNAL NEWNYMRobert Ransom2011-04-28
|
* Make SIZE_T_CEILING unsigned; add a signed SSIZE_T_CEILINGNick Mathewson2011-04-26
| | | | | | | None of the comparisons were _broken_ previously, but avoiding signed/unsigned comparisons makes everybody happier. Fixes bug2475.
* Fix a bug in removing DNSPort requests from their circular listNick Mathewson2011-04-21
| | | | | Under heavy load, this could result in an assertion failure. Fix for bug 2933; bugfix on 0.2.0.10-alpha.
* Merge remote-tracking branch 'rransom/bug2750-v3' into maint-0.2.1Nick Mathewson2011-04-19
|\
| * Add an XXXRobert Ransom2011-04-18
| |
| * Correct the warning emitted when rejecting an oversized HS descRobert Ransom2011-04-18
| |
* | Ouch: correctly tabify the micro-revision.i target in Makefile.am (0.2.1 only)Nick Mathewson2011-04-19
|/
* Merge remote-tracking branch 'public/bug2402_again' into maint-0.2.1Nick Mathewson2011-04-06
|\
| * Backport: Generate version tags using Git, not (broken) svn revisions.Nick Mathewson2011-03-11
| | | | | | | | | | | | Partial backport of daa0326aaaa85a760be94ee2360cfa61a9fb5be2 . Resolves bug 2402. Bugfix on 0.2.1.15 (for the part where we switched to git) and on 0.2.1.30 (for the part where we dumped micro-revisions.)
| * Revert "Simplest fix to bug2402: do not include SVN versions"Nick Mathewson2011-03-11
| | | | | | | | | | | | | | This reverts commit a1073ee956021ead19d30c2151510dbaced416a8. Apparently, we totally misunderstood how the debian packages were using microrevisions. Better fix that!
* | switch to the apr 2011 geoip dbRoger Dingledine2011-04-04
| |
* | Fix a compile warning when using clangSebastian Hahn2011-03-15
| | | | | | | | | | | | Issue noticed by Steven Murdoch; fixes bug 2689. The cast didn't do anything, and we don't need to look at the return value of the function here.
* | we're not reachable if we don't have a routerinfo yetRoger Dingledine2011-03-13
|/
* move to march 2011 geoip fileRoger Dingledine2011-03-08
|
* Avoid crash in any_pending_bridge_descriptor_fetchesNick Mathewson2011-03-08
| | | | | This is based on shitlei's fix for bug2629, with extra parens removed. Fixes bug 2629, bugfix on 0.2.1.2-alpha.
* Merge branch 'real_ipv6_fix' into maint-0.2.1Nick Mathewson2011-03-06
|\
| * Oops, here's the *REAL* fix for the ipv6 issueNick Mathewson2011-03-06
| | | | | | | | | | We need to _REJECT_ descriptors with accept6/reject6 lines. If we let them onto the network , other un-upgraded tors will crash.
| * Revert "Disallow reject6 and accept6 lines in descriptors"Nick Mathewson2011-03-06
| | | | | | | | This reverts commit b3918b3bbbfa9097246d63746c8b540eff2ec8e8.
* | Merge branch 'careful_with_all_descs' into maint-0.2.1Nick Mathewson2011-03-06
|\ \ | |/ |/|
| * Do not serve encrypt-only descriptors with the "all" request. Reported by ↵Nick Mathewson2011-03-04
| | | | | | | | piebeer
* | exit_policy_is_general_exit is IPv4 only; it should admit it.Nick Mathewson2011-03-06
| |
* | Disallow reject6 and accept6 lines in descriptorsSebastian Hahn2011-03-06
|/ | | | | | | | | | This fixes a remotely triggerable assert on directory authorities, who don't handle descriptors with ipv6 contents well yet. We will want to revert this once we're ready to handle ipv6. Issue raised by lorth on #tor, who wasn't able to use Tor anymore. Analyzed with help from Christian Fromme. Fix suggested by arma. Bugfix on 0.2.1.3-alpha.
* Merge remote branch 'public/bug1859_021' into maint-0.2.1Nick Mathewson2011-02-22
|\
| * Fix a remaining bug in Robert's bug1859 fix.Nick Mathewson2010-11-12
| | | | | | | | | | | | When intro->extend_info is created for an introduction point, it only starts out with a nickname, not necessarily an identity digest. Thus, doing router_get_by_digest isn't necessarily safe.
| * Issues with router_get_by_nickname()Robert Hogan2010-11-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | https://trac.torproject.org/projects/tor/ticket/1859 Use router_get_by_digest() instead of router_get_by_hexdigest() in circuit_discard_optional_exit_enclaves() and rend_client_get_random_intro(), per Nick's comments. Using router_get_by_digest() in rend_client_get_random_intro() will break hidden services published by Tor versions pre 0.1.2.18 and 0.2.07-alpha as they only publish by nickname. This is acceptable however as these versions only publish to authority tor26 and don't work for versions in the 0.2.2.x series anyway.
| * Issues with router_get_by_nickname()Robert Hogan2010-11-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://trac.torproject.org/projects/tor/ticket/1859 There are two problems in this bug: 1. When an OP makes a .exit request specifying itself as the exit, and the exit is not yet listed, Tor gets all the routerinfos needed for the circuit but discovers in circuit_is_acceptable() that its own routerinfo is not in the routerdigest list and cannot be used. Tor then gets locked in a cycle of repeating these two steps. When gathering the routerinfos for a circuit, specifically when the exit has been chosen by .exit notation, Tor needs to apply the same rules it uses later on when deciding if it can build a circuit with those routerinfos. 2. A different bug arises in the above situation when the Tor instance's routerinfo *is* listed in the routerlist, it shares its nickname with a number of other Tor nodes, and it does not have 'Named' rights to its nickname. So for example, if (i) there are five nodes named Bob in the network, (ii) I am running one of them but am flagged as 'Unnamed' because someone else claimed the 'Bob' nickname first, and (iii) I run my Tor as both client and exit the following can happen to me: - I go to www.evil.com - I click on a link www.evil.com.bob.exit - My request will exit through my own Tor node rather than the 'Named' node Bob or any of the others. - www.evil.com now knows I am actually browsing from the same computer that is running my 'Bob' node So to solve both issues we need to ensure: - When fulfilling a .exit request we only choose a routerinfo if it exists in the routerlist, even when that routerinfo is ours. - When getting a router by nickname we only return our own router information if it is not going to be used for building a circuit. We ensure this by removing the special treatment afforded our own router in router_get_by_nickname(). This means the function will only return the routerinfo of our own router if it is in the routerlist built from authority info and has a unique nickname or is bound to a non-unique nickname. There are some uses of router_get_by_nickname() where we are looking for the router by name because of a configuration directive, specifically local declaration of NodeFamilies and EntryNodes and other routers' declaration of MyFamily. In these cases it is not at first clear if we need to continue returning our own routerinfo even if our router is not listed and/or has a non-unique nickname with the Unnamed flag. The patch treats each of these cases as follows: Other Routers' Declaration of MyFamily This happens in routerlist_add_family(). If another router declares our router in its family and our router has the Unnamed flag or is not in the routerlist yet, should we take advantage of the fact that we know our own routerinfo to add us in anyway? This patch says 'no, treat our own router just like any other'. This is a safe choice because it ensures our client has the same view of the network as other clients. We also have no good way of knowing if our router is Named or not independently of the authorities, so we have to rely on them in this. Local declaration of NodeFamilies Again, we have no way of knowing if the declaration 'NodeFamilies Bob,Alice,Ringo' refers to our router Bob or the Named router Bob, so we have to defer to the authorities and treat our own router like any other. Local declaration of NodeFamilies Again, same as above. There's also no good reason we would want our client to choose it's own router as an entry guard if it does not meet the requirements expected of any other router on the network. In order to reduce the possibility of error, the patch also replaces two instances where we were using router_get_by_nickname() with calls to router_get_by_hexdigest() where the identity digest of the router is available.
* | Merge remote branch 'public/bug2402_nothing' into maint-0.2.1Nick Mathewson2011-02-22
|\ \