6 #include <mruby/compile.h>
8 #include "libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h"
10 #include "proto_to_ruby.h"
12 using namespace ruby_fuzzer;
15 int FuzzRB(const uint8_t *Data, size_t size) {
17 mrb_state *mrb = mrb_open();
21 char *code = (char *)malloc(size+1);
24 memcpy(code, Data, size);
27 if (const char *dump_path = getenv("PROTO_FUZZER_DUMP_PATH")) {
28 // With libFuzzer binary run this to generate an RB file x.rb:
29 // PROTO_FUZZER_DUMP_PATH=x.rb ./a.out proto-input
30 std::ofstream of(dump_path);
33 v = mrb_load_string(mrb, code);
40 DEFINE_PROTO_FUZZER(const Function &function) {
41 protoConverter converter;
42 auto s = converter.FunctionToString(function);
43 (void)FuzzRB((const uint8_t*)s.data(), s.size());