From f1f3b5c64f88c099d621dafae4dc4d335d8ffec6 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Mon, 7 Sep 2026 02:09:01 +0200 Subject: [PATCH] Fix WAVE header size parsing --- src/dusk/mods/svc/audio_res/wave.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dusk/mods/svc/audio_res/wave.cpp b/src/dusk/mods/svc/audio_res/wave.cpp index 5835fbcc6f..83f991dcd4 100644 --- a/src/dusk/mods/svc/audio_res/wave.cpp +++ b/src/dusk/mods/svc/audio_res/wave.cpp @@ -55,7 +55,7 @@ ModResult load_wav(LoadedMod const& mod, RuntimeWaveReplacementSlot& slot, std:: return MOD_UNSUPPORTED; } - if (sizeof(ChunkHeader) + riffChunk.header.size > fileData.size()) { + if (sizeof(ChunkHeader) + riffChunk.header.size > fileData.size() || riffChunk.header.size < 4) { Log.error("[{}] wav file {}: invalid size!", mod.metadata.id, slot.bundle_path); return MOD_INVALID_ARGUMENT; } @@ -63,7 +63,7 @@ ModResult load_wav(LoadedMod const& mod, RuntimeWaveReplacementSlot& slot, std:: bool has_read_fmt = false; SampleDataPcm16 pcmData; - auto waveData = fileData.subspan(sizeof(RiffChunk), riffChunk.header.size); + auto waveData = fileData.subspan(sizeof(RiffChunk), riffChunk.header.size - 4); while (waveData.size() > sizeof(ChunkHeader)) { auto const chunkHeader = read_unaligned(&waveData[0]);