[tbb-commits] [tor-browser/tor-browser-60.3.0esr-8.5-1] Bug 1464481 - fix and test crash when getting registered channelwrapper, r=kmag

gk at torproject.org gk at torproject.org
Mon Dec 3 16:18:46 UTC 2018


commit 1305066f21439675842aad91844e6b490df8c3e0
Author: Shane Caraveo <scaraveo at mozilla.com>
Date:   Fri May 25 16:41:19 2018 -0400

    Bug 1464481 - fix and test crash when getting registered channelwrapper, r=kmag
    
    MozReview-Commit-ID: LEGojHEb742
    
    --HG--
    extra : rebase_source : 7018cfef6b7415ea275dc2c3e414586396a9e2be
---
 dom/chrome-webidl/ChannelWrapper.webidl            |  2 +-
 .../test/mochitest/test_ext_webrequest_hsts.html   | 25 ++++++++++++++++++++++
 toolkit/modules/addons/WebRequest.jsm              |  4 +++-
 3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/dom/chrome-webidl/ChannelWrapper.webidl b/dom/chrome-webidl/ChannelWrapper.webidl
index 2777aab65c8e..bc959d30d043 100644
--- a/dom/chrome-webidl/ChannelWrapper.webidl
+++ b/dom/chrome-webidl/ChannelWrapper.webidl
@@ -52,7 +52,7 @@ interface ChannelWrapper : EventTarget {
    * Returns the wrapper instance for the given channel. The same wrapper is
    * always returned for a given channel.
    */
-  static ChannelWrapper getRegisteredChannel(unsigned long long aChannelId,
+  static ChannelWrapper? getRegisteredChannel(unsigned long long aChannelId,
                                              WebExtensionPolicy extension,
                                              TabParent? tabParent);
 
diff --git a/toolkit/components/extensions/test/mochitest/test_ext_webrequest_hsts.html b/toolkit/components/extensions/test/mochitest/test_ext_webrequest_hsts.html
index ad4d4f32a657..849527ea4a80 100644
--- a/toolkit/components/extensions/test/mochitest/test_ext_webrequest_hsts.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_webrequest_hsts.html
@@ -185,6 +185,31 @@ add_task(async function test_hsts_header() {
 
   await extension.unload();
 });
+
+add_task(async function test_nonBlocking_securityInfo() {
+  let extension = ExtensionTestUtils.loadExtension({
+    manifest: {
+      "permissions": [
+        "webRequest",
+        "<all_urls>",
+      ],
+    },
+    async background() {
+      let tab;
+      browser.webRequest.onHeadersReceived.addListener(async (details) => {
+        let securityInfo = await browser.webRequest.getSecurityInfo(details.requestId, {});
+        browser.test.assertTrue(!securityInfo, "securityInfo undefined on http request");
+        browser.tabs.remove(tab.id);
+        browser.test.notifyPass("success");
+      }, {urls: ["<all_urls>"], types: ["main_frame"]});
+      tab = await browser.tabs.create({url: "https://example.org/tests/toolkit/components/extensions/test/mochitest/file_sample.html"});
+    },
+  });
+  await extension.startup();
+
+  await extension.awaitFinish("success");
+  await extension.unload();
+});
 </script>
 </head>
 <body>
diff --git a/toolkit/modules/addons/WebRequest.jsm b/toolkit/modules/addons/WebRequest.jsm
index a4c9e9859a21..6a95182a3876 100644
--- a/toolkit/modules/addons/WebRequest.jsm
+++ b/toolkit/modules/addons/WebRequest.jsm
@@ -1012,7 +1012,9 @@ var WebRequest = {
 
   getSecurityInfo: (details) => {
     let channel = ChannelWrapper.getRegisteredChannel(details.id, details.extension, details.tabParent);
-    return SecurityInfo.getSecurityInfo(channel.channel, details.options);
+    if (channel) {
+      return SecurityInfo.getSecurityInfo(channel.channel, details.options);
+    }
   },
 };
 





More information about the tbb-commits mailing list