decoer/dsf: fix endless loop on malformed file

When the data chunk size is not a multiple of the frame size, the last
partial frame lead to an endless loop.  We fix this by checking
chunk_sze>=frame instead of chunk_sze>0.  This way, the partial frame
is simply skipped.
This commit is contained in:
Max Kellermann 2014-08-21 12:37:20 +02:00
parent 40280fa6cf
commit 23dce21647
2 changed files with 2 additions and 1 deletions

1
NEWS
View File

@ -1,5 +1,6 @@
ver 0.18.13 (not yet released)
* decoder
- dsf: fix endless loop on malformed file
- ffmpeg: support ffmpeg/libav version 11
ver 0.18.12 (2014/07/30)

View File

@ -238,7 +238,7 @@ dsf_decode_chunk(Decoder &decoder, InputStream &is,
const unsigned buffer_samples = buffer_frames * frame_size;
const size_t buffer_size = buffer_samples * sample_size;
while (chunk_size > 0) {
while (chunk_size >= frame_size) {
/* see how much aligned data from the remaining chunk
fits into the local buffer */
size_t now_size = buffer_size;