From b61e206138607423e83ba34d823c6036f394f655 Mon Sep 17 00:00:00 2001 From: scroggo Date: Mon, 10 Nov 2014 13:12:25 -0800 Subject: Add tests (and fix!) for known bad ICO files. We previously saw crashes decoding bad ICO files. Add tests for known bad files. While testing, I learned that one of them still crashes. Check for large offset and size separately to fix the crash. BUG=skia:2878 Review URL: https://codereview.chromium.org/712123002 --- tests/BadIcoTest.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/BadIcoTest.cpp (limited to 'tests/BadIcoTest.cpp') diff --git a/tests/BadIcoTest.cpp b/tests/BadIcoTest.cpp new file mode 100644 index 0000000000..566f3d68a2 --- /dev/null +++ b/tests/BadIcoTest.cpp @@ -0,0 +1,33 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "Resources.h" +#include "Test.h" +#include "SkBitmap.h" +#include "SkImageDecoder.h" +#include "SkOSFile.h" + +DEF_TEST(BadIco, reporter) { + const char* const badIcos [] = { + "sigabort_favicon.ico", + "sigsegv_favicon.ico", + "sigsegv_favicon_2.ico", + }; + + const char* badIcoFolder = "invalid_images"; + + SkString resourcePath = GetResourcePath(badIcoFolder); + + SkBitmap bm; + for (size_t i = 0; i < SK_ARRAY_COUNT(badIcos); ++i) { + SkString fullPath = SkOSPath::Join(resourcePath.c_str(), badIcos[i]); + bool success = SkImageDecoder::DecodeFile(fullPath.c_str(), &bm); + // These files are invalid, and should not decode. More importantly, + // though, we reached here without crashing. + REPORTER_ASSERT(reporter, !success); + } +} -- cgit v1.2.3