diff options
Diffstat (limited to 'libavformat/matroskadec.c')
-rw-r--r-- | libavformat/matroskadec.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d5b60714ac..e8ef81f3d1 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -878,15 +878,16 @@ static int ebml_parse_elem(MatroskaDemuxContext *matroska, uint32_t id = syntax->id; uint64_t length; int res; - void *newelem; data = (char *)data + syntax->data_offset; if (syntax->list_elem_size) { EbmlList *list = data; - newelem = av_realloc(list->elem, (list->nb_elem+1)*syntax->list_elem_size); - if (!newelem) - return AVERROR(ENOMEM); - list->elem = newelem; + if ((res = av_reallocp_array(&list->elem, + list->nb_elem + 1, + syntax->list_elem_size)) < 0) { + list->nb_elem = 0; + return res; + } data = (char*)list->elem + list->nb_elem*syntax->list_elem_size; memset(data, 0, syntax->list_elem_size); list->nb_elem++; |