blob: 84409dd83f065f905a57d5cbfc3da414918062f4 [file] [log] [blame]
Amin Hassani79ad96e2018-04-11 15:28:58 -07001// Copyright 2018 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <iostream>
6#include <memory>
7#include <vector>
8
9#include "bsdiff/bspatch.h"
10#include "bsdiff/memory_file.h"
11#include "bsdiff/sink_file.h"
12
13namespace {
14
15void FuzzBspatch(const uint8_t* data, size_t size) {
16 const size_t kBufferSize = 1024;
17 std::vector<uint8_t> source_buffer(kBufferSize);
18 std::unique_ptr<bsdiff::FileInterface> source(
19 new bsdiff::MemoryFile(source_buffer.data(), source_buffer.size()));
20 std::unique_ptr<bsdiff::FileInterface> target(new bsdiff::SinkFile(
21 [](const uint8_t* data, size_t size) { return size; }));
22 bsdiff::bspatch(source, target, data, size);
23}
24
25struct Environment {
26 Environment() {
27 // To turn off logging for bsdiff library.
28 std::cerr.setstate(std::ios_base::failbit);
29 }
30};
31
32} // namespace
33
34extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
35 static Environment env;
36 FuzzBspatch(data, size);
37 return 0;
38}