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

Commit dcc46ec5 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

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



Change-Id: I6f1f1d5dc41f7ba8e33830ad3142bd761e0dc061
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 2c01719f 3f2f348c
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_{};