summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/icecat-CVE-2015-2738.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/icecat-CVE-2015-2738.patch')
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-2738.patch151
1 files changed, 151 insertions, 0 deletions
diff --git a/gnu/packages/patches/icecat-CVE-2015-2738.patch b/gnu/packages/patches/icecat-CVE-2015-2738.patch
new file mode 100644
index 0000000000..beb784c615
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-2738.patch
@@ -0,0 +1,151 @@
+From cda807c21650d0678761d6af8fd324ce622962d6 Mon Sep 17 00:00:00 2001
+From: Andrew Comminos <acomminos@mozilla.com>
+Date: Fri, 19 Jun 2015 11:32:17 -0400
+Subject: [PATCH] Bug 1167356 - Handle return value of DataSourceSurface::Map
+ wherever possible. r=Bas, a=abillings CLOSED TREE
+
+---
+ gfx/2d/SourceSurfaceD2D1.cpp | 11 +++++++++--
+ gfx/gl/GLScreenBuffer.cpp | 5 ++++-
+ gfx/gl/SharedSurfaceGL.cpp | 5 ++++-
+ gfx/layers/YCbCrImageDataSerializer.cpp | 4 +++-
+ gfx/layers/opengl/CompositorOGL.cpp | 6 +++++-
+ gfx/thebes/gfxPlatform.cpp | 6 ++++--
+ widget/gtk/nsImageToPixbuf.cpp | 4 +++-
+ 7 files changed, 32 insertions(+), 9 deletions(-)
+
+diff --git a/gfx/2d/SourceSurfaceD2D1.cpp b/gfx/2d/SourceSurfaceD2D1.cpp
+index fc64327..01f3a67 100644
+--- a/gfx/2d/SourceSurfaceD2D1.cpp
++++ b/gfx/2d/SourceSurfaceD2D1.cpp
+@@ -5,6 +5,7 @@
+
+ #include "SourceSurfaceD2D1.h"
+ #include "DrawTargetD2D1.h"
++#include "Logging.h"
+ #include "Tools.h"
+
+ namespace mozilla {
+@@ -156,7 +157,10 @@ DataSourceSurfaceD2D1::Map(MapType aMapType, MappedSurface *aMappedSurface)
+ }
+
+ D2D1_MAPPED_RECT map;
+- mBitmap->Map(D2D1_MAP_OPTIONS_READ, &map);
++ if (FAILED(mBitmap->Map(D2D1_MAP_OPTIONS_READ, &map))) {
++ gfxCriticalError() << "Failed to map bitmap.";
++ return false;
++ }
+ aMappedSurface->mData = map.bits;
+ aMappedSurface->mStride = map.pitch;
+
+@@ -189,7 +193,10 @@ DataSourceSurfaceD2D1::EnsureMapped()
+ if (mMapped) {
+ return;
+ }
+- mBitmap->Map(D2D1_MAP_OPTIONS_READ, &mMap);
++ if (FAILED(mBitmap->Map(D2D1_MAP_OPTIONS_READ, &mMap))) {
++ gfxCriticalError() << "Failed to map bitmap.";
++ return;
++ }
+ mMapped = true;
+ }
+
+diff --git a/gfx/gl/GLScreenBuffer.cpp b/gfx/gl/GLScreenBuffer.cpp
+index 432bdbc..d31e848 100755
+--- a/gfx/gl/GLScreenBuffer.cpp
++++ b/gfx/gl/GLScreenBuffer.cpp
+@@ -483,7 +483,10 @@ GLScreenBuffer::Readback(SharedSurface_GL* src, DataSourceSurface* dest)
+ {
+ MOZ_ASSERT(src && dest);
+ DataSourceSurface::MappedSurface ms;
+- dest->Map(DataSourceSurface::MapType::READ, &ms);
++ if (!dest->Map(DataSourceSurface::MapType::READ, &ms)) {
++ NS_ERROR("Failed to map surface for reading.");
++ return;
++ }
+ nsRefPtr<gfxImageSurface> wrappedDest =
+ new gfxImageSurface(ms.mData,
+ ThebesIntSize(dest->GetSize()),
+diff --git a/gfx/gl/SharedSurfaceGL.cpp b/gfx/gl/SharedSurfaceGL.cpp
+index 1aab56f..1f80c28 100644
+--- a/gfx/gl/SharedSurfaceGL.cpp
++++ b/gfx/gl/SharedSurfaceGL.cpp
+@@ -326,7 +326,10 @@ SharedSurface_Basic::Fence()
+ ScopedBindFramebuffer autoFB(mGL, mFB);
+
+ DataSourceSurface::MappedSurface map;
+- mData->Map(DataSourceSurface::MapType::WRITE, &map);
++ if (!mData->Map(DataSourceSurface::MapType::WRITE, &map)) {
++ NS_ERROR("Failed to map surface for writing.");
++ return;
++ }
+ nsRefPtr<gfxImageSurface> wrappedData =
+ new gfxImageSurface(map.mData,
+ ThebesIntSize(mData->GetSize()),
+diff --git a/gfx/layers/YCbCrImageDataSerializer.cpp b/gfx/layers/YCbCrImageDataSerializer.cpp
+index e16db18..6e7a908 100644
+--- a/gfx/layers/YCbCrImageDataSerializer.cpp
++++ b/gfx/layers/YCbCrImageDataSerializer.cpp
+@@ -278,7 +278,9 @@ YCbCrImageDataDeserializer::ToDataSourceSurface()
+ Factory::CreateDataSourceSurface(GetYSize(), gfx::SurfaceFormat::B8G8R8X8);
+
+ DataSourceSurface::MappedSurface map;
+- result->Map(DataSourceSurface::MapType::WRITE, &map);
++ if (NS_WARN_IF(!result->Map(DataSourceSurface::MapType::WRITE, &map))) {
++ return nullptr;
++ }
+
+ gfx::ConvertYCbCrToRGB32(GetYData(), GetCbData(), GetCrData(),
+ map.mData,
+diff --git a/gfx/layers/opengl/CompositorOGL.cpp b/gfx/layers/opengl/CompositorOGL.cpp
+index 92432c3..2e0b51e 100644
+--- a/gfx/layers/opengl/CompositorOGL.cpp
++++ b/gfx/layers/opengl/CompositorOGL.cpp
+@@ -1346,7 +1346,11 @@ CompositorOGL::CopyToTarget(DrawTarget *aTarget, const gfx::Matrix& aTransform)
+ Factory::CreateDataSourceSurface(rect.Size(), gfx::SurfaceFormat::B8G8R8A8);
+
+ DataSourceSurface::MappedSurface map;
+- source->Map(DataSourceSurface::MapType::WRITE, &map);
++ if (!source->Map(DataSourceSurface::MapType::WRITE, &map)) {
++ NS_ERROR("Failed to map surface for writing!");
++ return;
++ }
++
+ // XXX we should do this properly one day without using the gfxImageSurface
+ nsRefPtr<gfxImageSurface> surf =
+ new gfxImageSurface(map.mData,
+diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
+index c869e53..8a2122c 100644
+--- a/gfx/thebes/gfxPlatform.cpp
++++ b/gfx/thebes/gfxPlatform.cpp
+@@ -662,8 +662,10 @@ CopySurface(gfxASurface* aSurface)
+ }
+
+ DataSourceSurface::MappedSurface map;
+- DebugOnly<bool> result = data->Map(DataSourceSurface::WRITE, &map);
+- MOZ_ASSERT(result, "Should always succeed mapping raw data surfaces!");
++ if (!data->Map(DataSourceSurface::WRITE, &map)) {
++ NS_ERROR("Failed to map surface for reading!");
++ return nullptr;
++ }
+
+ nsRefPtr<gfxImageSurface> image = new gfxImageSurface(map.mData, size, map.mStride, format);
+ nsRefPtr<gfxContext> ctx = new gfxContext(image);
+diff --git a/widget/gtk/nsImageToPixbuf.cpp b/widget/gtk/nsImageToPixbuf.cpp
+index ca05b3b..a83a570 100644
+--- a/widget/gtk/nsImageToPixbuf.cpp
++++ b/widget/gtk/nsImageToPixbuf.cpp
+@@ -75,7 +75,9 @@ nsImageToPixbuf::SourceSurfaceToPixbuf(SourceSurface* aSurface,
+
+ RefPtr<DataSourceSurface> dataSurface = aSurface->GetDataSurface();
+ DataSourceSurface::MappedSurface map;
+- dataSurface->Map(DataSourceSurface::MapType::READ, &map);
++ if (!dataSurface->Map(DataSourceSurface::MapType::READ, &map))
++ return nullptr;
++
+ uint8_t* srcData = map.mData;
+ int32_t srcStride = map.mStride;
+
+--
+2.4.3
+