gnu: icecat: Apply fixes for CVE-2015-{0801,0807,0815,0816}.
Actually, CVE-2015-0801 and CVE-2015-0816 were already patched in
4c153a9125
, but the corresponding CVEs
were not yet announced.
* gnu/packages/patches/icecat-bug-1146339.patch: Rename to ...
* gnu/packages/patches/icecat-CVE-2015-0801.patch: ... this.
* gnu/packages/patches/icecat-bug-1144991.patch: Rename to ...
* gnu/packages/patches/icecat-CVE-2015-0816.patch: ... this.
* gnu/packages/patches/icecat-CVE-2015-0807.patch,
gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch,
gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch,
gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch: New files.
* gnu-system.am (dist_patch_DATA): Add them, and adapt to renamed files.
* gnu/packages/gnuzilla.scm (icecat): Add patches, and adapt to renamed files.
This commit is contained in:
parent
5fd5e83da6
commit
b7178dc45d
|
@ -438,9 +438,13 @@ dist_patch_DATA = \
|
||||||
gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
|
gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
|
||||||
gnu/packages/patches/hop-bigloo-4.0b.patch \
|
gnu/packages/patches/hop-bigloo-4.0b.patch \
|
||||||
gnu/packages/patches/icecat-bug-1127780.patch \
|
gnu/packages/patches/icecat-bug-1127780.patch \
|
||||||
gnu/packages/patches/icecat-bug-1144991.patch \
|
|
||||||
gnu/packages/patches/icecat-bug-1145870.patch \
|
gnu/packages/patches/icecat-bug-1145870.patch \
|
||||||
gnu/packages/patches/icecat-bug-1146339.patch \
|
gnu/packages/patches/icecat-CVE-2015-0801.patch \
|
||||||
|
gnu/packages/patches/icecat-CVE-2015-0807.patch \
|
||||||
|
gnu/packages/patches/icecat-CVE-2015-0815-pt1.patch \
|
||||||
|
gnu/packages/patches/icecat-CVE-2015-0815-pt2.patch \
|
||||||
|
gnu/packages/patches/icecat-CVE-2015-0815-pt3.patch \
|
||||||
|
gnu/packages/patches/icecat-CVE-2015-0816.patch \
|
||||||
gnu/packages/patches/icecat-CVE-2015-0817.patch \
|
gnu/packages/patches/icecat-CVE-2015-0817.patch \
|
||||||
gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch \
|
gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch \
|
||||||
gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch \
|
gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch \
|
||||||
|
|
|
@ -225,13 +225,17 @@ standards.")
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1rr4axghaypdkrf60i1qp6dz4cd29ya02fs3vyffvp4x9kgcq2dd"))
|
"1rr4axghaypdkrf60i1qp6dz4cd29ya02fs3vyffvp4x9kgcq2dd"))
|
||||||
(patches (map search-patch '("icecat-bug-1127780.patch"
|
(patches (map search-patch '("icecat-CVE-2015-0815-pt1.patch"
|
||||||
|
"icecat-CVE-2015-0815-pt2.patch"
|
||||||
|
"icecat-bug-1127780.patch"
|
||||||
|
"icecat-CVE-2015-0807.patch"
|
||||||
|
"icecat-CVE-2015-0815-pt3.patch"
|
||||||
"icecat-CVE-2015-0817.patch"
|
"icecat-CVE-2015-0817.patch"
|
||||||
"icecat-bug-1144991.patch"
|
"icecat-CVE-2015-0816.patch"
|
||||||
"icecat-CVE-2015-0818-pt1.patch"
|
"icecat-CVE-2015-0818-pt1.patch"
|
||||||
"icecat-bug-1145870.patch"
|
"icecat-bug-1145870.patch"
|
||||||
"icecat-CVE-2015-0818-pt2.patch"
|
"icecat-CVE-2015-0818-pt2.patch"
|
||||||
"icecat-bug-1146339.patch")))))
|
"icecat-CVE-2015-0801.patch")))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
`(("alsa-lib" ,alsa-lib)
|
`(("alsa-lib" ,alsa-lib)
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
From 1b97832a8ae9983e4f15befe142f5ea0626707f1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christoph Kerschbaumer <mozilla@christophkerschbaumer.com>
|
||||||
|
Date: Thu, 19 Feb 2015 13:43:40 -0800
|
||||||
|
Subject: [PATCH] Bug 1111834 - CORS request after preflight should not follow
|
||||||
|
30x redirect. r=sicking, a=lmandel
|
||||||
|
|
||||||
|
---
|
||||||
|
dom/base/Navigator.cpp | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp
|
||||||
|
index 020e370..727b7cb7 100644
|
||||||
|
--- a/dom/base/Navigator.cpp
|
||||||
|
+++ b/dom/base/Navigator.cpp
|
||||||
|
@@ -1278,6 +1278,12 @@ Navigator::SendBeacon(const nsAString& aUrl,
|
||||||
|
!contentType.Equals(APPLICATION_WWW_FORM_URLENCODED) &&
|
||||||
|
!contentType.Equals(MULTIPART_FORM_DATA) &&
|
||||||
|
!contentType.Equals(TEXT_PLAIN)) {
|
||||||
|
+
|
||||||
|
+ // we need to set the sameOriginChecker as a notificationCallback
|
||||||
|
+ // so we can tell the channel not to follow redirects
|
||||||
|
+ nsCOMPtr<nsIInterfaceRequestor> soc = nsContentUtils::GetSameOriginChecker();
|
||||||
|
+ channel->SetNotificationCallbacks(soc);
|
||||||
|
+
|
||||||
|
nsCOMPtr<nsIChannel> preflightChannel;
|
||||||
|
nsTArray<nsCString> unsafeHeaders;
|
||||||
|
unsafeHeaders.AppendElement(NS_LITERAL_CSTRING("Content-Type"));
|
||||||
|
--
|
||||||
|
2.2.1
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
From 6fb9d1d2bee806abb2f67cee05a8573450a017df Mon Sep 17 00:00:00 2001
|
||||||
|
From: Steve Fink <sfink@mozilla.com>
|
||||||
|
Date: Mon, 12 Jan 2015 14:19:27 -0800
|
||||||
|
Subject: [PATCH] Bug 1137326 - Fix out of bounds error in
|
||||||
|
JS_iterateCompartments. r=terrence, a=abillings
|
||||||
|
|
||||||
|
---
|
||||||
|
js/src/gc/Zone.h | 11 ++++++-----
|
||||||
|
js/src/jsapi.h | 5 +++--
|
||||||
|
2 files changed, 9 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/src/gc/Zone.h b/js/src/gc/Zone.h
|
||||||
|
index cbbde6b..612defe 100644
|
||||||
|
--- a/js/src/gc/Zone.h
|
||||||
|
+++ b/js/src/gc/Zone.h
|
||||||
|
@@ -389,21 +389,22 @@ struct CompartmentsInZoneIter
|
||||||
|
// This is for the benefit of CompartmentsIterT::comp.
|
||||||
|
friend class mozilla::Maybe<CompartmentsInZoneIter>;
|
||||||
|
private:
|
||||||
|
- JSCompartment **it, **end;
|
||||||
|
+ JS::Zone *zone;
|
||||||
|
+ JSCompartment **it;
|
||||||
|
|
||||||
|
CompartmentsInZoneIter()
|
||||||
|
- : it(nullptr), end(nullptr)
|
||||||
|
+ : zone(nullptr), it(nullptr)
|
||||||
|
{}
|
||||||
|
|
||||||
|
public:
|
||||||
|
- explicit CompartmentsInZoneIter(JS::Zone *zone) {
|
||||||
|
+ explicit CompartmentsInZoneIter(JS::Zone *zone) : zone(zone) {
|
||||||
|
it = zone->compartments.begin();
|
||||||
|
- end = zone->compartments.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool done() const {
|
||||||
|
JS_ASSERT(it);
|
||||||
|
- return it == end;
|
||||||
|
+ return it < zone->compartments.begin() ||
|
||||||
|
+ it >= zone->compartments.end();
|
||||||
|
}
|
||||||
|
void next() {
|
||||||
|
JS_ASSERT(!done());
|
||||||
|
diff --git a/js/src/jsapi.h b/js/src/jsapi.h
|
||||||
|
index 5ae1f86..40fdb37 100644
|
||||||
|
--- a/js/src/jsapi.h
|
||||||
|
+++ b/js/src/jsapi.h
|
||||||
|
@@ -1780,9 +1780,10 @@ JS_LeaveCompartment(JSContext *cx, JSCompartment *oldCompartment);
|
||||||
|
typedef void (*JSIterateCompartmentCallback)(JSRuntime *rt, void *data, JSCompartment *compartment);
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * This function calls |compartmentCallback| on every compartment. Beware that
|
||||||
|
+ * This function calls |compartmentCallback| on every compartment. Beware that
|
||||||
|
* there is no guarantee that the compartment will survive after the callback
|
||||||
|
- * returns.
|
||||||
|
+ * returns. Also, if the callback can GC, there is no guarantee that every
|
||||||
|
+ * compartment will be visited.
|
||||||
|
*/
|
||||||
|
extern JS_PUBLIC_API(void)
|
||||||
|
JS_IterateCompartments(JSRuntime *rt, void *data,
|
||||||
|
--
|
||||||
|
2.2.1
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
From f6d39ec03896eaf5d30d79d8165263c98e957749 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nathan Froyd <froydnj@mozilla.com>
|
||||||
|
Date: Fri, 6 Feb 2015 16:19:36 -0500
|
||||||
|
Subject: [PATCH] Bug 1036515 - Narrow the scope of unlocking mMonitor in
|
||||||
|
nsTimerImpl::PostTimerEvents. r=bsmedberg, a=abillings
|
||||||
|
|
||||||
|
---
|
||||||
|
xpcom/threads/TimerThread.cpp | 55 ++++++++++++++++++++++---------------------
|
||||||
|
1 file changed, 28 insertions(+), 27 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xpcom/threads/TimerThread.cpp b/xpcom/threads/TimerThread.cpp
|
||||||
|
index bd586c9..b95846f 100644
|
||||||
|
--- a/xpcom/threads/TimerThread.cpp
|
||||||
|
+++ b/xpcom/threads/TimerThread.cpp
|
||||||
|
@@ -239,43 +239,44 @@ NS_IMETHODIMP TimerThread::Run()
|
||||||
|
RemoveTimerInternal(timer);
|
||||||
|
timer = nullptr;
|
||||||
|
|
||||||
|
+#ifdef DEBUG_TIMERS
|
||||||
|
+ if (PR_LOG_TEST(GetTimerLog(), PR_LOG_DEBUG)) {
|
||||||
|
+ PR_LOG(GetTimerLog(), PR_LOG_DEBUG,
|
||||||
|
+ ("Timer thread woke up %fms from when it was supposed to\n",
|
||||||
|
+ fabs((now - timerRef->mTimeout).ToMilliseconds())));
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
{
|
||||||
|
// We release mMonitor around the Fire call to avoid deadlock.
|
||||||
|
MonitorAutoUnlock unlock(mMonitor);
|
||||||
|
|
||||||
|
-#ifdef DEBUG_TIMERS
|
||||||
|
- if (PR_LOG_TEST(GetTimerLog(), PR_LOG_DEBUG)) {
|
||||||
|
- PR_LOG(GetTimerLog(), PR_LOG_DEBUG,
|
||||||
|
- ("Timer thread woke up %fms from when it was supposed to\n",
|
||||||
|
- fabs((now - timerRef->mTimeout).ToMilliseconds())));
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
// We are going to let the call to PostTimerEvent here handle the
|
||||||
|
// release of the timer so that we don't end up releasing the timer
|
||||||
|
// on the TimerThread instead of on the thread it targets.
|
||||||
|
timerRef = nsTimerImpl::PostTimerEvent(timerRef.forget());
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (timerRef) {
|
||||||
|
- // We got our reference back due to an error.
|
||||||
|
- // Unhook the nsRefPtr, and release manually so we can get the
|
||||||
|
- // refcount.
|
||||||
|
- nsrefcnt rc = timerRef.forget().take()->Release();
|
||||||
|
- (void)rc;
|
||||||
|
-
|
||||||
|
- // The nsITimer interface requires that its users keep a reference
|
||||||
|
- // to the timers they use while those timers are initialized but
|
||||||
|
- // have not yet fired. If this ever happens, it is a bug in the
|
||||||
|
- // code that created and used the timer.
|
||||||
|
- //
|
||||||
|
- // Further, note that this should never happen even with a
|
||||||
|
- // misbehaving user, because nsTimerImpl::Release checks for a
|
||||||
|
- // refcount of 1 with an armed timer (a timer whose only reference
|
||||||
|
- // is from the timer thread) and when it hits this will remove the
|
||||||
|
- // timer from the timer thread and thus destroy the last reference,
|
||||||
|
- // preventing this situation from occurring.
|
||||||
|
- MOZ_ASSERT(rc != 0, "destroyed timer off its target thread!");
|
||||||
|
- }
|
||||||
|
+ if (timerRef) {
|
||||||
|
+ // We got our reference back due to an error.
|
||||||
|
+ // Unhook the nsRefPtr, and release manually so we can get the
|
||||||
|
+ // refcount.
|
||||||
|
+ nsrefcnt rc = timerRef.forget().take()->Release();
|
||||||
|
+ (void)rc;
|
||||||
|
+
|
||||||
|
+ // The nsITimer interface requires that its users keep a reference
|
||||||
|
+ // to the timers they use while those timers are initialized but
|
||||||
|
+ // have not yet fired. If this ever happens, it is a bug in the
|
||||||
|
+ // code that created and used the timer.
|
||||||
|
+ //
|
||||||
|
+ // Further, note that this should never happen even with a
|
||||||
|
+ // misbehaving user, because nsTimerImpl::Release checks for a
|
||||||
|
+ // refcount of 1 with an armed timer (a timer whose only reference
|
||||||
|
+ // is from the timer thread) and when it hits this will remove the
|
||||||
|
+ // timer from the timer thread and thus destroy the last reference,
|
||||||
|
+ // preventing this situation from occurring.
|
||||||
|
+ MOZ_ASSERT(rc != 0, "destroyed timer off its target thread!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mShutdown)
|
||||||
|
--
|
||||||
|
2.2.1
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
From e7fc74f6a281c12a4a406f2dd20ff2c27a61484d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Brian Hackett <bhackett1024@gmail.com>
|
||||||
|
Date: Sun, 8 Mar 2015 22:10:01 -0400
|
||||||
|
Subject: [PATCH] Bug 1138199. r=billm, a=lmandel
|
||||||
|
|
||||||
|
---
|
||||||
|
js/src/ds/LifoAlloc.h | 12 ++++++------
|
||||||
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/src/ds/LifoAlloc.h b/js/src/ds/LifoAlloc.h
|
||||||
|
index 7617cf5..b112353 100644
|
||||||
|
--- a/js/src/ds/LifoAlloc.h
|
||||||
|
+++ b/js/src/ds/LifoAlloc.h
|
||||||
|
@@ -193,14 +193,14 @@ class LifoAlloc
|
||||||
|
|
||||||
|
// Append used chunks to the end of this LifoAlloc. We act as if all the
|
||||||
|
// chunks in |this| are used, even if they're not, so memory may be wasted.
|
||||||
|
- void appendUsed(BumpChunk *start, BumpChunk *latest, BumpChunk *end) {
|
||||||
|
- JS_ASSERT(start && latest && end);
|
||||||
|
+ void appendUsed(BumpChunk *otherFirst, BumpChunk *otherLatest, BumpChunk *otherLast) {
|
||||||
|
+ JS_ASSERT(otherFirst && otherLatest && otherLast);
|
||||||
|
if (last)
|
||||||
|
- last->setNext(start);
|
||||||
|
+ last->setNext(otherFirst);
|
||||||
|
else
|
||||||
|
- first = latest = start;
|
||||||
|
- last = end;
|
||||||
|
- this->latest = latest;
|
||||||
|
+ first = otherFirst;
|
||||||
|
+ latest = otherLatest;
|
||||||
|
+ last = otherLast;
|
||||||
|
}
|
||||||
|
|
||||||
|
void incrementCurSize(size_t size) {
|
||||||
|
--
|
||||||
|
2.2.1
|
||||||
|
|
Loading…
Reference in New Issue