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

Commit f454e03c authored by Elie Kheirallah's avatar Elie Kheirallah Committed by Automerger Merge Worker
Browse files

Merge "Fix null dereference read in...

Merge "Fix null dereference read in android::hardware::bluetooth::hci::H4Protocol::Send" am: 3f2f348c am: dcc46ec5 am: dc747c10

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2548491



Change-Id: Iad5e17bfb76ff28c6ae3bfa5b465893a577d5457
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 65f92bc4 dc747c10
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -176,7 +176,10 @@ void BluetoothHci::reset() {
  mFdWatcher.WatchFdForNonBlockingReads(mFd,
                                        [this](int) { mH4->OnDataReady(); });

  send(PacketType::COMMAND, reset);
  ndk::ScopedAStatus result = send(PacketType::COMMAND, reset);
  if (!result.isOk()) {
    ALOGE("Error sending reset command");
  }
  auto status = resetFuture.wait_for(std::chrono::seconds(1));
  mFdWatcher.StopWatchingFileDescriptors();
  if (status == std::future_status::ready) {
@@ -303,30 +306,35 @@ ndk::ScopedAStatus BluetoothHci::close() {

ndk::ScopedAStatus BluetoothHci::sendHciCommand(
    const std::vector<uint8_t>& packet) {
  send(PacketType::COMMAND, packet);
  return ndk::ScopedAStatus::ok();
  return send(PacketType::COMMAND, packet);
}

ndk::ScopedAStatus BluetoothHci::sendAclData(
    const std::vector<uint8_t>& packet) {
  send(PacketType::ACL_DATA, packet);
  return ndk::ScopedAStatus::ok();
  return send(PacketType::ACL_DATA, packet);
}

ndk::ScopedAStatus BluetoothHci::sendScoData(
    const std::vector<uint8_t>& packet) {
  send(PacketType::SCO_DATA, packet);
  return ndk::ScopedAStatus::ok();
  return send(PacketType::SCO_DATA, packet);
}

ndk::ScopedAStatus BluetoothHci::sendIsoData(
    const std::vector<uint8_t>& packet) {
  send(PacketType::ISO_DATA, packet);
  return ndk::ScopedAStatus::ok();
  return send(PacketType::ISO_DATA, packet);
}

void BluetoothHci::send(PacketType type, const std::vector<uint8_t>& v) {
ndk::ScopedAStatus BluetoothHci::send(PacketType type,
    const std::vector<uint8_t>& v) {
  if (mH4 == nullptr) {
    return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_STATE);
  }
  if (v.empty()) {
    ALOGE("Packet is empty, no data was found to be sent");
    return ndk::ScopedAStatus::fromExceptionCode(EX_ILLEGAL_ARGUMENT);
  }
  mH4->Send(type, v);
  return ndk::ScopedAStatus::ok();
}

}  // namespace aidl::android::hardware::bluetooth::impl
+3 −2
Original line number Diff line number Diff line
@@ -66,7 +66,8 @@ class BluetoothHci : public BnBluetoothHci {
  ::android::hardware::bluetooth::async::AsyncFdWatcher mFdWatcher;

  int getFdFromDevPath();
  void send(::android::hardware::bluetooth::hci::PacketType type,
  [[nodiscard]] ndk::ScopedAStatus send(
      ::android::hardware::bluetooth::hci::PacketType type,
      const std::vector<uint8_t>& packet);
  std::unique_ptr<NetBluetoothMgmt> management_{};