Commits:
-
4cd3b8b0
by Henry Wilkes at 2025-01-28T16:26:31+01:00
fixup! Bug 40701: Add security warning when downloading a file
Bug 43312: Ensure download panel warning uses the same width as the
mozilla downloads list.
We stop setting a `width` on the download panel because this can
conflict with the default width set for the mozilla downloads list, set
by localisers. Instead, we use the same width for our Tor Browser
warning message using a wrapper element.
We also ensure that the wrapper element has `min-width: 100%` for
scenarios where the localiser width is less than the min-width of the
ancestor panel.
-
3db9163f
by Pier Angelo Vendrame at 2025-01-28T16:27:09+01:00
fixup! Bug 40933: Add tor-launcher functionality
Bug 43326: Restrict the changes to LD_LIBRARY_PATH.
We used to set LD_LIBRARY_PATH for the tor daemon before launching the
browser, but this does not work well for some distributions, which
link to the latest version of OpenSSL, whereas we link to the LTS.
To avoid conflicts, we can set a custom LD_LIBRARY_PATH only for the
tor daemon.
-
b683ecb0
by Pier Angelo Vendrame at 2025-01-28T16:30:30+01:00
fixup! Firefox preference overrides.
BB 43236: Disable vsync on Wayland.
Vsync leaks the monitor refresh rate, therefore it is already disabled
on other platforms, including Linux/X11 and Windows.
-
4744d84d
by Pier Angelo Vendrame at 2025-01-28T16:31:13+01:00
Bug 43386: Use Firefox in the UA in RFP-exempt request.
XHR requests initiated by extensions are exempt from RFP.
Therefore, they report the actual app name, instead of Firefox, and the
actual Firefox minor version.
This happens whenever the app name has been customized and does not
match a hardcoded "Firefox".
-
55cbbdde
by Pier Angelo Vendrame at 2025-01-28T16:31:42+01:00
fixup! Firefox preference overrides.
BB 41065: Hardcode the limit of storage quota.
Currently, we return min(10GB, 0.2 * available space in the fs).
This is bad for systems that have less than 50GB free, especially live
systems, such as Tails.
Set a pref to replace the available space with a hardcoded limit
(5GiB).
-
24417b5a
by Henry Wilkes at 2025-01-28T16:32:43+01:00
fixup! Bug 40458: Implement .tor.onion aliases
TB 41831: Add additional effective TLD for abc.au.securedrop.tor.onion
exception.
7 changed files:
Changes:
browser/app/profile/001-base-profile.js
| ... |
... |
@@ -87,6 +87,15 @@ pref("browser.sessionstore.privacy_level", 2); |
|
87
|
87
|
// Use the in-memory media cache and increase its maximum size (#29120)
|
|
88
|
88
|
pref("browser.privatebrowsing.forceMediaMemoryCache", true);
|
|
89
|
89
|
pref("media.memory_cache_max_size", 65536);
|
|
|
90
|
+// tor-browser#41065: lie about the available quota.
|
|
|
91
|
+// This value is in KiB, and will be divided by 5. Currently: 50GiB, to be
|
|
|
92
|
+// coherent with Firefox's usual value. However, this might be too much for live
|
|
|
93
|
+// systems.
|
|
|
94
|
+// This will be the limit also after granting the persistent storage permission,
|
|
|
95
|
+// but we are not interested in it, since we support only PBM.
|
|
|
96
|
+// We can come back to it, and hardcode the two spaced differently, if we ever
|
|
|
97
|
+// think we need it.
|
|
|
98
|
+pref("dom.quotaManager.temporaryStorage.fixedLimit", 52428800);
|
|
90
|
99
|
// Disable restore in case of crash (tor-browser#41503)
|
|
91
|
100
|
// This should not be needed in PBM, but we added it anyway like other options.
|
|
92
|
101
|
pref("browser.sessionstore.resume_from_crash", false);
|
| ... |
... |
@@ -466,6 +475,8 @@ pref("pdfjs.disabled", false, locked); |
|
466
|
475
|
#endif
|
|
467
|
476
|
// Bug 40057: Ensure system colors are not used for CSS4 colors
|
|
468
|
477
|
pref("browser.display.use_system_colors", false);
|
|
|
478
|
+// tor-browser#43236: Disable vsync on Wayland to prevent refresh rate leaks.
|
|
|
479
|
+pref("widget.wayland.vsync.enabled", false);
|
|
469
|
480
|
|
|
470
|
481
|
// tor-browser#41943: defense-in-depth, but do not lock anymore (enabled in Firefox 119, http://bugzil.la/1851162)
|
|
471
|
482
|
pref("_javascript_.options.spectre.disable_for_isolated_content", false);
|
browser/components/downloads/content/downloads.css
| ... |
... |
@@ -92,15 +92,19 @@ |
|
92
|
92
|
#downloadsPanel-mainView {
|
|
93
|
93
|
min-width: 37em;
|
|
94
|
94
|
padding: 0.62em;
|
|
95
|
|
- /* If we don't set a width, #downloadsPanelTorWarning will request
|
|
96
|
|
- * its max-content width. */
|
|
97
|
|
- width: 37em;
|
|
98
|
95
|
}
|
|
99
|
96
|
|
|
100
|
97
|
#downloadsPanelTorWarning {
|
|
101
|
98
|
margin-block-end: var(--arrowpanel-menuitem-padding-block);
|
|
102
|
99
|
}
|
|
103
|
100
|
|
|
|
101
|
+#downloadsPanelTorWarningWrapper {
|
|
|
102
|
+ /* The wrapper element has its `width` attribute set by mozilla localisers.
|
|
|
103
|
+ * We want to ensure the element occupies the available width when the
|
|
|
104
|
+ * localiser width is smaller. See tor-browser#43312. */
|
|
|
105
|
+ min-width: 100%;
|
|
|
106
|
+}
|
|
|
107
|
+
|
|
104
|
108
|
#downloadsHistory,
|
|
105
|
109
|
#downloadsFooterButtons {
|
|
106
|
110
|
margin: 0;
|
browser/components/downloads/content/downloadsPanel.inc.xhtml
| ... |
... |
@@ -104,8 +104,25 @@ |
|
104
|
104
|
disablekeynav="true">
|
|
105
|
105
|
|
|
106
|
106
|
<panelview id="downloadsPanel-mainView">
|
|
107
|
|
- <html:moz-message-bar id="downloadsPanelTorWarning">
|
|
108
|
|
- </html:moz-message-bar>
|
|
|
107
|
+ <!-- We add a wrapper around the #downloadsPanelTorWarning and give it the
|
|
|
108
|
+ - same Fluent ID as #downloadsListBox. This Fluent message allows
|
|
|
109
|
+ - Firefox localisers to set the width of the #downloadsListBox using
|
|
|
110
|
+ - the style attribute. We want the same width set for our downloads
|
|
|
111
|
+ - warning. Otherwise the warning will occupy its max-content width.
|
|
|
112
|
+ - NOTE: We require a wrapper element since #downloadsPanelTorWarning
|
|
|
113
|
+ - needs its own Fluent attributes.
|
|
|
114
|
+ - NOTE: This only works if #downloadsPanelTorWarningWrapper and
|
|
|
115
|
+ - #downloadsListBox share the same padding relative to their common
|
|
|
116
|
+ - ancestor.
|
|
|
117
|
+ - See tor-browser#43312. -->
|
|
|
118
|
+ <html:div
|
|
|
119
|
+ id="downloadsPanelTorWarningWrapper"
|
|
|
120
|
+ data-l10n-id="downloads-panel-items"
|
|
|
121
|
+ data-l10n-attrs="style"
|
|
|
122
|
+ >
|
|
|
123
|
+ <html:moz-message-bar id="downloadsPanelTorWarning">
|
|
|
124
|
+ </html:moz-message-bar>
|
|
|
125
|
+ </html:div>
|
|
109
|
126
|
<vbox class="panel-view-body-unscrollable">
|
|
110
|
127
|
<richlistbox id="downloadsListBox"
|
|
111
|
128
|
data-l10n-id="downloads-panel-items"
|
netwerk/dns/effective_tld_names.dat
| ... |
... |
@@ -5065,6 +5065,10 @@ pro.om |
|
5065
|
5065
|
onion
|
|
5066
|
5066
|
tor.onion
|
|
5067
|
5067
|
securedrop.tor.onion
|
|
|
5068
|
+// An additional TLD for abc.au.securedrop.tor.onion only.
|
|
|
5069
|
+// See tor-browser#41831.
|
|
|
5070
|
+// TODO: Remove once abc.au has migrated. See tor-browser#43443.
|
|
|
5071
|
+au.securedrop.tor.onion
|
|
5068
|
5072
|
|
|
5069
|
5073
|
// org : https://www.iana.org/domains/root/db/org.html
|
|
5070
|
5074
|
org
|
netwerk/protocol/http/nsHttpHandler.cpp
| ... |
... |
@@ -867,7 +867,7 @@ void nsHttpHandler::BuildUserAgent() { |
|
867
|
867
|
mUserAgent += '/';
|
|
868
|
868
|
mUserAgent += mProductSub;
|
|
869
|
869
|
|
|
870
|
|
- bool isFirefox = mAppName.EqualsLiteral("Firefox");
|
|
|
870
|
+ bool isFirefox = true;
|
|
871
|
871
|
if (isFirefox || mCompatFirefoxEnabled) {
|
|
872
|
872
|
// "Firefox/x.y" (compatibility) app token
|
|
873
|
873
|
mUserAgent += ' ';
|
toolkit/components/tor-launcher/TorLauncherUtil.sys.mjs
| ... |
... |
@@ -5,6 +5,8 @@ |
|
5
|
5
|
* Tor Launcher Util JS Module
|
|
6
|
6
|
*************************************************************************/
|
|
7
|
7
|
|
|
|
8
|
+import { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs";
|
|
|
9
|
+
|
|
8
|
10
|
const lazy = {};
|
|
9
|
11
|
|
|
10
|
12
|
ChromeUtils.defineESModuleGetters(lazy, {
|
| ... |
... |
@@ -335,6 +337,13 @@ export const TorLauncherUtil = Object.freeze({ |
|
335
|
337
|
return Services.appinfo.OS === "Android";
|
|
336
|
338
|
},
|
|
337
|
339
|
|
|
|
340
|
+ get isLinux() {
|
|
|
341
|
+ // Use AppConstants for Linux rather then appinfo because we are sure it
|
|
|
342
|
+ // will catch also various Unix flavors for which unofficial ports might
|
|
|
343
|
+ // exist (which should work as Linux, as far as we know).
|
|
|
344
|
+ return AppConstants.platform === "linux";
|
|
|
345
|
+ },
|
|
|
346
|
+
|
|
338
|
347
|
get isMac() {
|
|
339
|
348
|
return Services.appinfo.OS === "Darwin";
|
|
340
|
349
|
},
|
toolkit/components/tor-launcher/TorProcess.sys.mjs
| ... |
... |
@@ -122,6 +122,16 @@ export class TorProcess { |
|
122
|
122
|
stderr: "stdout",
|
|
123
|
123
|
workdir: lazy.TorLauncherUtil.getTorFile("pt-startup-dir", false).path,
|
|
124
|
124
|
};
|
|
|
125
|
+ if (lazy.TorLauncherUtil.isLinux) {
|
|
|
126
|
+ let ldLibPath = Services.env.get("LD_LIBRARY_PATH") ?? "";
|
|
|
127
|
+ if (ldLibPath) {
|
|
|
128
|
+ ldLibPath = ":" + ldLibPath;
|
|
|
129
|
+ }
|
|
|
130
|
+ options.environment = {
|
|
|
131
|
+ LD_LIBRARY_PATH: this.#exeFile.parent.path + ldLibPath,
|
|
|
132
|
+ };
|
|
|
133
|
+ options.environmentAppend = true;
|
|
|
134
|
+ }
|
|
125
|
135
|
this.#subprocess = await Subprocess.call(options);
|
|
126
|
136
|
this.#status = TorProcessStatus.Running;
|
|
127
|
137
|
} catch (e) {
|
|