diff options
Diffstat (limited to 'gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch')
-rw-r--r-- | gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch new file mode 100644 index 0000000000..1ff68f4b4c --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch @@ -0,0 +1,35 @@ +From 5ff75fbe51d5760a96b4e614617c9cbf35f1fbaa Mon Sep 17 00:00:00 2001 +From: Markus Stange <mstange@themasta.com> +Date: Mon, 5 Jan 2015 18:40:27 +0100 +Subject: [PATCH] Bug 1117304 - Make sure the tile filter doesn't call CopyRect + on surfaces with different formats. r=Bas, a=sledru + +--- + gfx/2d/FilterNodeSoftware.cpp | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp +index 396d0da..10d92c6 100644 +--- a/gfx/2d/FilterNodeSoftware.cpp ++++ b/gfx/2d/FilterNodeSoftware.cpp +@@ -1568,7 +1568,16 @@ FilterNodeTileSoftware::Render(const IntRect& aRect) + return nullptr; + } + } +- MOZ_ASSERT(input->GetFormat() == target->GetFormat(), "different surface formats from the same input?"); ++ ++ if (input->GetFormat() != target->GetFormat()) { ++ // Different rectangles of the input can have different formats. If ++ // that happens, just convert everything to B8G8R8A8. ++ target = FilterProcessing::ConvertToB8G8R8A8(target); ++ input = FilterProcessing::ConvertToB8G8R8A8(input); ++ if (MOZ2D_WARN_IF(!target) || MOZ2D_WARN_IF(!input)) { ++ return nullptr; ++ } ++ } + + CopyRect(input, target, srcRect - srcRect.TopLeft(), destRect.TopLeft() - aRect.TopLeft()); + } +-- +2.2.1 + |