blob: e0e82c3109e658ef88abf62f0b69367da7596768 [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_SYS_FUZZING_LIBFUZZER_TESTING_FUZZER_H_
#define SRC_SYS_FUZZING_LIBFUZZER_TESTING_FUZZER_H_
#include <stddef.h>
#include <stdint.h>
#include "src/sys/fuzzing/common/async-eventpair.h"
#include "src/sys/fuzzing/common/component-context.h"
#include "src/sys/fuzzing/common/shared-memory.h"
namespace fuzzing {
class TestFuzzer {
public:
TestFuzzer();
~TestFuzzer() = default;
// Implementation of |LLVMFuzzerTestOneInput|.
int TestOneInput(const uint8_t* data, size_t size);
private:
// Triggers various error conditions.
void Crash();
void OOM();
void Timeout();
std::unique_ptr<ComponentContext> context_;
std::unique_ptr<AsyncEventPair> eventpair_;
SharedMemory test_input_buffer_;
SharedMemory feedback_buffer_;
};
} // namespace fuzzing
#endif // SRC_SYS_FUZZING_LIBFUZZER_TESTING_FUZZER_H_