From f9620d668d9e6b87fa56f880ef23f7752e507213 Mon Sep 17 00:00:00 2001 From: reuk Date: Wed, 23 Apr 2025 14:30:55 +0100 Subject: [PATCH] WaveAudioFormatReader: Avoid potential FPE --- .../codecs/juce_WavAudioFormat.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp index 10636d8dfb..a9a0ecb476 100644 --- a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp @@ -1277,16 +1277,18 @@ public: // read the format chunk auto format = (unsigned short) input->readShort(); numChannels = (unsigned int) input->readShort(); - sampleRate = input->readInt(); - auto bytesPerSec = input->readInt(); + const auto intSampleRate = (uint32_t) input->readInt(); + sampleRate = intSampleRate; + auto bytesPerSec = (uint32_t) input->readInt(); input->skipNextBytes (2); bitsPerSample = (unsigned int) (int) input->readShort(); - if (bitsPerSample > 64 && (int) sampleRate != 0) + if (bitsPerSample > 64 && intSampleRate > 0) { - bytesPerFrame = bytesPerSec / (int) sampleRate; + bytesPerFrame = (int) (bytesPerSec / intSampleRate); + jassert (bytesPerFrame >= 0); - if (numChannels != 0) + if (numChannels > 0) bitsPerSample = 8 * (unsigned int) bytesPerFrame / numChannels; } else