aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches/icecat-CVE-2015-4513-pt10.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/icecat-CVE-2015-4513-pt10.patch')
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-4513-pt10.patch110
1 files changed, 110 insertions, 0 deletions
diff --git a/gnu/packages/patches/icecat-CVE-2015-4513-pt10.patch b/gnu/packages/patches/icecat-CVE-2015-4513-pt10.patch
new file mode 100644
index 0000000000..43dd17786f
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-4513-pt10.patch
@@ -0,0 +1,110 @@
+From 7b6c571182661cfffa0987c1a88a2cb5a3230bcd Mon Sep 17 00:00:00 2001
+From: Georg Fritzsche <georg.fritzsche@googlemail.com>
+Date: Tue, 18 Aug 2015 19:21:40 +0200
+Subject: [PATCH] Bug 1193038 - Purposely leak StatisticsReport object and
+ suppress the leak report. r=glandium,mccr8,njn, a=lizzard
+
+--HG--
+extra : source : 346b9ee524d1a704ea953ef16237f3d0c7ee56d1
+extra : intermediate-source : 48b17faad125691454ebba9bdef0a5def9128f11
+---
+ build/valgrind/cross-architecture.sup | 9 +++++++++
+ toolkit/xre/nsAppRunner.cpp | 22 +++++++++++++++-------
+ 2 files changed, 24 insertions(+), 7 deletions(-)
+
+diff --git a/build/valgrind/cross-architecture.sup b/build/valgrind/cross-architecture.sup
+index 9215d3b..1e9d7ab 100644
+--- a/build/valgrind/cross-architecture.sup
++++ b/build/valgrind/cross-architecture.sup
+@@ -34,6 +34,15 @@
+ fun:_ZN13CrashReporter14SetupExtraDataEP7nsIFileRK19nsACString_internal
+ ...
+ }
++{
++ We purposely leak the StatisticsReporter object
++ Memcheck:Leak
++ fun:malloc
++ fun:moz_xmalloc
++ fun:operator new
++ fun:_Z21XRE_CreateStatsObjectv
++ ...
++}
+
+ ####################################
+ # Leaks in third party libraries #
+diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
+index 5334a05..037aeac 100644
+--- a/toolkit/xre/nsAppRunner.cpp
++++ b/toolkit/xre/nsAppRunner.cpp
+@@ -20,6 +20,7 @@
+ #include "mozilla/Poison.h"
+ #include "mozilla/Preferences.h"
+ #include "mozilla/Telemetry.h"
++#include "mozilla/MemoryChecking.h"
+
+ #include "nsAppRunner.h"
+ #include "mozilla/AppData.h"
+@@ -3004,7 +3005,6 @@ public:
+
+ ~XREMain() {
+ mScopedXPCOM = nullptr;
+- mStatisticsRecorder = nullptr;
+ mAppData = nullptr;
+ }
+
+@@ -3023,7 +3023,6 @@ public:
+ #endif
+
+ UniquePtr<ScopedXPCOMStartup> mScopedXPCOM;
+- UniquePtr<base::StatisticsRecorder> mStatisticsRecorder;
+ nsAutoPtr<mozilla::ScopedAppData> mAppData;
+
+ nsXREDirProvider mDirProvider;
+@@ -4268,10 +4267,6 @@ XREMain::XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
+
+ NS_ENSURE_TRUE(aAppData, 2);
+
+- // A initializer to initialize histogram collection, a chromium
+- // thing used by Telemetry.
+- mStatisticsRecorder = MakeUnique<base::StatisticsRecorder>();
+-
+ mAppData = new ScopedAppData(aAppData);
+ if (!mAppData)
+ return 1;
+@@ -4345,7 +4340,6 @@ XREMain::XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
+ }
+
+ mScopedXPCOM = nullptr;
+- mStatisticsRecorder = nullptr;
+
+ // unlock the profile after ScopedXPCOMStartup object (xpcom)
+ // has gone out of scope. see bug #386739 for more details
+@@ -4531,11 +4525,25 @@ XRE_StopLateWriteChecks(void) {
+ mozilla::StopLateWriteChecks();
+ }
+
++// Separate stub function to let us specifically suppress it in Valgrind
++void
++XRE_CreateStatsObject()
++{
++ // A initializer to initialize histogram collection, a chromium
++ // thing used by Telemetry (and effectively a global; it's all static).
++ // Note: purposely leaked
++ base::StatisticsRecorder* statistics_recorder = new base::StatisticsRecorder();
++ MOZ_LSAN_INTENTIONALLY_LEAK_OBJECT(statistics_recorder);
++ unused << statistics_recorder;
++}
++
+ int
+ XRE_main(int argc, char* argv[], const nsXREAppData* aAppData, uint32_t aFlags)
+ {
+ #if !defined(MOZ_METRO) || !defined(XP_WIN)
+ XREMain main;
++
++ XRE_CreateStatsObject();
+ int result = main.XRE_main(argc, argv, aAppData);
+ mozilla::RecordShutdownEndTimeStamp();
+ return result;
+--
+2.5.0
+