[tbb-commits] [tor-browser] branch tor-browser-102.3.0esr-12.0-2 updated: fixup! Bug 30237: Add v3 onion services client authentication prompt

gitolite role git at cupani.torproject.org
Wed Oct 12 21:23:36 UTC 2022


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

richard pushed a commit to branch tor-browser-102.3.0esr-12.0-2
in repository tor-browser.

The following commit(s) were added to refs/heads/tor-browser-102.3.0esr-12.0-2 by this push:
     new caa5988884a3 fixup! Bug 30237: Add v3 onion services client authentication prompt
caa5988884a3 is described below

commit caa5988884a3dc6e60047ad246abd56d84fa11ad
Author: hackademix <giorgio at maone.net>
AuthorDate: Wed Oct 12 19:17:53 2022 +0200

    fixup! Bug 30237: Add v3 onion services client authentication prompt
---
 .../components/onionservices/content/authPrompt.js    | 18 +++++++++++-------
 browser/components/onionservices/content/authUtil.jsm | 19 -------------------
 browser/components/sessionstore/SessionStore.jsm      |  5 -----
 browser/themes/shared/aboutNetError.css               |  7 +++++++
 docshell/base/nsDocShell.cpp                          |  6 ++++--
 5 files changed, 22 insertions(+), 33 deletions(-)

diff --git a/browser/components/onionservices/content/authPrompt.js b/browser/components/onionservices/content/authPrompt.js
index 14fb334a6206..ba40e9fd464c 100644
--- a/browser/components/onionservices/content/authPrompt.js
+++ b/browser/components/onionservices/content/authPrompt.js
@@ -225,13 +225,17 @@ const OnionAuthPrompt = (function() {
 
     _onCancel() {
       // Arrange for an error page to be displayed.
-      this._browser.messageManager.sendAsyncMessage(
-        OnionAuthUtil.message.authPromptCanceled,
-        {
-          failedURI: this._failedURI.spec,
-          reasonForPrompt: this._reasonForPrompt,
-        }
-      );
+      const failedURI = this._failedURI.spec;
+      const errorCode =
+          this._reasonForPrompt === OnionAuthUtil.topic.clientAuthMissing
+            ? Cr.NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH
+            : Cr.NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH;
+
+      const io = `ChromeUtils.import("resource://gre/modules/Services.jsm").Services.io`;
+      this._browser.messageManager.loadFrameScript(`data:,${encodeURIComponent(
+        `docShell.displayLoadError(${errorCode}, ${io}.newURI(${JSON.stringify(failedURI)}), undefined, undefined);`
+        )}`,
+        false);
     },
 
     _getKeyElement() {
diff --git a/browser/components/onionservices/content/authUtil.jsm b/browser/components/onionservices/content/authUtil.jsm
index 82a835359b3e..7157acf2e11d 100644
--- a/browser/components/onionservices/content/authUtil.jsm
+++ b/browser/components/onionservices/content/authUtil.jsm
@@ -24,23 +24,4 @@ const OnionAuthUtil = {
     warningElement: "tor-clientauth-warning",
     checkboxElement: "tor-clientauth-persistkey-checkbox",
   },
-
-  addCancelMessageListener(aMessageManager, aDocShell) {
-    aMessageManager.addMessageListener(this.message.authPromptCanceled, {
-      receiveMessage(aMessage) {
-        // Upon cancellation of the client authentication prompt, display
-        // the appropriate error page. When calling the docShell
-        // displayLoadError() function, we pass undefined for the failed
-        // channel so that displayLoadError() can determine that it should
-        // not display the client authentication prompt a second time.
-        const failedURI = Services.io.newURI(aMessage.data.failedURI);
-        const reasonForPrompt = aMessage.data.reasonForPrompt;
-        const errorCode =
-          reasonForPrompt === this.topic.clientAuthMissing
-            ? Cr.NS_ERROR_TOR_ONION_SVC_MISSING_CLIENT_AUTH
-            : Cr.NS_ERROR_TOR_ONION_SVC_BAD_CLIENT_AUTH;
-        aDocShell.displayLoadError(errorCode, failedURI, undefined, undefined);
-      },
-    });
-  },
 };
diff --git a/browser/components/sessionstore/SessionStore.jsm b/browser/components/sessionstore/SessionStore.jsm
index 58c5a4fed6ca..4611737ca918 100644
--- a/browser/components/sessionstore/SessionStore.jsm
+++ b/browser/components/sessionstore/SessionStore.jsm
@@ -234,10 +234,6 @@ ChromeUtils.defineModuleGetter(
   "resource://gre/modules/sessionstore/SessionHistory.jsm"
 );
 
-const { OnionAuthUtil } = ChromeUtils.import(
-  "chrome://browser/content/onionservices/authUtil.jsm"
-);
-
 XPCOMUtils.defineLazyServiceGetters(this, {
   gScreenManager: ["@mozilla.org/gfx/screenmanager;1", "nsIScreenManager"],
 });
@@ -1514,7 +1510,6 @@ var SessionStoreInternal = {
       let listenWhenClosed = CLOSED_MESSAGES.has(msg);
       mm.addMessageListener(msg, this, listenWhenClosed);
     });
-    OnionAuthUtil.addCancelMessageListener(mm, aWindow.docShell);
 
     // Load the frame script after registering listeners.
     if (!Services.appinfo.sessionHistoryInParent) {
diff --git a/browser/themes/shared/aboutNetError.css b/browser/themes/shared/aboutNetError.css
index 73f9d2760a15..438cc5782291 100644
--- a/browser/themes/shared/aboutNetError.css
+++ b/browser/themes/shared/aboutNetError.css
@@ -8,6 +8,13 @@ body {
   --warning-color: #ffa436;
 }
 
+body.onionAuthPrompt {
+  background: white;
+}
+.onionAuthPrompt > * {
+  display: none;
+}
+
 @media (prefers-color-scheme: dark)  {
   body {
     --warning-color: #ffbd4f;
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index 95c68c34fd7f..22577e45643a 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -3902,8 +3902,10 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
     // if the user cancels the Tor client auth prompt, but in that case we
     // will not have a failed channel and therefore we will not prompt again.
     if (isOnionAuthError && aFailedChannel) {
-      // Display about:blank while the Tor client auth prompt is open.
-      errorPage.AssignLiteral("blank");
+      // Display about:neterror with a style emulating about:blank while the
+      // Tor client auth prompt is open. Do not use about:blank directly: it
+      // will mess with the failed channel information persistence!
+      cssClass.AssignLiteral("onionAuthPrompt");
     }
   }
 

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


More information about the tbb-commits mailing list