12345678910111213141516171819202122232425 |
- // Copyright 2015 The Chromium 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 <stddef.h>
- #include <stdint.h>
- #include "third_party/snappy/src/snappy-sinksource.h"
- #include "third_party/snappy/src/snappy.h"
- // Entry point for LibFuzzer.
- extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
- snappy::ByteArraySource src(reinterpret_cast<const char*>(data), size);
- uint32_t len;
- // Note: src is invalid after GetUncompressedLength call.
- if (!snappy::GetUncompressedLength(&src, &len) || (len > 1E6)) {
- // We have to bail out, to avoid self-crafted decompression bombs.
- return 0;
- }
- std::string uncompressed_str;
- snappy::Uncompress(reinterpret_cast<const char*>(data), size,
- &uncompressed_str);
- return 0;
- }
|