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

Commit 67eb2c28 authored by Andre Eisenbach's avatar Andre Eisenbach Committed by Matthew Xie
Browse files

LE: Send correct device name during SMP pairing

During SMP pairing the device name is not properly copied to the upper
Java layers, causing a potentially wrong device name to be displayed to
the user.

Change-Id: Iab43871defc7df52b0cd9c64f52208879abb50f2
parent 3a054638
Loading
Loading
Loading
Loading
+59 −34
Original line number Diff line number Diff line
@@ -4631,6 +4631,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D
{
    tBTM_STATUS status = BTM_SUCCESS;
    tBTA_DM_SEC sec_event;
    char* p_name = NULL;
    UINT8 i;

    APPL_TRACE_DEBUG0("bta_dm_ble_smp_cback");
@@ -4661,15 +4662,31 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D

        case BTM_LE_SEC_REQUEST_EVT:
            bdcpy(sec_event.ble_req.bd_addr, bda);
            BCM_STRNCPY_S((char*)sec_event.ble_req.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN));
            sec_event.ble_req.bd_name[BD_NAME_LEN] = 0;
            p_name = BTM_SecReadDevName(bda);
            if (p_name != NULL)
            {
                BCM_STRNCPY_S((char*)sec_event.ble_req.bd_name,
                               sizeof(BD_NAME), p_name, (BD_NAME_LEN));
            }
            else
            {
                sec_event.ble_req.bd_name[0] = 0;
            }
            bta_dm_cb.p_sec_cback(BTA_DM_BLE_SEC_REQ_EVT, &sec_event);
            break;

        case BTM_LE_KEY_NOTIF_EVT:
            bdcpy(sec_event.key_notif.bd_addr, bda);
            BCM_STRNCPY_S((char*)sec_event.key_notif.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN));
            sec_event.ble_req.bd_name[BD_NAME_LEN] = 0;
            p_name = BTM_SecReadDevName(bda);
            if (p_name != NULL)
            {
                BCM_STRNCPY_S((char*)sec_event.key_notif.bd_name,
                               sizeof(BD_NAME), p_name, (BD_NAME_LEN));
            }
            else
            {
                sec_event.key_notif.bd_name[0] = 0;
            }
           sec_event.key_notif.passkey = p_data->key_notif;
           bta_dm_cb.p_sec_cback(BTA_DM_BLE_PASSKEY_NOTIF_EVT, &sec_event);
           break;
@@ -4709,8 +4726,16 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D

        case BTM_LE_COMPLT_EVT:
            bdcpy(sec_event.auth_cmpl.bd_addr, bda);
            BCM_STRNCPY_S((char*)sec_event.auth_cmpl.bd_name, sizeof(BD_NAME), bta_dm_get_remname(), (BD_NAME_LEN));

            p_name = BTM_SecReadDevName(bda);
            if (p_name != NULL)
            {
                BCM_STRNCPY_S((char*)sec_event.auth_cmpl.bd_name,
                               sizeof(BD_NAME), p_name, (BD_NAME_LEN));
            }
            else
            {
                sec_event.auth_cmpl.bd_name[0] = 0;
            }
            if (p_data->complt.reason != 0)
            {
                sec_event.auth_cmpl.fail_reason = BTA_DM_AUTH_CONVERT_SMP_CODE(((UINT8)p_data->complt.reason));