summary refs log tree commit diff
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
+