1
0
Fork 1
forked from suyu/suyu

Merge pull request #8657 from Kelebek1/depop

[Audio] Avoid an out-of-bounds span write in depop prepare
This commit is contained in:
liamwhite 2022-07-28 11:02:41 -04:00 committed by GitHub
commit e5615c4704
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 2 deletions

View file

@ -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);
} }

View file

@ -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]) {