diff options
author | mtklein <mtklein@chromium.org> | 2016-01-13 12:57:57 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-13 12:57:58 -0800 |
commit | 65e5824d3a46c468530aba5de4c11b6c8de4cede (patch) | |
tree | 3364f0bdb819a17fc6ec068f22d0902c4d84f53e /fuzz/fuzz.cpp | |
parent | fa8963252e122c5288c8e92b5ecc25a8fea21c3b (diff) |
Add new fuzz binary.
This is designed to have short startup time, for maximum fuzzing throughput.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1589563002
Review URL: https://codereview.chromium.org/1589563002
Diffstat (limited to 'fuzz/fuzz.cpp')
-rw-r--r-- | fuzz/fuzz.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/fuzz/fuzz.cpp b/fuzz/fuzz.cpp new file mode 100644 index 0000000000..6e31790951 --- /dev/null +++ b/fuzz/fuzz.cpp @@ -0,0 +1,40 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "Fuzz.h" +#include "SkCommandLineFlags.h" + +DEFINE_string2(match, m, "", "The usual match patterns, applied to name."); +DEFINE_string2(bytes, b, "", "Path to file containing fuzzed bytes."); + +int main(int argc, char** argv) { + SkCommandLineFlags::Parse(argc, argv); + SkAutoTUnref<SkData> bytes; + if (!FLAGS_bytes.isEmpty()) { + bytes.reset(SkData::NewFromFileName(FLAGS_bytes[0])); + } + + for (auto r = SkTRegistry<Fuzzable>::Head(); r; r = r->next()) { + auto fuzzable = r->factory(); + if (!SkCommandLineFlags::ShouldSkip(FLAGS_match, fuzzable.name)) { + SkDebugf("Running %s...\n", fuzzable.name); + Fuzz fuzz(bytes); + fuzzable.fn(&fuzz); + } + } + return 0; +} + + +Fuzz::Fuzz(SkData* bytes) : fBytes(SkSafeRef(bytes)) {} + +// These methods are all TODO(kjlubick). +uint32_t Fuzz::nextU() { return 0; } +float Fuzz::nextF() { return 0.0f; } +uint32_t Fuzz::nextURange(uint32_t min, uint32_t max) { return min; } +float Fuzz::nextFRange(float min, float max) { return min; } + |