On 9/3/2019 8:36 PM, Andreas Rheinhardt wrote: > James Almer: >> Speeds up the process considerably. >> >> Fixes ticket #8109. >> >> Suggested-by: nevcairiel >> Suggested-by: cehoyos >> Signed-off-by: James Almer <jamr...@gmail.com> >> --- >> libavformat/matroskadec.c | 12 ++++++++++-- >> 1 file changed, 10 insertions(+), 2 deletions(-) >> >> diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c >> index 439ee462a5..0f227eb33d 100644 >> --- a/libavformat/matroskadec.c >> +++ b/libavformat/matroskadec.c >> @@ -110,6 +110,7 @@ typedef const struct EbmlSyntax { >> >> typedef struct EbmlList { >> int nb_elem; >> + unsigned int alloc_elem_size; >> void *elem; >> } EbmlList; >> >> @@ -1236,8 +1237,14 @@ static int ebml_parse(MatroskaDemuxContext *matroska, >> data = (char *) data + syntax->data_offset; >> if (syntax->list_elem_size) { >> EbmlList *list = data; >> - void *newelem = av_realloc_array(list->elem, list->nb_elem + 1, >> - syntax->list_elem_size); >> + void *newelem; >> + >> + if ((unsigned)list->nb_elem + 1 >= UINT_MAX / >> syntax->list_elem_size) >> + return AVERROR(ENOMEM); >> + >> + newelem = av_fast_realloc(list->elem, >> + &list->alloc_elem_size, >> + (list->nb_elem + 1) * >> syntax->list_elem_size); > If this fails, list->alloc_elem_size will be zero, yet list->elem and > list->nb_elem might be non NULL/zero. I actually think that this will > probably work, but it is nevertheless ugly.
It should work. I'll push this tomorrow if no one objects, then backport to supported branches. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".