aboutsummaryrefslogtreecommitdiffhomepage
path: root/fuzz/fuzz.cpp
diff options
context:
space:
mode:
authorGravatar kjlubick <kjlubick@google.com>2016-06-23 10:49:27 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-06-23 10:49:27 -0700
commit3e3c1a5857a43a2851aa5bb05d6639935793bac0 (patch)
treef67519f366452235c9a914b754bb9b3b9b5040c3 /fuzz/fuzz.cpp
parentc04ff4788cb425db6d9bec0bde4edb14aec97f16 (diff)
Add deserialize color space entry point for fuzzing
Diffstat (limited to 'fuzz/fuzz.cpp')
-rw-r--r--fuzz/fuzz.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/fuzz/fuzz.cpp b/fuzz/fuzz.cpp
index 853b5e0411..b8375d344a 100644
--- a/fuzz/fuzz.cpp
+++ b/fuzz/fuzz.cpp
@@ -36,6 +36,7 @@ static int fuzz_api(SkData*);
static int fuzz_img(SkData*, uint8_t, uint8_t);
static int fuzz_skp(SkData*);
static int fuzz_icc(SkData*);
+static int fuzz_color_deserialize(SkData*);
int main(int argc, char** argv) {
SkCommandLineFlags::Parse(argc, argv);
@@ -53,6 +54,8 @@ int main(int argc, char** argv) {
switch (FLAGS_type[0][0]) {
case 'a': return fuzz_api(bytes);
+ case 'c': return fuzz_color_deserialize(bytes);
+
case 'i':
if (FLAGS_type[0][1] == 'c') { //icc
return fuzz_icc(bytes);
@@ -386,6 +389,16 @@ int fuzz_icc(SkData* bytes) {
return 0;
}
+int fuzz_color_deserialize(SkData* bytes) {
+ sk_sp<SkColorSpace> space(SkColorSpace::Deserialize(bytes->data(), bytes->size()));
+ if (!space) {
+ SkDebugf("[terminated] Couldn't deserialize Colorspace.\n");
+ return 1;
+ }
+ SkDebugf("[terminated] Success! deserialized Colorspace.\n");
+ return 0;
+}
+
Fuzz::Fuzz(SkData* bytes) : fBytes(SkSafeRef(bytes)), fNextByte(0) {}
void Fuzz::signalBug () { SkDebugf("Signal bug\n"); raise(SIGSEGV); }