| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2015 Google Inc. | 2  * Copyright 2015 Google Inc. | 
| 3  * | 3  * | 
| 4  * Use of this source code is governed by a BSD-style license that can be | 4  * Use of this source code is governed by a BSD-style license that can be | 
| 5  * found in the LICENSE file. | 5  * found in the LICENSE file. | 
| 6  */ | 6  */ | 
| 7 | 7 | 
|  | 8 #include "CodecPriv.h" | 
| 8 #include "SkBitmap.h" | 9 #include "SkBitmap.h" | 
| 9 #include "SkForceLinking.h" |  | 
| 10 #include "SkImageDecoder.h" |  | 
| 11 #include "Test.h" | 10 #include "Test.h" | 
| 12 | 11 | 
| 13 // A valid 1x1 indexed PNG. | 12 // A valid 1x1 indexed PNG. | 
| 14 unsigned char gPngData[] = { | 13 unsigned char gPngData[] = { | 
| 15   0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, | 14   0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, | 
| 16   0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, | 15   0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, | 
| 17   0x08, 0x03, 0x00, 0x00, 0x00, 0x28, 0xcb, 0x34, 0xbb, 0x00, 0x00, 0x00, | 16   0x08, 0x03, 0x00, 0x00, 0x00, 0x28, 0xcb, 0x34, 0xbb, 0x00, 0x00, 0x00, | 
| 18   0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, | 17   0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, | 
| 19   0x1c, 0x00, 0x0f, 0x01, 0xb9, 0x8f, 0x00, 0x00, 0x00, 0x06, 0x50, 0x4c, | 18   0x1c, 0x00, 0x0f, 0x01, 0xb9, 0x8f, 0x00, 0x00, 0x00, 0x06, 0x50, 0x4c, | 
| 20   0x54, 0x45, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xd2, 0x87, 0xef, 0x71, | 19   0x54, 0x45, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xd2, 0x87, 0xef, 0x71, | 
| 21   0x00, 0x00, 0x00, 0x13, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0xfd, | 20   0x00, 0x00, 0x00, 0x13, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0xfd, | 
| 22   0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xf8, 0xaf, 0x16, 0x46, 0x00, | 21   0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xf8, 0xaf, 0x16, 0x46, 0x00, | 
| 23   0x02, 0x00, 0x01, 0x32, 0x60, 0xf7, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x49, | 22   0x02, 0x00, 0x01, 0x32, 0x60, 0xf7, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x49, | 
| 24   0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 | 23   0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 | 
| 25 }; | 24 }; | 
| 26 | 25 | 
| 27 // Attempt to decode an invalid PNG that has a palette. Mostly we're looking to | 26 // Attempt to decode an invalid PNG that has a palette. Mostly we're looking to | 
| 28 // make sure we don't leak memory since libpng uses setjmp for error handling so | 27 // make sure we don't leak memory since libpng uses setjmp for error handling so | 
| 29 // it's very easy to accidentally skip destructors when a failure happens. | 28 // it's very easy to accidentally skip destructors when a failure happens. | 
| 30 // As a result, we do not have any REPORTER_ASSERT statements | 29 // As a result, we do not have any REPORTER_ASSERT statements | 
| 31 DEF_TEST(InvalidIndexedPng, reporter) { | 30 DEF_TEST(InvalidIndexedPng, reporter) { | 
| 32     SkBitmap image; | 31     SkBitmap image; | 
| 33     SkForceLinking(false); |  | 
| 34     // Make our PNG invalid by changing a byte. | 32     // Make our PNG invalid by changing a byte. | 
| 35     gPngData[sizeof(gPngData) - 1] = 1; | 33     gPngData[sizeof(gPngData) - 1] = 1; | 
| 36 | 34 | 
| 37     SkImageDecoder::DecodeMemory(gPngData, sizeof(gPngData), &image); | 35     decode_memory(gPngData, sizeof(gPngData), &image); | 
| 38 } | 36 } | 
| OLD | NEW | 
|---|