[tor-commits] [torbutton/master] Fix bug #1999: Disable tor urls by default

mikeperry at torproject.org mikeperry at torproject.org
Tue Mar 1 10:04:16 UTC 2011


commit 2f7c7fe8561b34da7107f0e5774bc91748dc6953
Author: Mike Perry <mikeperry-git at fscked.org>
Date:   Tue Mar 1 01:57:19 2011 -0800

    Fix bug #1999: Disable tor urls by default
    
    Fixing these will be too problematic for 1.4.x. We'll block on this bug
    forever otherwise. We throw an unknown protocol exception if this pref is set
    to prevent fingerprinting with this technique:
    http://pseudo-flaw.net/tor/torbutton/scan-protocol-handlers.html
---
 src/components/tor-protocol.js          |    8 ++++++--
 src/components/tors-protocol.js         |    8 ++++++--
 src/defaults/preferences/preferences.js |    1 +
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/components/tor-protocol.js b/src/components/tor-protocol.js
index e8bb68e..5bd27e3 100644
--- a/src/components/tor-protocol.js
+++ b/src/components/tor-protocol.js
@@ -48,12 +48,16 @@ Protocol.prototype =
 
   newChannel: function(aURI)
   {
+    var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+        .getService(Components.interfaces.nsIPrefBranch);
+    if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+      throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+    }
+
     /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of http.*/
     var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
     var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
                         .getService(Components.interfaces.nsIPromptService);
-    var prefs = Components.classes["@mozilla.org/preferences-service;1"]
-        .getService(Components.interfaces.nsIPrefBranch);
     var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
     var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                          .getService(Components.interfaces.nsIWindowMediator);
diff --git a/src/components/tors-protocol.js b/src/components/tors-protocol.js
index ca82b47..8f02da8 100644
--- a/src/components/tors-protocol.js
+++ b/src/components/tors-protocol.js
@@ -48,12 +48,16 @@ Protocol.prototype =
 
   newChannel: function(aURI)
   {
+    var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+        .getService(Components.interfaces.nsIPrefBranch);
+    if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+      throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+    }
+
     /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of https.*/
     var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
     var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
                         .getService(Components.interfaces.nsIPromptService);
-    var prefs = Components.classes["@mozilla.org/preferences-service;1"]
-        .getService(Components.interfaces.nsIPrefBranch);
     var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
     var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                          .getService(Components.interfaces.nsIWindowMediator);
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 3d4eac7..f12e849 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -164,6 +164,7 @@ pref("extensions.torbutton.fakerefresh", false);
 pref("extensions.torbutton.customeref","");
 pref("extensions.torbutton.disable_livemarks",true);
 pref("extensions.torbutton.update_torbutton_via_tor",true);
+pref("extensions.torbutton.tor_urls",false);
 // Opt out of Firefox addon pings:
 // https://developer.mozilla.org/en/Addons/Working_with_AMO
 pref("extensions.e0204bd5-9d31-402b-a99d-a6aa8ffebdca.getAddons.cache.enabled", false);



More information about the tor-commits mailing list