avformat/au: cleanup on EOF return in au_read_annotation()

Fixes: memleak
Fixes: 26841/clusterfuzz-testcase-minimized-ffmpeg_dem_AU_fuzzer-5174166309044224
Regression since: e680d50eb4
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit d16974c3dd)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer 2020-11-05 20:23:54 +01:00
parent bce5806f42
commit 63e0cb0b68
1 changed files with 4 additions and 1 deletions

View File

@ -86,8 +86,11 @@ static int au_read_annotation(AVFormatContext *s, int size)
av_bprint_init(&bprint, 64, AV_BPRINT_SIZE_UNLIMITED); av_bprint_init(&bprint, 64, AV_BPRINT_SIZE_UNLIMITED);
while (size-- > 0) { while (size-- > 0) {
if (avio_feof(pb)) if (avio_feof(pb)) {
av_bprint_finalize(&bprint, NULL);
av_freep(&key);
return AVERROR_EOF; return AVERROR_EOF;
}
c = avio_r8(pb); c = avio_r8(pb);
switch(state) { switch(state) {
case PARSE_KEY: case PARSE_KEY: