aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/CodecTest.cpp
diff options
context:
space:
mode:
authorGravatar Leon Scroggins III <scroggo@google.com>2017-02-24 15:33:24 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-24 21:25:44 +0000
commit0354c62e0bb89607a29ce2150e77e3308a795cc4 (patch)
treed2a93f2b6e6a6db51422ae1b69d5661bc4a0573a /tests/CodecTest.cpp
parentc5eabe7d22834189c77fe95ebaf72fed0ef2bb8e (diff)
Set a limit on the size for BMP images
This limit matches the limit used by Chromium. I am not aware of any real world BMPs that are larger than this (or even close to it), but there are some invalid BMPs that are larger than this, leading to crashes when we try to read a row. BUG:34778578 BUG=skia:3617 Change-Id: I0f662e8d0d7bc0b084e86d0c9288b831e1b296d7 Reviewed-on: https://skia-review.googlesource.com/8966 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'tests/CodecTest.cpp')
-rw-r--r--tests/CodecTest.cpp25
1 files changed, 13 insertions, 12 deletions
diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp
index 64232712d7..265b51e886 100644
--- a/tests/CodecTest.cpp
+++ b/tests/CodecTest.cpp
@@ -17,6 +17,7 @@
#include "SkFrontBufferedStream.h"
#include "SkImageEncoder.h"
#include "SkMD5.h"
+#include "SkOSPath.h"
#include "SkPngChunkReader.h"
#include "SkRandom.h"
#include "SkStream.h"
@@ -1466,19 +1467,19 @@ DEF_TEST(Codec_InvalidImages, r) {
}
DEF_TEST(Codec_InvalidBmp, r) {
- // This file reports a header size that crashes when we try to read this
- // much directly from a file using SkFILEStream.
- SkString path = GetResourcePath("invalid_images/b33651913.bmp");
- std::unique_ptr<SkFILEStream> stream(new SkFILEStream(path.c_str()));
- if (!stream->isValid()) {
- ERRORF(r, "no stream");
- return;
- }
+ // These files report values that have caused problems with SkFILEStreams.
+ // They are invalid, and should not create SkCodecs.
+ for (auto* bmp : { "b33651913.bmp", "b34778578.bmp" } ) {
+ SkString path = SkOSPath::Join("invalid_images", bmp);
+ path = GetResourcePath(path.c_str());
+ std::unique_ptr<SkFILEStream> stream(new SkFILEStream(path.c_str()));
+ if (!stream->isValid()) {
+ return;
+ }
- std::unique_ptr<SkCodec> codec(SkCodec::NewFromStream(stream.release()));
- // This file is invalid, but more importantly, we did not crash before
- // reaching here.
- REPORTER_ASSERT(r, !codec);
+ std::unique_ptr<SkCodec> codec(SkCodec::NewFromStream(stream.release()));
+ REPORTER_ASSERT(r, !codec);
+ }
}
DEF_TEST(Codec_InvalidRLEBmp, r) {