Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

executor: Introduce Executor "Trait Objects" by using Type Erasure #41

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion algorithms/aflfast/aflfast_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ namespace fuzzuf::algorithm::aflfast {
// FIXME: check if we are initializing all the members that need to be initialized
AFLFastState::AFLFastState(
std::shared_ptr<const AFLFastSetting> setting,
std::shared_ptr<NativeLinuxExecutor> executor
std::shared_ptr<executor::AFLExecutorInterface> executor
) : AFLStateTemplate<AFLFastTestcase>(setting, executor),
setting(setting) {}

Expand Down
2 changes: 1 addition & 1 deletion algorithms/ijon/ijon_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ namespace fuzzuf::algorithm::ijon {

IJONState::IJONState(
std::shared_ptr<const afl::AFLSetting> setting,
std::shared_ptr<NativeLinuxExecutor> executor
std::shared_ptr<executor::AFLExecutorInterface> executor
) :
afl::AFLStateTemplate<IJONTestcase>(setting, executor) {}

Expand Down
3 changes: 2 additions & 1 deletion algorithms/nautilus/fuzzer/state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <iomanip>
#include <sstream>
#include "fuzzuf/algorithms/nautilus/fuzzer/state.hpp"
#include "fuzzuf/exceptions.hpp"
#include "fuzzuf/feedback/inplace_memory_feedback.hpp"
#include "fuzzuf/feedback/persistent_memory_feedback.hpp"
#include "fuzzuf/feedback/put_exit_reason_type.hpp"
Expand All @@ -35,7 +36,7 @@ namespace fuzzuf::algorithm::nautilus::fuzzer {
// MEMO: "this->" is used for members of Fuzzer in original Nautilus
NautilusState::NautilusState(
std::shared_ptr<const NautilusSetting> setting,
std::shared_ptr<NativeLinuxExecutor> executor
std::shared_ptr<executor::AFLExecutorInterface> executor
) : setting (setting),
executor (executor),
cks (setting->path_to_workdir.string()),
Expand Down
3 changes: 2 additions & 1 deletion cli/fuzzers/afl/register_afl_fuzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include "fuzzuf/algorithms/afl/afl_fuzzer.hpp"
#include "fuzzuf/cli/fuzzer_builder_register.hpp"
#include "fuzzuf/cli/fuzzer/afl/build_afl_fuzzer_from_args.hpp"
#include "fuzzuf/executor/afl_executor_interface.hpp"
#include <boost/program_options.hpp>

namespace fuzzuf::algorithm::afl {
Expand All @@ -26,6 +27,6 @@ namespace fuzzuf::algorithm::afl {
// object file.
// Conversely, if AFL cannot be built in a certain environment, do not compile it into an object file to prevent AFL
// from being registered by accident.
static FuzzerBuilderRegister global_afl_register("afl", BuildAFLFuzzerFromArgs<Fuzzer, AFLFuzzer>);
static FuzzerBuilderRegister global_afl_register("afl", BuildAFLFuzzerFromArgs<Fuzzer, AFLFuzzer, executor::AFLExecutorInterface>);

} // namespace fuzzuf::algorithm::afl
3 changes: 2 additions & 1 deletion cli/fuzzers/aflfast/register_aflfast_fuzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,14 @@
#include "fuzzuf/algorithms/aflfast/aflfast_fuzzer.hpp"
#include "fuzzuf/cli/fuzzer_builder_register.hpp"
#include "fuzzuf/cli/fuzzer/aflfast/build_aflfast_fuzzer_from_args.hpp"
#include "fuzzuf/executor/afl_executor_interface.hpp"

namespace fuzzuf::algorithm::aflfast {

// builder_map.insert is called before main function if the below is declared as a global variable and linked as an
// object file.
// Conversely, if AFL cannot be built in a certain environment, do not compile it into an object file to prevent AFL
// from being registered by accident.
static FuzzerBuilderRegister global_afl_register("aflfast", BuildAFLFastFuzzerFromArgs<Fuzzer, AFLFastFuzzer>);
static FuzzerBuilderRegister global_afl_register("aflfast", BuildAFLFastFuzzerFromArgs<Fuzzer, AFLFastFuzzer, executor::AFLExecutorInterface>);

} // namespace fuzzuf::algorithm::aflfast
3 changes: 2 additions & 1 deletion cli/fuzzers/die/register_die_fuzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@
#include "fuzzuf/algorithms/die/die_fuzzer.hpp"
#include "fuzzuf/cli/fuzzer_builder_register.hpp"
#include "fuzzuf/cli/fuzzer/die/build_die_fuzzer_from_args.hpp"
#include "fuzzuf/executor/afl_executor_interface.hpp"

namespace fuzzuf::algorithm::die {

static FuzzerBuilderRegister global_die_register("die", BuildDIEFuzzerFromArgs<Fuzzer, DIEFuzzer>);
static FuzzerBuilderRegister global_die_register("die", BuildDIEFuzzerFromArgs<Fuzzer, DIEFuzzer, executor::AFLExecutorInterface>);

} // namespace fuzzuf::algorithm::die
3 changes: 2 additions & 1 deletion cli/fuzzers/ijon/register_ijon_fuzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@
#include "fuzzuf/algorithms/ijon/ijon_fuzzer.hpp"
#include "fuzzuf/cli/fuzzer_builder_register.hpp"
#include "fuzzuf/cli/fuzzer/ijon/build_ijon_fuzzer_from_args.hpp"
#include "fuzzuf/executor/afl_executor_interface.hpp"

namespace fuzzuf::cli::fuzzer::ijon {

// builder_map.insert is called before main function if the below is declared as a global variable and linked as an
// object file.
// Conversely, if IJON cannot be built in a certain environment, do not compile it into an object file to prevent IJON
// from being registered by accident.
static FuzzerBuilderRegister global_ijon_register("ijon", BuildIJONFuzzerFromArgs<Fuzzer, algorithm::ijon::IJONFuzzer>);
static FuzzerBuilderRegister global_ijon_register("ijon", BuildIJONFuzzerFromArgs<Fuzzer, algorithm::ijon::IJONFuzzer, executor::AFLExecutorInterface>);

} // namespace fuzzuf::cli::fuzzer::ijon
3 changes: 2 additions & 1 deletion cli/fuzzers/libfuzzer/register_libfuzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@
#include "fuzzuf/algorithms/libfuzzer/cli_compat/fuzzer.hpp"
#include "fuzzuf/cli/fuzzer_builder_register.hpp"
#include "fuzzuf/cli/fuzzer/libfuzzer/build_libfuzzer_from_args.hpp"
#include "fuzzuf/executor/libfuzzer_executor_interface.hpp"

namespace fuzzuf::algorithm::libfuzzer {
static FuzzerBuilderRegister global_libfuzzer_register("libfuzzer", BuildLibFuzzerFromArgs<Fuzzer, fuzzuf::algorithm::libfuzzer::LibFuzzer>);
static FuzzerBuilderRegister global_libfuzzer_register("libfuzzer", BuildLibFuzzerFromArgs<Fuzzer, fuzzuf::algorithm::libfuzzer::LibFuzzer, executor::LibFuzzerExecutorInterface>);
}

7 changes: 6 additions & 1 deletion cli/fuzzers/nautilus/register_nautilus_fuzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,13 @@
#include "fuzzuf/algorithms/nautilus/fuzzer/fuzzer.hpp"
#include "fuzzuf/cli/fuzzer_builder_register.hpp"
#include "fuzzuf/cli/fuzzer/nautilus/build_nautilus_fuzzer_from_args.hpp"
#include "fuzzuf/executor/afl_executor_interface.hpp"

namespace fuzzuf::cli::fuzzer::nautilus {

static FuzzerBuilderRegister global_nautilus_register(
"nautilus",
BuildNautilusFuzzerFromArgs<Fuzzer, NautilusFuzzer>
BuildNautilusFuzzerFromArgs<Fuzzer, NautilusFuzzer, executor::AFLExecutorInterface>
);

} // namespace fuzzuf::cli::fuzzer::nautilus
3 changes: 2 additions & 1 deletion cli/fuzzers/nezha/register_nezha_fuzzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@
#include "fuzzuf/algorithms/nezha/cli_compat/fuzzer.hpp"
#include "fuzzuf/cli/fuzzer_builder_register.hpp"
#include "fuzzuf/cli/fuzzer/nezha/build_nezha_fuzzer_from_args.hpp"
#include "fuzzuf/executor/libfuzzer_executor_interface.hpp"
#include <iostream>

namespace fuzzuf::algorithm::nezha {
static FuzzerBuilderRegister global_nezha_register("nezha", BuildNezhaFuzzerFromArgs<Fuzzer, fuzzuf::algorithm::nezha::NezhaFuzzer>);
static FuzzerBuilderRegister global_nezha_register("nezha", BuildNezhaFuzzerFromArgs<Fuzzer, fuzzuf::algorithm::nezha::NezhaFuzzer, executor::LibFuzzerExecutorInterface>);
}

6 changes: 3 additions & 3 deletions include/fuzzuf/algorithms/afl/afl_state.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#include "fuzzuf/utils/common.hpp"
#include "fuzzuf/utils/filesystem.hpp"
#include "fuzzuf/exec_input/exec_input_set.hpp"
#include "fuzzuf/executor/native_linux_executor.hpp"
#include "fuzzuf/executor/afl_executor_interface.hpp"
#include "fuzzuf/feedback/inplace_memory_feedback.hpp"
#include "fuzzuf/feedback/exit_status_feedback.hpp"
#include "fuzzuf/algorithms/afl/afl_option.hpp"
Expand Down Expand Up @@ -54,7 +54,7 @@ struct AFLStateTemplate {
using Tag = typename Testcase::Tag;

// FIXME: how to support other executors?
explicit AFLStateTemplate(std::shared_ptr<const AFLSetting> setting, std::shared_ptr<NativeLinuxExecutor> executor);
explicit AFLStateTemplate(std::shared_ptr<const AFLSetting> setting, std::shared_ptr<executor::AFLExecutorInterface> executor);
virtual ~AFLStateTemplate();

AFLStateTemplate( const AFLStateTemplate& ) = delete;
Expand Down Expand Up @@ -129,7 +129,7 @@ struct AFLStateTemplate {
void SetShouldConstructAutoDict(bool v);

std::shared_ptr<const AFLSetting> setting;
std::shared_ptr<NativeLinuxExecutor> executor;
std::shared_ptr<executor::AFLExecutorInterface> executor;
ExecInputSet input_set;

// TODO: what if this product works on environments other than *NIX?
Expand Down
4 changes: 2 additions & 2 deletions include/fuzzuf/algorithms/afl/templates/afl_state.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#include "fuzzuf/utils/filesystem.hpp"
#include "fuzzuf/exec_input/exec_input.hpp"
#include "fuzzuf/exec_input/exec_input_set.hpp"
#include "fuzzuf/executor/native_linux_executor.hpp"
#include "fuzzuf/executor/afl_executor_interface.hpp"
#include "fuzzuf/feedback/inplace_memory_feedback.hpp"
#include "fuzzuf/feedback/exit_status_feedback.hpp"
#include "fuzzuf/algorithms/afl/afl_option.hpp"
Expand All @@ -43,7 +43,7 @@ namespace fuzzuf::algorithm::afl {
template<class Testcase>
AFLStateTemplate<Testcase>::AFLStateTemplate(
std::shared_ptr<const AFLSetting> setting,
std::shared_ptr<NativeLinuxExecutor> executor
std::shared_ptr<executor::AFLExecutorInterface> executor
)
: setting( setting ),
executor( executor ),
Expand Down
2 changes: 1 addition & 1 deletion include/fuzzuf/algorithms/aflfast/aflfast_state.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ namespace fuzzuf::algorithm::aflfast {
struct AFLFastState : public afl::AFLStateTemplate<AFLFastTestcase> {
explicit AFLFastState(
std::shared_ptr<const AFLFastSetting> setting,
std::shared_ptr<NativeLinuxExecutor> executor
std::shared_ptr<executor::AFLExecutorInterface> executor
);

std::shared_ptr<AFLFastTestcase> AddToQueue(
Expand Down
2 changes: 1 addition & 1 deletion include/fuzzuf/algorithms/die/die_state.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ namespace fuzzuf::algorithm::die {
struct DIEState : public afl::AFLStateTemplate<DIETestcase> {
explicit DIEState(
std::shared_ptr<const DIESetting> setting,
std::shared_ptr<NativeLinuxExecutor> executor
std::shared_ptr<executor::AFLExecutorInterface> executor
) : AFLStateTemplate<DIETestcase>(setting, executor),
setting(setting) {};

Expand Down
4 changes: 2 additions & 2 deletions include/fuzzuf/algorithms/ijon/ijon_state.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

#include "fuzzuf/utils/filesystem.hpp"
#include "fuzzuf/exec_input/exec_input_set.hpp"
#include "fuzzuf/executor/native_linux_executor.hpp"
#include "fuzzuf/executor/afl_executor_interface.hpp"
#include "fuzzuf/algorithms/afl/afl_state.hpp"
#include "fuzzuf/algorithms/ijon/ijon_option.hpp"
#include "fuzzuf/algorithms/ijon/ijon_testcase.hpp"
Expand All @@ -38,7 +38,7 @@ namespace fuzzuf::algorithm::ijon {
* The lifetime for an instance of this class must be longer than that of HierarFlow.
*/
struct IJONState : public afl::AFLStateTemplate<IJONTestcase> {
explicit IJONState(std::shared_ptr<const afl::AFLSetting> setting, std::shared_ptr<NativeLinuxExecutor> executor);
explicit IJONState(std::shared_ptr<const afl::AFLSetting> setting, std::shared_ptr<executor::AFLExecutorInterface> executor);
~IJONState();

IJONState( const IJONState& ) = delete;
Expand Down
2 changes: 1 addition & 1 deletion include/fuzzuf/algorithms/libfuzzer/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#ifndef FUZZUF_INCLUDE_ALGORITHM_LIBFUZZER_CONFIG_HPP
#define FUZZUF_INCLUDE_ALGORITHM_LIBFUZZER_CONFIG_HPP

#include "fuzzuf/executor/native_linux_executor.hpp"
#include "fuzzuf/executor/libfuzzer_executor_interface.hpp"
#include "fuzzuf/utils/filesystem.hpp"
#include "fuzzuf/utils/setter.hpp"
#include <vector>
Expand Down
6 changes: 4 additions & 2 deletions include/fuzzuf/algorithms/libfuzzer/create.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,19 +119,21 @@ auto createExecuteAndFeedback(const fs::path &target_path,
bool persistent, bool strict_match,
const Sink &sink) {
namespace hf = fuzzuf::hierarflow;
using fuzzuf::executor::LibFuzzerExecutorInterface;

const auto output_file_path = create_info.output_dir / "result";
const auto path_to_write_seed = create_info.output_dir / "cur_input";

auto create_coverage = hf::CreateNode<Clear<F, decltype(Ord::coverage)>>();

std::unique_ptr<NativeLinuxExecutor> executor_(new NativeLinuxExecutor(
std::shared_ptr<NativeLinuxExecutor> nle_(new NativeLinuxExecutor(
{target_path.string(), output_file_path.string()},
create_info.exec_timelimit_ms, create_info.exec_memlimit,
create_info.forksrv, path_to_write_seed, create_info.afl_shm_size,
create_info.bb_shm_size));
auto executor_ = std::make_unique<LibFuzzerExecutorInterface>(std::move(nle_));
auto execute_ =
hf::CreateNode<standard_order::Execute<F, NativeLinuxExecutor, Ord>>(
hf::CreateNode<standard_order::Execute<F, LibFuzzerExecutorInterface, Ord>>(
std::move(executor_), create_info.use_afl_coverage);

auto collect_features =
Expand Down
6 changes: 3 additions & 3 deletions include/fuzzuf/algorithms/nautilus/fuzzer/state.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
#include "fuzzuf/algorithms/nautilus/grammartec/context.hpp"
#include "fuzzuf/algorithms/nautilus/grammartec/mutator.hpp"
#include "fuzzuf/algorithms/nautilus/grammartec/tree.hpp"
#include "fuzzuf/executor/native_linux_executor.hpp"
#include "fuzzuf/executor/afl_executor_interface.hpp"


namespace fuzzuf::algorithm::nautilus::fuzzer {
Expand All @@ -51,7 +51,7 @@ enum ExecutionReason {
struct NautilusState {
explicit NautilusState(
std::shared_ptr<const NautilusSetting> setting,
std::shared_ptr<NativeLinuxExecutor> executor
std::shared_ptr<executor::AFLExecutorInterface> executor
);

bool RunOnWithDedup(const TreeLike& tree,
Expand Down Expand Up @@ -81,7 +81,7 @@ struct NautilusState {
size_t end_index);

std::shared_ptr<const NautilusSetting> setting;
std::shared_ptr<NativeLinuxExecutor> executor;
std::shared_ptr<executor::AFLExecutorInterface> executor;

/* Local state */
Context ctx;
Expand Down
6 changes: 4 additions & 2 deletions include/fuzzuf/algorithms/nezha/create.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,19 +63,21 @@ auto CreateRunSingleTarget(const fs::path &target_path,
const Sink &sink) {
namespace lf = fuzzuf::algorithm::libfuzzer;
namespace hf = fuzzuf::hierarflow;
using fuzzuf::executor::LibFuzzerExecutorInterface;
auto create_local_coverage =
hf::CreateNode<lf::Clear<F, decltype(Ord::coverage)>>();

const auto output_file_path = create_info.output_dir / "result";
const auto path_to_write_seed = create_info.output_dir / "cur_input";

std::unique_ptr<NativeLinuxExecutor> executor(new NativeLinuxExecutor(
std::shared_ptr<NativeLinuxExecutor> nle(new NativeLinuxExecutor(
{target_path.string(), output_file_path.string()},
create_info.exec_timelimit_ms, create_info.exec_memlimit,
create_info.forksrv, path_to_write_seed, create_info.afl_shm_size,
create_info.bb_shm_size, true));
auto executor = std::make_unique<LibFuzzerExecutorInterface>(std::move(nle));
auto execute =
hf::CreateNode<lf::standard_order::Execute<F, NativeLinuxExecutor, Ord>>(
hf::CreateNode<lf::standard_order::Execute<F, LibFuzzerExecutorInterface, Ord>>(
std::move(executor), create_info.use_afl_coverage);
auto collect_features =
hf::CreateNode<standard_order::CollectFeatures<F, Ord>>(
Expand Down
9 changes: 5 additions & 4 deletions include/fuzzuf/cli/fuzzer/afl/build_afl_fuzzer_from_args.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ static void usage(po::options_description &desc) {
}

// Used only for CLI
template <class TFuzzer, class TAFLFuzzer>
template <class TFuzzer, class TAFLFuzzer, class TExecutor>
std::unique_ptr<TFuzzer> BuildAFLFuzzerFromArgs(
FuzzerArgs &fuzzer_args,
GlobalFuzzerOptions &global_options
Expand Down Expand Up @@ -157,9 +157,7 @@ std::unique_ptr<TFuzzer> BuildAFLFuzzerFromArgs(
using fuzzuf::algorithm::afl::option::GetMapSize;

// Create NativeLinuxExecutor
// TODO: support more types of executors

auto executor = std::make_shared<NativeLinuxExecutor>(
auto nle = std::make_shared<NativeLinuxExecutor>(
setting->argv,
setting->exec_timelimit_ms,
setting->exec_memlimit,
Expand All @@ -169,6 +167,9 @@ std::unique_ptr<TFuzzer> BuildAFLFuzzerFromArgs(
0 // bb_shm_size
);

// TODO: support more types of executors
auto executor = std::make_shared<TExecutor>(std::move(nle));

// Create AFLState
using fuzzuf::algorithm::afl::AFLState;
auto state = std::make_unique<AFLState>(setting, executor);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ static void usage(po::options_description &desc) {


// Used only for CLI
template <class TFuzzer, class TAFLFuzzer>
template <class TFuzzer, class TAFLFuzzer, class TExecutor>
std::unique_ptr<TFuzzer> BuildAFLFastFuzzerFromArgs(
FuzzerArgs &fuzzer_args,
GlobalFuzzerOptions &global_options
Expand Down Expand Up @@ -156,9 +156,7 @@ std::unique_ptr<TFuzzer> BuildAFLFastFuzzerFromArgs(
using fuzzuf::algorithm::afl::option::GetMapSize;

// Create NativeLinuxExecutor
// TODO: support more types of executors

auto executor = std::make_shared<NativeLinuxExecutor>(
auto nle = std::make_shared<NativeLinuxExecutor>(
setting->argv,
setting->exec_timelimit_ms,
setting->exec_memlimit,
Expand All @@ -168,6 +166,9 @@ std::unique_ptr<TFuzzer> BuildAFLFastFuzzerFromArgs(
0 // bb_shm_size
);

// TODO: support more types of executors
auto executor = std::make_shared<TExecutor>(std::move(nle));

// Create AFLFastState
using fuzzuf::algorithm::aflfast::AFLFastState;
auto state = std::make_unique<AFLFastState>(setting, executor);
Expand Down
6 changes: 4 additions & 2 deletions include/fuzzuf/cli/fuzzer/die/build_die_fuzzer_from_args.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ struct DIEOptions {
* @param (fuzzer_args) Arguments passed to DIE
* @param (global_options) Global options
*/
template <class TFuzzer, class TDIEFuzzer>
template <class TFuzzer, class TDIEFuzzer, class TExecutor>
std::unique_ptr<TFuzzer> BuildDIEFuzzerFromArgs(FuzzerArgs &fuzzer_args,
GlobalFuzzerOptions &global_options) {
po::positional_options_description pargs_desc;
Expand Down Expand Up @@ -184,7 +184,7 @@ std::unique_ptr<TFuzzer> BuildDIEFuzzerFromArgs(FuzzerArgs &fuzzer_args,
using fuzzuf::algorithm::afl::option::GetMapSize;

/* Create NativeLinuxExecutor */
auto executor = std::make_shared<NativeLinuxExecutor>(
auto nle = std::make_shared<NativeLinuxExecutor>(
setting->argv,
setting->exec_timelimit_ms,
setting->exec_memlimit,
Expand All @@ -194,6 +194,8 @@ std::unique_ptr<TFuzzer> BuildDIEFuzzerFromArgs(FuzzerArgs &fuzzer_args,
0 // bb_shm_size
);

auto executor = std::make_shared<TExecutor>(std::move(nle));

using fuzzuf::algorithm::die::DIEState;

/* Create state for DIE */
Expand Down
Loading