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

Commit 2ece0453 authored by Hui Peng's avatar Hui Peng Committed by Automerger Merge Worker
Browse files

Fix an OOB bug in bta_hh_co_get_rpt_rsp am: d2e67f50

parents 476f203f d2e67f50
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -673,15 +673,16 @@ void bta_hh_co_get_rpt_rsp(uint8_t dev_handle, uint8_t status, uint8_t* p_rpt,
    ev.type = UHID_FEATURE_ANSWER;
    ev.u.feature_answer.id = *get_rpt_id;
    ev.u.feature_answer.err = status;
    ev.u.feature_answer.size = len;
    ev.u.feature_answer.size = len - GET_RPT_RSP_OFFSET;
    osi_free(get_rpt_id);
    if (len > 0) {
      if (len > UHID_DATA_MAX) {
    if (len > GET_RPT_RSP_OFFSET) {
      if (len - GET_RPT_RSP_OFFSET > UHID_DATA_MAX) {
        APPL_TRACE_WARNING("%s: Report size greater than allowed size",
                           __func__);
        return;
      }
      memcpy(ev.u.feature_answer.data, p_rpt + GET_RPT_RSP_OFFSET, len);
      memcpy(ev.u.feature_answer.data, p_rpt + GET_RPT_RSP_OFFSET,
             len - GET_RPT_RSP_OFFSET);
      uhid_write(p_dev->fd, &ev);
    }
  }