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

Commit 639860bd authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add sco data to the hci layer fuzz test"

parents 1ac34f73 9fbba67f
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ void FuzzHciHal::injectHciEvent(std::vector<uint8_t> data) {
  callbacks_->hciEventReceived(data);
}

void FuzzHciHal::injectAcl(std::vector<uint8_t> data) {
void FuzzHciHal::injectAclData(std::vector<uint8_t> data) {
  auto packet = packet::PacketView<packet::kLittleEndian>(std::make_shared<std::vector<uint8_t>>(data));
  hci::AclPacketView aclPacket = hci::AclPacketView::Create(packet);
  if (!aclPacket.IsValid()) {
@@ -79,6 +79,16 @@ void FuzzHciHal::injectAcl(std::vector<uint8_t> data) {
  callbacks_->aclDataReceived(data);
}

void FuzzHciHal::injectScoData(std::vector<uint8_t> data) {
  auto packet = packet::PacketView<packet::kLittleEndian>(std::make_shared<std::vector<uint8_t>>(data));
  hci::ScoPacketView scoPacket = hci::ScoPacketView::Create(packet);
  if (!scoPacket.IsValid()) {
    return;
  }

  callbacks_->scoDataReceived(data);
}

}  // namespace fuzz
}  // namespace hal
}  // namespace bluetooth
+2 −1
Original line number Diff line number Diff line
@@ -33,8 +33,9 @@ class FuzzHciHal : public HciHal {
  void sendAclData(HciPacket packet) override {}
  void sendScoData(HciPacket packet) override {}

  void injectAcl(std::vector<uint8_t> data);
  void injectAclData(std::vector<uint8_t> data);
  void injectHciEvent(std::vector<uint8_t> data);
  void injectScoData(std::vector<uint8_t> data);

  std::string ToString() const override {
    return "HciHalFuzz";
+5 −2
Original line number Diff line number Diff line
@@ -42,17 +42,20 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
  moduleRegistry.Start<DevNullHci>(&moduleRegistry.GetTestThread());

  while (dataProvider.remaining_bytes() > 0) {
    const uint8_t action = dataProvider.ConsumeIntegralInRange(0, 2);
    const uint8_t action = dataProvider.ConsumeIntegralInRange(0, 4);
    switch (action) {
      case 1:
        fake_timerfd_advance(dataProvider.ConsumeIntegral<uint64_t>());
        break;
      case 2:
        fuzzHal->injectAcl(dataProvider.ConsumeBytes<uint8_t>(dataProvider.ConsumeIntegral<size_t>()));
        fuzzHal->injectAclData(dataProvider.ConsumeBytes<uint8_t>(dataProvider.ConsumeIntegral<size_t>()));
        break;
      case 3:
        fuzzHal->injectHciEvent(dataProvider.ConsumeBytes<uint8_t>(dataProvider.ConsumeIntegral<size_t>()));
        break;
      case 4:
        fuzzHal->injectScoData(dataProvider.ConsumeBytes<uint8_t>(dataProvider.ConsumeIntegral<size_t>()));
        break;
    }
  }