[tor-commits] [tor-browser] 40/73: Bug 40432: Prevent probing installed applications

gitolite role git at cupani.torproject.org
Mon Aug 22 20:42:59 UTC 2022


This is an automated email from the git hooks/post-receive script.

richard pushed a commit to branch tor-browser-91.13.0esr-11.5-1
in repository tor-browser.

commit dacee9da27e95e8e22a55d2c539ffa772be4fe1a
Author: Matthew Finkel <sysrqb at torproject.org>
AuthorDate: Mon May 17 18:09:09 2021 +0000

    Bug 40432: Prevent probing installed applications
    
    Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1711084
---
 .../exthandler/nsExternalHelperAppService.cpp      | 30 ++++++++++++++++++----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/uriloader/exthandler/nsExternalHelperAppService.cpp b/uriloader/exthandler/nsExternalHelperAppService.cpp
index bcfaab121a250..122524c8ce7a0 100644
--- a/uriloader/exthandler/nsExternalHelperAppService.cpp
+++ b/uriloader/exthandler/nsExternalHelperAppService.cpp
@@ -938,8 +938,33 @@ nsresult nsExternalHelperAppService::GetFileTokenForPath(
 //////////////////////////////////////////////////////////////////////////////////////////////////////
 // begin external protocol service default implementation...
 //////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static const char kExternalProtocolPrefPrefix[] =
+    "network.protocol-handler.external.";
+static const char kExternalProtocolDefaultPref[] =
+    "network.protocol-handler.external-default";
+
 NS_IMETHODIMP nsExternalHelperAppService::ExternalProtocolHandlerExists(
     const char* aProtocolScheme, bool* aHandlerExists) {
+
+  // Replicate the same check performed in LoadURI.
+  // Deny load if the prefs say to do so
+  nsAutoCString externalPref(kExternalProtocolPrefPrefix);
+  externalPref += aProtocolScheme;
+  bool allowLoad = false;
+  *aHandlerExists = false;
+  if (NS_FAILED(Preferences::GetBool(externalPref.get(), &allowLoad))) {
+    // no scheme-specific value, check the default
+    if (NS_FAILED(
+            Preferences::GetBool(kExternalProtocolDefaultPref, &allowLoad))) {
+      return NS_OK;  // missing default pref
+    }
+  }
+
+  if (!allowLoad) {
+    return NS_OK;  // explicitly denied
+  }
+
   nsCOMPtr<nsIHandlerInfo> handlerInfo;
   nsresult rv = GetProtocolHandlerInfo(nsDependentCString(aProtocolScheme),
                                        getter_AddRefs(handlerInfo));
@@ -982,11 +1007,6 @@ NS_IMETHODIMP nsExternalHelperAppService::IsExposedProtocol(
   return NS_OK;
 }
 
-static const char kExternalProtocolPrefPrefix[] =
-    "network.protocol-handler.external.";
-static const char kExternalProtocolDefaultPref[] =
-    "network.protocol-handler.external-default";
-
 // static
 nsresult nsExternalHelperAppService::EscapeURI(nsIURI* aURI, nsIURI** aResult) {
   MOZ_ASSERT(aURI);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list