diff options
author | Eugene Rodionov <rodionov@google.com> | 2020-11-10 22:41:16 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-11-10 22:41:16 +0000 |
commit | 0033cfbf92f4dae9c8d2571133f6b81bf73442b6 (patch) | |
tree | 5e68befd6294de3b6d19fc35d396b551ea39b29a /fuzzer/dng_parser_fuzzer.cpp | |
parent | b7a5507956330ebfa41b76e54aed68a7f4a31295 (diff) | |
parent | a139e98c85270d811104aa3659f4ce0a6c395f54 (diff) | |
download | dng_sdk-0033cfbf92f4dae9c8d2571133f6b81bf73442b6.tar.gz |
Add a fuzz target to test DNG image parsing in dng_sdk. am: 0c2c0ca07a am: 49be9325f2 am: f4e068b00e am: a139e98c85
Original change: https://android-review.googlesource.com/c/platform/external/dng_sdk/+/1487679
Change-Id: I46c50dbe7f3126cc5c524b65bfd30689bc1c8e1f
Diffstat (limited to 'fuzzer/dng_parser_fuzzer.cpp')
-rw-r--r-- | fuzzer/dng_parser_fuzzer.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/fuzzer/dng_parser_fuzzer.cpp b/fuzzer/dng_parser_fuzzer.cpp new file mode 100644 index 0000000..84db0f3 --- /dev/null +++ b/fuzzer/dng_parser_fuzzer.cpp @@ -0,0 +1,36 @@ +#include <stddef.h> +#include <stdint.h> + +#include "dng_exceptions.h" +#include "dng_host.h" +#include "dng_info.h" +#include "dng_memory_stream.h" +#include "dng_negative.h" + + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + dng_host host; + dng_memory_stream stream(host.Allocator()); + + stream.Put(data, size); + stream.SetReadPosition(0); + + std::unique_ptr<dng_negative> negative(host.Make_dng_negative()); + + try { + dng_info info; + info.Parse(host, stream); + info.PostParse(host); + + if (info.IsValidDNG()) { + negative->Parse(host, stream, info); + negative->PostParse(host, stream, info); + negative->ReadStage1Image(host, stream, info); + } + } catch (dng_exception &e) { + // dng_sdk throws C++ exceptions on errors + // catch them here to prevent libFuzzer from crashing. + } + + return 0; +} |