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

Commit fee8d8a7 authored by Henri Chataing's avatar Henri Chataing
Browse files

osi: Always implement strlcpy as osi_strlcpy

This function is inconsistently implemented by libc implementations
as it is not a standard ISO-C method. Rename the filler implementation
and make sure it is always used in place of the BSD version.

Bug: 379338269
Test: m com.android.btservices
Flag: EXEMPT, no logical change
Change-Id: I3c78d6e8ebf55da8137fbcced5aa9e97dbcf0b44
parent 951cbc5a
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -225,7 +225,7 @@ static void bta_ag_send_result(tBTA_AG_SCB* p_scb, size_t code, const char* p_ar
  *p++ = '\n';

  /* copy result code string */
  strlcpy(p, result->result_string, sizeof(buf) - 2);
  osi_strlcpy(p, result->result_string, sizeof(buf) - 2);

  if (p_scb->conn_service == BTA_AG_HSP) {
    /* If HSP then ":"symbol should be changed as "=" for HSP compatibility */
@@ -541,7 +541,7 @@ static void bta_ag_process_unat_res(char* unat_result) {
    /* Add EOF */
    trim_data[j] = '\0';
    str_leng = str_leng - 4;
    strlcpy(unat_result, trim_data, str_leng + 1);
    osi_strlcpy(unat_result, trim_data, str_leng + 1);
    j = 0;

    if (str_leng < 4) {
@@ -621,7 +621,7 @@ void bta_ag_at_hsp_cback(tBTA_AG_SCB* p_scb, uint16_t command_id, uint8_t arg_ty
    bta_ag_send_error(p_scb, BTA_AG_ERR_TEXT_TOO_LONG);
    return;
  }
  strlcpy(val.str, p_arg, sizeof(val.str));
  osi_strlcpy(val.str, p_arg, sizeof(val.str));

  /* call callback with event */
  if (command_id & 0xff00) {
@@ -899,7 +899,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, cha
    bta_ag_send_error(p_scb, BTA_AG_ERR_TEXT_TOO_LONG);
    return;
  }
  strlcpy(val.str, p_arg, sizeof(val.str));
  osi_strlcpy(val.str, p_arg, sizeof(val.str));

  /**
   * Unless this this is a local event, by default we'll forward
@@ -1397,7 +1397,7 @@ void bta_ag_at_err_cback(tBTA_AG_SCB* p_scb, bool unknown, const char* p_arg) {
    val.hdr.app_id = p_scb->app_id;
    val.hdr.status = BTA_AG_SUCCESS;
    val.num = 0;
    strlcpy(val.str, p_arg, sizeof(val.str));
    osi_strlcpy(val.str, p_arg, sizeof(val.str));
    (*bta_ag_cb.p_cback)(BTA_AG_AT_UNAT_EVT, (tBTA_AG*)&val);
  } else {
    bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+1 −1
Original line number Diff line number Diff line
@@ -491,7 +491,7 @@ void bta_ag_api_register(tBTA_SERVICE_MASK services, tBTA_AG_FEAT features,
    data.api_register.app_id = app_id;
    for (int i = 0; i < BTA_AG_NUM_IDX; i++) {
      if (!service_names[i].empty()) {
        strlcpy(data.api_register.p_name[i], service_names[i].c_str(), BTA_SERVICE_NAME_LEN);
        osi_strlcpy(data.api_register.p_name[i], service_names[i].c_str(), BTA_SERVICE_NAME_LEN);
      } else {
        data.api_register.p_name[i][0] = 0;
      }
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ void BTA_AvRegister(tBTA_AV_CHNL chnl, const char* p_service_name, uint8_t app_i
  p_buf->hdr.layer_specific = chnl;
  p_buf->hdr.event = BTA_AV_API_REGISTER_EVT;
  if (p_service_name) {
    strlcpy(p_buf->p_service_name, p_service_name, BTA_SERVICE_NAME_LEN);
    osi_strlcpy(p_buf->p_service_name, p_service_name, BTA_SERVICE_NAME_LEN);
  } else {
    p_buf->p_service_name[0] = 0;
  }
+3 −3
Original line number Diff line number Diff line
@@ -111,19 +111,19 @@ void BTA_HdRegisterApp(tBTA_HD_APP_INFO* p_app_info, tBTA_HD_QOS_INFO* p_in_qos,
  p_buf->hdr.event = BTA_HD_API_REGISTER_APP_EVT;

  if (p_app_info->p_name) {
    strlcpy(p_buf->name, p_app_info->p_name, BTA_HD_APP_NAME_LEN);
    osi_strlcpy(p_buf->name, p_app_info->p_name, BTA_HD_APP_NAME_LEN);
  } else {
    p_buf->name[0] = '\0';
  }

  if (p_app_info->p_description) {
    strlcpy(p_buf->description, p_app_info->p_description, BTA_HD_APP_DESCRIPTION_LEN);
    osi_strlcpy(p_buf->description, p_app_info->p_description, BTA_HD_APP_DESCRIPTION_LEN);
  } else {
    p_buf->description[0] = '\0';
  }

  if (p_app_info->p_provider) {
    strlcpy(p_buf->provider, p_app_info->p_provider, BTA_HD_APP_PROVIDER_LEN);
    osi_strlcpy(p_buf->provider, p_app_info->p_provider, BTA_HD_APP_PROVIDER_LEN);
  } else {
    p_buf->provider[0] = '\0';
  }
+1 −1
Original line number Diff line number Diff line
@@ -1705,7 +1705,7 @@ public:
      if (!strftime(temptime, sizeof(temptime), "%H:%M:%S", tstamp)) {
        log::error("strftime fails. tm_sec={}, tm_min={}, tm_hour={}", tstamp->tm_sec,
                   tstamp->tm_min, tstamp->tm_hour);
        strlcpy(temptime, "UNKNOWN TIME", sizeof(temptime));
        osi_strlcpy(temptime, "UNKNOWN TIME", sizeof(temptime));
      }
      snprintf(eventtime, sizeof(eventtime), "%s.%03ld", temptime,
               rssi_logs.timestamp.tv_nsec / 1000000);
Loading