Browse Source

flac: fix realloc loop with invalid flac files

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
tags/n2.7
Thomas Guillem Luca Barbato 10 years ago
parent
commit
b18346817d
1 changed files with 9 additions and 0 deletions
  1. +9
    -0
      libavcodec/flac_parser.c

+ 9
- 0
libavcodec/flac_parser.c View File

@@ -565,6 +565,15 @@ static int flac_parse(AVCodecParserContext *s, AVCodecContext *avctx,
nb_desired * FLAC_AVG_FRAME_SIZE);
}

if (!av_fifo_space(fpc->fifo_buf) &&
av_fifo_size(fpc->fifo_buf) / FLAC_AVG_FRAME_SIZE >
fpc->nb_headers_buffered * 10) {
/* There is less than one valid flac header buffered for 10 headers
* buffered. Therefore the fifo is most likely filled with invalid
* data and the input is not a flac file. */
goto handle_error;
}

/* Fill the buffer. */
if (av_fifo_realloc2(fpc->fifo_buf,
(read_end - read_start) + av_fifo_size(fpc->fifo_buf)) < 0) {


Loading…
Cancel
Save