Merge "dsp: q6core: validate payload size before access for AVCS" into audio-drivers.lnx.5.0.r1-rel

This commit is contained in:
Linux Build Service Account 2023-05-31 03:06:36 -07:00 • committed by Gerrit - the friendly Code Review server
commit 0ee16d423a

View file

@ -475,6 +475,12 @@ static int32_t aprv2_core_fn_q(struct apr_client_data *data, void *priv)
case AVCS_CMD_RSP_LOAD_MODULES:
pr_debug("%s: Received AVCS_CMD_RSP_LOAD_MODULES\n",
__func__);
if (data->payload_size != ((sizeof(struct avcs_load_unload_modules_sec_payload)
* rsp_payload->num_modules) + sizeof(uint32_t))) {
pr_err("%s: payload size greater than expected size %d\n",
__func__,data->payload_size);
return -EINVAL;
}
memcpy(rsp_payload, data->payload, data->payload_size);
q6core_lcl.avcs_module_resp_received = 1;
wake_up(&q6core_lcl.avcs_module_load_unload_wait);
@ -1037,6 +1043,8 @@ int32_t q6core_avcs_load_unload_modules(struct avcs_load_unload_modules_payload
return -ENOMEM;
}
rsp_payload->num_modules = num_modules;
memcpy((uint8_t *)mod + sizeof(struct apr_hdr) +
sizeof(struct avcs_load_unload_modules_meminfo),
payload, payload_size);