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

Commit 28548c87 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role)
Browse files

[automerger] Checks the SMP length to fix OOB read am: 9a1046a4 am:...

[automerger] Checks the SMP length to fix OOB read am: 9a1046a4 am: 9a07064a am: 046f33d7 am: 924fd1d9

Change-Id: Ifaae2e4562c49bb94e6619384bb6298693d4c61a
parents 7ef02049 924fd1d9
Loading
Loading
Loading
Loading
+17 −1
Original line number Original line Diff line number Diff line
@@ -1012,6 +1012,14 @@ void smp_proc_enc_info(tSMP_CB *p_cb, tSMP_INT_DATA *p_data)
    UINT8   *p = (UINT8 *)p_data;
    UINT8   *p = (UINT8 *)p_data;


    SMP_TRACE_DEBUG("%s", __func__);
    SMP_TRACE_DEBUG("%s", __func__);

    if (smp_command_has_invalid_parameters(p_cb)) {
        uint8_t reason = SMP_INVALID_PARAMETERS;
        android_errorWriteLog(0x534e4554, "111937065");
        smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason);
        return;
    }

    STREAM_TO_ARRAY(p_cb->ltk, p, BT_OCTET16_LEN);
    STREAM_TO_ARRAY(p_cb->ltk, p, BT_OCTET16_LEN);


    smp_key_distribution(p_cb, NULL);
    smp_key_distribution(p_cb, NULL);
@@ -1045,7 +1053,7 @@ void smp_proc_master_id(tSMP_CB *p_cb, tSMP_INT_DATA *p_data)
}
}


/*******************************************************************************
/*******************************************************************************
** Function     smp_proc_enc_info
** Function     smp_proc_id_info
** Description  process identity information from peer device
** Description  process identity information from peer device
*******************************************************************************/
*******************************************************************************/
void smp_proc_id_info(tSMP_CB *p_cb, tSMP_INT_DATA *p_data)
void smp_proc_id_info(tSMP_CB *p_cb, tSMP_INT_DATA *p_data)
@@ -1053,6 +1061,14 @@ void smp_proc_id_info(tSMP_CB *p_cb, tSMP_INT_DATA *p_data)
    UINT8   *p = (UINT8 *)p_data;
    UINT8   *p = (UINT8 *)p_data;


    SMP_TRACE_DEBUG("%s", __func__);
    SMP_TRACE_DEBUG("%s", __func__);

    if (smp_command_has_invalid_parameters(p_cb)) {
        uint8_t reason = SMP_INVALID_PARAMETERS;
        android_errorWriteLog(0x534e4554, "111937065");
        smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason);
        return;
    }

    STREAM_TO_ARRAY (p_cb->tk, p, BT_OCTET16_LEN);   /* reuse TK for IRK */
    STREAM_TO_ARRAY (p_cb->tk, p, BT_OCTET16_LEN);   /* reuse TK for IRK */
    smp_key_distribution_by_transport(p_cb, NULL);
    smp_key_distribution_by_transport(p_cb, NULL);
}
}