aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-10-17 10:15:29 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-02-27 07:20:58 +0100
commit2e49daad795832b23325e9294f9444928a5b5cb3 (patch)
tree76242e40f757d79ed3764b161b2580cee8f3dad4
parent9c6feb104d61c550fc77e8866705bdffc8de8736 (diff)
downloadffmpeg-2e49daad795832b23325e9294f9444928a5b5cb3.tar.gz
avcodec/movtextdec: Reset counter of fonts when freeing them
If allocating fonts fails when reading the header, all fonts are freed, yet the counter of fonts is not reset and no error is returned; when subtitles are decoded lateron, the inexistent list of fonts is searched for the matching font for this particular entry which of course leads to a segfault. Reviewed-by: Philip Langdale <philipl@overt.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> (cherry picked from commit 5758620560f1aa329a26ca1585dc0dbd903522c4)
-rw-r--r--libavcodec/movtextdec.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c
index 4a21dbf36d..068bdb7802 100644
--- a/libavcodec/movtextdec.c
+++ b/libavcodec/movtextdec.c
@@ -148,6 +148,7 @@ static void mov_text_cleanup_ftab(MovTextContext *m)
}
}
av_freep(&m->ftab);
+ m->ftab_entries = 0;
}
static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
@@ -230,7 +231,6 @@ static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
box_size += 3;
if (avctx->extradata_size < box_size) {
mov_text_cleanup_ftab(m);
- m->ftab_entries = 0;
return -1;
}
m->ftab_temp = av_mallocz(sizeof(*m->ftab_temp));
@@ -245,7 +245,6 @@ static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
box_size = box_size + font_length;
if (avctx->extradata_size < box_size) {
mov_text_cleanup_ftab(m);
- m->ftab_entries = 0;
return -1;
}
m->ftab_temp->font = av_malloc(font_length + 1);