From 81656532bdf649b43e3ac777637433b033b56d03 Mon Sep 17 00:00:00 2001
From: Paul B Mahol <onemda@gmail.com>
Date: Mon, 5 Sep 2022 18:12:10 +0200
Subject: [PATCH] avcodec/flac_parser: ensure there are more headers for
scoring
Previously invalid frame may be returned, happened when seeking.
Fixes #7684
Signed-off-by: Paul B Mahol <onemda@gmail.com>
---
libavcodec/flac_parser.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
@@ -600,7 +600,7 @@ static int score_header(FLACParseContext *fpc, FLACHeaderMarker *header)
static void score_sequences(FLACParseContext *fpc)
{
FLACHeaderMarker *curr;
- int best_score = 0;//FLAC_HEADER_NOT_SCORED_YET;
+ int best_score = FLAC_HEADER_NOT_SCORED_YET;
/* First pass to clear all old scores. */
for (curr = fpc->headers; curr; curr = curr->next)
curr->max_score = FLAC_HEADER_NOT_SCORED_YET;
@@ -682,7 +682,7 @@ static int flac_parse(AVCodecParserContext *s, AVCodecContext *avctx,
}
fpc->avctx = avctx;
- if (fpc->best_header_valid)
+ if (fpc->best_header_valid && fpc->nb_headers_buffered >= FLAC_MIN_HEADERS)
return get_best_header(fpc, poutbuf, poutbuf_size);
/* If a best_header was found last call remove it with the buffer data. */
--
2.37.2