Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 279442d4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Add FuzzTestModuleRegistry to clean up fuzz tests" am: 9b06df6c

Change-Id: I0b9ec8f3e41d5b89099b060fc37ff8295fcd5720
parents 990e7317 9b06df6c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -85,6 +85,8 @@ void FuzzHciHal::injectScoData(std::vector<uint8_t> data) {
  callbacks_->scoDataReceived(data);
}

const ModuleFactory FuzzHciHal::Factory = ModuleFactory([]() { return new FuzzHciHal(); });

}  // namespace fuzz
}  // namespace hal
}  // namespace bluetooth
+2 −0
Original line number Diff line number Diff line
@@ -41,6 +41,8 @@ class FuzzHciHal : public HciHal {
    return "HciHalFuzz";
  }

  static const ModuleFactory Factory;

 protected:
  void ListDependencies(ModuleList* list) override {}
  void Start() override {}
+5 −11
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@

#include <fuzzer/FuzzedDataProvider.h>

using bluetooth::TestModuleRegistry;
using bluetooth::FuzzTestModuleRegistry;
using bluetooth::fuzz::GetArbitraryBytes;
using bluetooth::hci::AclManager;
using bluetooth::hci::HciLayer;
@@ -38,12 +38,9 @@ using bluetooth::os::fuzz::fake_timerfd_reset;
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
  FuzzedDataProvider dataProvider(data, size);

  static TestModuleRegistry moduleRegistry = TestModuleRegistry();
  FuzzHciLayer* fuzzHci = new FuzzHciLayer();

  moduleRegistry.InjectTestModule(&HciLayer::Factory, fuzzHci);
  fuzzHci->Start();
  moduleRegistry.Start<AclManager>(&moduleRegistry.GetTestThread());
  static FuzzTestModuleRegistry moduleRegistry = FuzzTestModuleRegistry();
  FuzzHciLayer* fuzzHci = moduleRegistry.Inject<FuzzHciLayer>(&HciLayer::Factory);
  moduleRegistry.Start<AclManager>();

  while (dataProvider.remaining_bytes() > 0) {
    const uint8_t action = dataProvider.ConsumeIntegralInRange(0, 12);
@@ -57,10 +54,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
    }
  }

  if (!moduleRegistry.GetTestThread().GetReactor()->WaitForIdle(std::chrono::milliseconds(100))) {
    LOG_ERROR("idle timed out");
  }
  moduleRegistry.StopAll();
  moduleRegistry.WaitForIdleAndStopAll();
  fake_timerfd_reset();
  return 0;
}
+2 −0
Original line number Diff line number Diff line
@@ -77,6 +77,8 @@ void FuzzHciLayer::injectAclData(std::vector<uint8_t> data) {
  acl_inject_->Inject(std::make_unique<AclPacketView>(aclPacket));
}

const ModuleFactory FuzzHciLayer::Factory = ModuleFactory([]() { return new FuzzHciLayer(); });

}  // namespace fuzz
}  // namespace hci
}  // namespace bluetooth
+3 −0
Original line number Diff line number Diff line
@@ -83,6 +83,9 @@ class FuzzHciLayer : public HciLayer {
    return "FuzzHciLayer";
  }

  static const ModuleFactory Factory;

 protected:
  void ListDependencies(ModuleList* list) override {}
  void Start() override;
  void Stop() override;
Loading