summaryrefslogtreecommitdiff
path: root/libavformat/matroskadec.c
diff options
context:
space:
mode:
authorAlexandra Khirnova <alexandra.khirnova@gmail.com>2013-09-10 11:57:35 +0200
committerDiego Biurrun <diego@biurrun.de>2013-09-10 12:38:32 +0200
commitf369b9356c4606cd4d713d60f7db5de119d901fa (patch)
tree174e199dd9716a32fbee4fb235d3938721fb333f /libavformat/matroskadec.c
parentbdf990425e2be6912a6d29f032ca558448c8635a (diff)
avformat: Use av_reallocp_array() where suitable
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Diffstat (limited to 'libavformat/matroskadec.c')
-rw-r--r--libavformat/matroskadec.c11
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++;