From fa4d93a08d5cd4f349c480b194a3e795273b27ed Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 25 May 2018 21:47:19 +0000 Subject: Move fuzzers to testing/fuzzers. Move them out of testing/libfuzzer, to make it possible to pull libfuzzer into that directory. Leave testing/libfuzzer/BUILD.gn there for now as a transitional build file. BUG=pdfium:1088 Change-Id: I4126d89dd3e075ac63477a4860e029c135866dbe Reviewed-on: https://pdfium-review.googlesource.com/32896 Commit-Queue: Lei Zhang Reviewed-by: dsinclair --- testing/fuzzers/pdf_codec_fax_fuzzer.cc | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 testing/fuzzers/pdf_codec_fax_fuzzer.cc (limited to 'testing/fuzzers/pdf_codec_fax_fuzzer.cc') diff --git a/testing/fuzzers/pdf_codec_fax_fuzzer.cc b/testing/fuzzers/pdf_codec_fax_fuzzer.cc new file mode 100644 index 0000000000..f6cc1e7200 --- /dev/null +++ b/testing/fuzzers/pdf_codec_fax_fuzzer.cc @@ -0,0 +1,43 @@ +// Copyright 2016 The PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include +#include + +#include "core/fxcodec/codec/ccodec_faxmodule.h" +#include "core/fxcodec/codec/ccodec_scanlinedecoder.h" + +static int GetInteger(const uint8_t* data) { + return data[0] | data[1] << 8 | data[2] << 16 | data[3] << 24; +} + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + const int kParameterSize = 21; + if (size < kParameterSize) + return 0; + + int width = GetInteger(data); + int height = GetInteger(data + 4); + int K = GetInteger(data + 8); + int Columns = GetInteger(data + 12); + int Rows = GetInteger(data + 16); + bool EndOfLine = !(data[20] & 0x01); + bool ByteAlign = !(data[20] & 0x02); + bool BlackIs1 = !(data[20] & 0x04); + data += kParameterSize; + size -= kParameterSize; + + CCodec_FaxModule fax_module; + std::unique_ptr decoder( + fax_module.CreateDecoder(data, size, width, height, K, EndOfLine, + ByteAlign, BlackIs1, Columns, Rows)); + + if (decoder) { + int line = 0; + while (decoder->GetScanline(line)) + line++; + } + + return 0; +} -- cgit v1.2.3