Merge pull request #8657 from Kelebek1/depop
[Audio] Avoid an out-of-bounds span write in depop prepare
This commit is contained in:
		| @@ -339,7 +339,7 @@ void CommandBuffer::GenerateDepopPrepareCommand(const s32 node_id, const VoiceSt | |||||||
|     cmd.previous_samples = memory_pool->Translate(CpuAddr(voice_state.previous_samples.data()), |     cmd.previous_samples = memory_pool->Translate(CpuAddr(voice_state.previous_samples.data()), | ||||||
|                                                   MaxMixBuffers * sizeof(s32)); |                                                   MaxMixBuffers * sizeof(s32)); | ||||||
|     cmd.buffer_count = buffer_count; |     cmd.buffer_count = buffer_count; | ||||||
|     cmd.depop_buffer = memory_pool->Translate(CpuAddr(buffer.data()), buffer_count * sizeof(s32)); |     cmd.depop_buffer = memory_pool->Translate(CpuAddr(buffer.data()), buffer.size_bytes()); | ||||||
|  |  | ||||||
|     GenerateEnd<DepopPrepareCommand>(cmd); |     GenerateEnd<DepopPrepareCommand>(cmd); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ void DepopPrepareCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor | |||||||
|  |  | ||||||
| void DepopPrepareCommand::Process(const ADSP::CommandListProcessor& processor) { | void DepopPrepareCommand::Process(const ADSP::CommandListProcessor& processor) { | ||||||
|     auto samples{reinterpret_cast<s32*>(previous_samples)}; |     auto samples{reinterpret_cast<s32*>(previous_samples)}; | ||||||
|     auto buffer{std::span(reinterpret_cast<s32*>(depop_buffer), buffer_count)}; |     auto buffer{reinterpret_cast<s32*>(depop_buffer)}; | ||||||
|  |  | ||||||
|     for (u32 i = 0; i < buffer_count; i++) { |     for (u32 i = 0; i < buffer_count; i++) { | ||||||
|         if (samples[i]) { |         if (samples[i]) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user