c94fb4dc8f
MFSA 2023-01 (bsc#1207119) * CVE-2023-23597 (bmo#1538028) Logic bug in process allocation allowed to read arbitrary files * CVE-2023-23598 (bmo#1800425) Arbitrary file read from GTK drag and drop on Linux * CVE-2023-23599 (bmo#1777800) Malicious command could be hidden in devtools output on Windows * CVE-2023-23600 (bmo#1787034) Notification permissions persisted between Normal and Private Browsing on Android * CVE-2023-23601 (bmo#1794268) URL being dragged from cross-origin iframe into same tab triggers navigation * CVE-2023-23602 (bmo#1800890) Content Security Policy wasn't being correctly applied to WebSockets in WebWorkers * CVE-2023-23603 (bmo#1800832) Calls to <code>console.log</code> allowed bypasing Content Security Policy via format directive * CVE-2023-23604 (bmo#1802346) Creation of duplicate <code>SystemPrincipal</code> from less secure contexts * CVE-2023-23605 (bmo#1764921, bmo#1802690, bmo#1806974) Memory safety bugs fixed in Firefox 109 and Firefox ESR 102.7 * CVE-2023-23606 (bmo#1764974, bmo#1798591, bmo#1799201, bmo#1800446, bmo#1801248, bmo#1802100, bmo#1803393, bmo#1804626, bmo#1804971, bmo#1807004) OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=1033
289 lines
9.4 KiB
Diff
289 lines
9.4 KiB
Diff
# HG changeset patch
|
|
# User msirringhaus@suse.de
|
|
# Date 1559300151 -7200
|
|
# Fri May 31 12:55:51 2019 +0200
|
|
# Node ID 54d41b0033b8d649d842a1f862c6fed8b9874dec
|
|
# Parent 95d798f72d832c953086aa27675498fdf84177f0
|
|
How to apply this patch:
|
|
1. Import and apply it
|
|
2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul
|
|
3. Find editBookmarkPanelDoneButton
|
|
4. Replace #ifndef with #ifdef in the line above (this hanges the button order from Gnome-style to KDE-style)
|
|
5. hg qrefresh
|
|
|
|
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
|
--- a/browser/components/preferences/main.js
|
|
+++ b/browser/components/preferences/main.js
|
|
@@ -296,16 +296,23 @@ var gMainPane = {
|
|
}, backoffTimes[this._backoffIndex + 1 < backoffTimes.length ? this._backoffIndex++ : backoffTimes.length - 1]);
|
|
};
|
|
|
|
window.setTimeout(() => {
|
|
window.requestIdleCallback(pollForDefaultBrowser);
|
|
}, backoffTimes[this._backoffIndex]);
|
|
}
|
|
|
|
+ var env = Components.classes["@mozilla.org/process/environment;1"]
|
|
+ .getService(Components.interfaces.nsIEnvironment);
|
|
+ var kde_session = 0;
|
|
+ if (env.get('KDE_FULL_SESSION') == "true") {
|
|
+ kde_session = 1;
|
|
+ }
|
|
+
|
|
this.initBrowserContainers();
|
|
this.buildContentProcessCountMenuList();
|
|
|
|
let performanceSettingsLink = document.getElementById(
|
|
"performanceSettingsLearnMore"
|
|
);
|
|
let performanceSettingsUrl =
|
|
Services.urlFormatter.formatURLPref("app.support.baseURL") +
|
|
@@ -1333,16 +1340,27 @@ var gMainPane = {
|
|
this._backoffIndex = 0;
|
|
|
|
let shellSvc = getShellService();
|
|
if (!shellSvc) {
|
|
return;
|
|
}
|
|
try {
|
|
shellSvc.setDefaultBrowser(true, false);
|
|
+ if (kde_session == 1) {
|
|
+ var shellObj = Components.classes["@mozilla.org/file/local;1"]
|
|
+ .createInstance(Components.interfaces.nsILocalFile);
|
|
+ shellObj.initWithPath("/usr/bin/kwriteconfig");
|
|
+ var process = Components.classes["@mozilla.org/process/util;1"]
|
|
+ .createInstance(Components.interfaces.nsIProcess);
|
|
+ process.init(shellObj);
|
|
+ var args = ["--file", "kdeglobals", "--group", "General", "--key",
|
|
+ "BrowserApplication", "firefox"];
|
|
+ process.run(false, args, args.length);
|
|
+ }
|
|
} catch (ex) {
|
|
console.error(ex);
|
|
return;
|
|
}
|
|
|
|
let isDefault = shellSvc.isDefaultBrowser(false, true);
|
|
let setDefaultPane = document.getElementById("setDefaultPane");
|
|
setDefaultPane.classList.toggle("is-default", isDefault);
|
|
diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build
|
|
--- a/browser/components/shell/moz.build
|
|
+++ b/browser/components/shell/moz.build
|
|
@@ -31,16 +31,18 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "coco
|
|
]
|
|
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
XPIDL_SOURCES += [
|
|
"nsIGNOMEShellService.idl",
|
|
]
|
|
|
|
SOURCES += [
|
|
"nsGNOMEShellService.cpp",
|
|
+ "nsKDEShellService.cpp",
|
|
+ "nsUnixShellService.cpp",
|
|
]
|
|
if CONFIG["MOZ_ENABLE_DBUS"]:
|
|
SOURCES += [
|
|
"nsGNOMEShellDBusHelper.cpp",
|
|
"nsGNOMEShellSearchProvider.cpp",
|
|
]
|
|
include("/ipc/chromium/chromium-config.mozbuild")
|
|
|
|
diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/browser/components/shell/nsKDEShellService.cpp
|
|
@@ -0,0 +1,109 @@
|
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
+
|
|
+#include "mozilla/ArrayUtils.h"
|
|
+
|
|
+#include "nsCOMPtr.h"
|
|
+#include "nsKDEShellService.h"
|
|
+#include "nsShellService.h"
|
|
+#include "nsKDEUtils.h"
|
|
+#include "nsIPrefService.h"
|
|
+#include "nsIProcess.h"
|
|
+#include "nsIFile.h"
|
|
+#include "nsServiceManagerUtils.h"
|
|
+#include "nsComponentManagerUtils.h"
|
|
+#include "nsIMutableArray.h"
|
|
+#include "nsISupportsPrimitives.h"
|
|
+#include "nsArrayUtils.h"
|
|
+
|
|
+using namespace mozilla;
|
|
+
|
|
+nsresult
|
|
+nsKDEShellService::Init()
|
|
+{
|
|
+ if( !nsKDEUtils::kdeSupport())
|
|
+ return NS_ERROR_NOT_AVAILABLE;
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+NS_IMPL_ISUPPORTS(nsKDEShellService, nsIGNOMEShellService, nsIShellService)
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::IsDefaultBrowser(bool aForAllTypes,
|
|
+ bool* aIsDefaultBrowser)
|
|
+{
|
|
+ *aIsDefaultBrowser = false;
|
|
+
|
|
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
|
+ if (!command)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ if (!str)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ str->SetData("ISDEFAULTBROWSER"_ns);
|
|
+ command->AppendElement( str );
|
|
+
|
|
+ if( nsKDEUtils::command( command ))
|
|
+ *aIsDefaultBrowser = true;
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::SetDefaultBrowser(bool aClaimAllTypes,
|
|
+ bool aForAllUsers)
|
|
+{
|
|
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
|
+ if (!command)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ nsCOMPtr<nsISupportsCString> paramstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ if (!cmdstr || !paramstr)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ cmdstr->SetData("SETDEFAULTBROWSER"_ns);
|
|
+ command->AppendElement( cmdstr );
|
|
+
|
|
+ paramstr->SetData( aClaimAllTypes ? "ALLTYPES"_ns : "NORMAL"_ns );
|
|
+ command->AppendElement( paramstr );
|
|
+
|
|
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
|
|
+}
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::GetCanSetDesktopBackground(bool* aResult)
|
|
+{
|
|
+ *aResult = true;
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::SetDesktopBackground(dom::Element* aElement,
|
|
+ int32_t aPosition,
|
|
+ const nsACString& aImageName)
|
|
+{
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+}
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::GetDesktopBackgroundColor(PRUint32 *aColor)
|
|
+{
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+}
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::SetDesktopBackgroundColor(PRUint32 aColor)
|
|
+{
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+}
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::IsDefaultForScheme(nsTSubstring<char> const& aScheme, bool* aIsDefaultBrowser)
|
|
+{
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+}
|
|
+
|
|
diff --git a/browser/components/shell/nsKDEShellService.h b/browser/components/shell/nsKDEShellService.h
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/browser/components/shell/nsKDEShellService.h
|
|
@@ -0,0 +1,32 @@
|
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
+
|
|
+#ifndef nskdeshellservice_h____
|
|
+#define nskdeshellservice_h____
|
|
+
|
|
+#include "nsIGNOMEShellService.h"
|
|
+#include "nsToolkitShellService.h"
|
|
+#include "nsString.h"
|
|
+#include "mozilla/Attributes.h"
|
|
+
|
|
+class nsKDEShellService final : public nsIGNOMEShellService,
|
|
+ public nsToolkitShellService
|
|
+{
|
|
+public:
|
|
+ nsKDEShellService() : mCheckedThisSession(false) { }
|
|
+
|
|
+ NS_DECL_ISUPPORTS
|
|
+ NS_DECL_NSISHELLSERVICE
|
|
+ NS_DECL_NSIGNOMESHELLSERVICE
|
|
+
|
|
+ nsresult Init();
|
|
+
|
|
+private:
|
|
+ ~nsKDEShellService() {}
|
|
+
|
|
+ bool mCheckedThisSession;
|
|
+};
|
|
+
|
|
+#endif // nskdeshellservice_h____
|
|
diff --git a/browser/components/shell/nsUnixShellService.cpp b/browser/components/shell/nsUnixShellService.cpp
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/browser/components/shell/nsUnixShellService.cpp
|
|
@@ -0,0 +1,22 @@
|
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
+
|
|
+
|
|
+#include "nsUnixShellService.h"
|
|
+#include "nsGNOMEShellService.h"
|
|
+#include "nsKDEShellService.h"
|
|
+#include "nsKDEUtils.h"
|
|
+#include "mozilla/ModuleUtils.h"
|
|
+
|
|
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
|
|
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsKDEShellService, Init)
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsUnixShellServiceConstructor(REFNSIID aIID, void **aResult)
|
|
+{
|
|
+ if( nsKDEUtils::kdeSupport())
|
|
+ return nsKDEShellServiceConstructor( aIID, aResult );
|
|
+ return nsGNOMEShellServiceConstructor( aIID, aResult );
|
|
+}
|
|
diff --git a/browser/components/shell/nsUnixShellService.h b/browser/components/shell/nsUnixShellService.h
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/browser/components/shell/nsUnixShellService.h
|
|
@@ -0,0 +1,15 @@
|
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
+
|
|
+
|
|
+#ifndef nsunixshellservice_h____
|
|
+#define nsunixshellservice_h____
|
|
+
|
|
+#include "nsIGNOMEShellService.h"
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult);
|
|
+
|
|
+#endif // nsunixshellservice_h____
|