mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
avcodec/flac_parser: Fix infinite loop
Fixes: crbug/827204
Reported-by: Frank Liberato <liberato@google.com>
Reviewed-by: Frank Liberato <liberato@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 15a2e35e9e
)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
bb7b9238b4
commit
90e9b76d3a
@ -686,12 +686,17 @@ static int flac_parse(AVCodecParserContext *s, AVCodecContext *avctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (curr = fpc->headers; curr; curr = curr->next) {
|
for (curr = fpc->headers; curr; curr = curr->next) {
|
||||||
if (curr->max_score > 0 &&
|
if (!fpc->best_header || curr->max_score > fpc->best_header->max_score) {
|
||||||
(!fpc->best_header || curr->max_score > fpc->best_header->max_score)) {
|
|
||||||
fpc->best_header = curr;
|
fpc->best_header = curr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fpc->best_header && fpc->best_header->max_score <= 0) {
|
||||||
|
// Only accept a bad header if there is no other option to continue
|
||||||
|
if (!buf_size || !buf || read_end != buf || fpc->nb_headers_buffered < FLAC_MIN_HEADERS)
|
||||||
|
fpc->best_header = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (fpc->best_header) {
|
if (fpc->best_header) {
|
||||||
fpc->best_header_valid = 1;
|
fpc->best_header_valid = 1;
|
||||||
if (fpc->best_header->offset > 0) {
|
if (fpc->best_header->offset > 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user