summary refs log tree commit diff
path: root/gnu/packages/patches/icecat-CVE-2015-7199.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/icecat-CVE-2015-7199.patch')
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-7199.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/gnu/packages/patches/icecat-CVE-2015-7199.patch b/gnu/packages/patches/icecat-CVE-2015-7199.patch
new file mode 100644
index 0000000000..d6b830b8a0
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-7199.patch
@@ -0,0 +1,84 @@
+From 04741232fa561a4c299f31a5b5fb4603da79d2c5 Mon Sep 17 00:00:00 2001
+From: Robert Longson <longsonr@gmail.com>
+Date: Tue, 6 Oct 2015 13:19:03 +0100
+Subject: [PATCH] Bug 1204061 - check return values from some methods
+ r=dholbert, a=sylvestre
+
+--HG--
+extra : source : f4c2f277aeae7bf8b05c6b01d1e140cd51b693b4
+---
+ dom/svg/SVGPathSegListSMILType.cpp | 23 +++++++++++------------
+ 1 file changed, 11 insertions(+), 12 deletions(-)
+
+diff --git a/dom/svg/SVGPathSegListSMILType.cpp b/dom/svg/SVGPathSegListSMILType.cpp
+index f8b67d0..6df0f53 100644
+--- a/dom/svg/SVGPathSegListSMILType.cpp
++++ b/dom/svg/SVGPathSegListSMILType.cpp
+@@ -232,7 +232,7 @@ AddWeightedPathSegs(double aCoeff1,
+  *                         identity, in which case we'll grow it to the right
+  *                         size. Also allowed to be the same list as aList1.
+  */
+-static void
++static nsresult
+ AddWeightedPathSegLists(double aCoeff1, const SVGPathDataAndInfo& aList1,
+                         double aCoeff2, const SVGPathDataAndInfo& aList2,
+                         SVGPathDataAndInfo& aResult)
+@@ -263,8 +263,9 @@ AddWeightedPathSegLists(double aCoeff1, const SVGPathDataAndInfo& aList1,
+   // because in that case, we will have already set iter1 to nullptr above, to
+   // record that our first operand is an identity value.)
+   if (aResult.IsIdentity()) {
+-    DebugOnly<bool> success = aResult.SetLength(aList2.Length());
+-    MOZ_ASSERT(success, "infallible nsTArray::SetLength should succeed");
++    if (!aResult.SetLength(aList2.Length())) {
++      return NS_ERROR_OUT_OF_MEMORY;
++    }
+     aResult.SetElement(aList2.Element()); // propagate target element info!
+   }
+ 
+@@ -280,6 +281,7 @@ AddWeightedPathSegLists(double aCoeff1, const SVGPathDataAndInfo& aList1,
+              iter2 == end2 &&
+              resultIter == aResult.end(),
+              "Very, very bad - path data corrupt");
++  return NS_OK;
+ }
+ 
+ static void
+@@ -429,9 +431,7 @@ SVGPathSegListSMILType::Add(nsSMILValue& aDest,
+     }
+   }
+ 
+-  AddWeightedPathSegLists(1.0, dest, aCount, valueToAdd, dest);
+-
+-  return NS_OK;
++  return AddWeightedPathSegLists(1.0, dest, aCount, valueToAdd, dest);
+ }
+ 
+ nsresult
+@@ -482,8 +482,9 @@ SVGPathSegListSMILType::Interpolate(const nsSMILValue& aStartVal,
+   if (check == eRequiresConversion) {
+     // Can't convert |start| in-place, since it's const. Instead, we copy it
+     // into |result|, converting the types as we go, and use that as our start.
+-    DebugOnly<bool> success = result.SetLength(end.Length());
+-    MOZ_ASSERT(success, "infallible nsTArray::SetLength should succeed");
++    if (!result.SetLength(end.Length())) {
++      return NS_ERROR_OUT_OF_MEMORY;
++    }
+     result.SetElement(end.Element()); // propagate target element info!
+ 
+     ConvertAllPathSegmentData(start.begin(), start.end(),
+@@ -492,10 +493,8 @@ SVGPathSegListSMILType::Interpolate(const nsSMILValue& aStartVal,
+     startListToUse = &result;
+   }
+ 
+-  AddWeightedPathSegLists(1.0 - aUnitDistance, *startListToUse,
+-                          aUnitDistance, end, result);
+-
+-  return NS_OK;
++  return AddWeightedPathSegLists(1.0 - aUnitDistance, *startListToUse,
++                                 aUnitDistance, end, result);
+ }
+ 
+ } // namespace mozilla
+-- 
+2.5.0
+