diff --git a/Userland/Libraries/LibAudio/FlacLoader.cpp b/Userland/Libraries/LibAudio/FlacLoader.cpp index 758f9cc895..c31f6bbe4c 100644 --- a/Userland/Libraries/LibAudio/FlacLoader.cpp +++ b/Userland/Libraries/LibAudio/FlacLoader.cpp @@ -746,7 +746,13 @@ ErrorOr, LoaderError> FlacLoaderPlugin::decode_verbatim(FlacSubframe Vector decoded; decoded.ensure_capacity(m_current_frame->sample_count); - VERIFY(subframe.bits_per_sample - subframe.wasted_bits_per_sample != 0); + if (subframe.bits_per_sample <= subframe.wasted_bits_per_sample) { + return LoaderError { + LoaderError::Category::Format, + TRY(m_stream->tell()), + "Effective verbatim bits per sample are zero"sv, + }; + } for (size_t i = 0; i < m_current_frame->sample_count; ++i) { decoded.unchecked_append(sign_extend( TRY(bit_input.read_bits(subframe.bits_per_sample - subframe.wasted_bits_per_sample)), @@ -766,7 +772,13 @@ ErrorOr FlacLoaderPlugin::decode_custom_lpc(Vector& deco decoded.ensure_capacity(m_current_frame->sample_count); - VERIFY(subframe.bits_per_sample - subframe.wasted_bits_per_sample != 0); + if (subframe.bits_per_sample <= subframe.wasted_bits_per_sample) { + return LoaderError { + LoaderError::Category::Format, + TRY(m_stream->tell()), + "Effective verbatim bits per sample are zero"sv, + }; + } // warm-up samples for (auto i = 0; i < subframe.order; ++i) { decoded.unchecked_append(sign_extend( @@ -825,7 +837,13 @@ ErrorOr, LoaderError> FlacLoaderPlugin::decode_fixed_lpc(FlacSubfram Vector decoded; decoded.ensure_capacity(m_current_frame->sample_count); - VERIFY(subframe.bits_per_sample - subframe.wasted_bits_per_sample != 0); + if (subframe.bits_per_sample <= subframe.wasted_bits_per_sample) { + return LoaderError { + LoaderError::Category::Format, + TRY(m_stream->tell()), + "Effective verbatim bits per sample are zero"sv, + }; + } // warm-up samples for (auto i = 0; i < subframe.order; ++i) { decoded.unchecked_append(sign_extend(