Browse Source
Merge pull request #8657 from Kelebek1/depop
[Audio] Avoid an out-of-bounds span write in depop prepare
pull/15/merge
liamwhite
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
2 additions and
2 deletions
-
src/audio_core/renderer/command/command_buffer.cpp
-
src/audio_core/renderer/command/mix/depop_prepare.cpp
|
|
|
@ -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()), |
|
|
|
MaxMixBuffers * sizeof(s32)); |
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
@ -19,7 +19,7 @@ void DepopPrepareCommand::Dump([[maybe_unused]] const ADSP::CommandListProcessor |
|
|
|
|
|
|
|
void DepopPrepareCommand::Process(const ADSP::CommandListProcessor& processor) { |
|
|
|
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++) { |
|
|
|
if (samples[i]) { |
|
|
|
|