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

Commit 3f20715f authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

bta_gattc_sdp_callback move null check above first usage

Bug: 75311714
Test: Test scenario described in bug
Change-Id: Ib2da24134205277ae03cf28394db74758de17e5d
parent d6fb14ae
Loading
Loading
Loading
Loading
+33 −33
Original line number Diff line number Diff line
@@ -400,10 +400,12 @@ void bta_gattc_sdp_callback(uint16_t sdp_status, void* user_data) {
  tBTA_GATTC_CB_DATA* cb_data = (tBTA_GATTC_CB_DATA*)user_data;
  tBTA_GATTC_SERV* p_srvc_cb = bta_gattc_find_scb_by_cid(cb_data->sdp_conn_id);

  if (p_srvc_cb == nullptr) {
    LOG(ERROR) << "GATT service discovery is done on unknown connection";
  } else {
    bool no_pending_disc = p_srvc_cb->pending_discovery.empty();

  if (((sdp_status == SDP_SUCCESS) || (sdp_status == SDP_DB_FULL)) &&
      p_srvc_cb != NULL) {
    if ((sdp_status == SDP_SUCCESS) || (sdp_status == SDP_DB_FULL)) {
      tSDP_DISC_REC* p_sdp_rec = NULL;
      do {
        /* find a service record, report it */
@@ -426,8 +428,9 @@ void bta_gattc_sdp_callback(uint16_t sdp_status, void* user_data) {
              if (GATT_HANDLE_IS_VALID(start_handle) &&
                  GATT_HANDLE_IS_VALID(end_handle) && p_srvc_cb != NULL) {
                /* discover services result, add services into a service list */
              add_service_to_gatt_db(p_srvc_cb->pending_discovery, start_handle,
                                     end_handle, service_uuid, true);
                add_service_to_gatt_db(p_srvc_cb->pending_discovery,
                                       start_handle, end_handle, service_uuid,
                                       true);
              } else {
                LOG(ERROR) << "invalid start_handle=" << loghex(start_handle)
                           << ", end_handle=" << loghex(end_handle);
@@ -438,15 +441,12 @@ void bta_gattc_sdp_callback(uint16_t sdp_status, void* user_data) {
      } while (p_sdp_rec);
    }

  if (p_srvc_cb != NULL) {
    if (no_pending_disc) {
      p_srvc_cb->pending_service = p_srvc_cb->pending_discovery.begin();
    }

    /* start discover primary service */
    bta_gattc_explore_srvc(cb_data->sdp_conn_id, p_srvc_cb);
  } else {
    LOG(ERROR) << "GATT service discovery is done on unknown connection";
  }

  /* both were allocated in bta_gattc_sdp_service_disc */