summaryrefslogtreecommitdiff
path: root/libavformat/mxfdec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-09-11 10:54:41 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-09-11 11:23:40 +0200
commitcbe47b1e8452e37fda592941e7d3f3bb5920c201 (patch)
tree9ea8b6418c4d89e27c98314d41974163b5dbafe8 /libavformat/mxfdec.c
parent64b6279d1414378214a58a55f0066fbc95256c9b (diff)
parentf369b9356c4606cd4d713d60f7db5de119d901fa (diff)
Merge commit 'f369b9356c4606cd4d713d60f7db5de119d901fa'
* commit 'f369b9356c4606cd4d713d60f7db5de119d901fa': avformat: Use av_reallocp_array() where suitable Conflicts: libavformat/asfenc.c libavformat/gxfenc.c libavformat/mov.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/mxfdec.c')
-rw-r--r--libavformat/mxfdec.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 29a2f563e6..333f6b06b4 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -428,18 +428,20 @@ static int mxf_read_primer_pack(void *arg, AVIOContext *pb, int tag, int size, U
static int mxf_read_partition_pack(void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
{
MXFContext *mxf = arg;
- MXFPartition *partition, *tmp_part;
+ MXFPartition *partition;
UID op;
uint64_t footer_partition;
uint32_t nb_essence_containers;
+ int err;
if (mxf->partitions_count+1 >= UINT_MAX / sizeof(*mxf->partitions))
return AVERROR(ENOMEM);
- tmp_part = av_realloc(mxf->partitions, (mxf->partitions_count + 1) * sizeof(*mxf->partitions));
- if (!tmp_part)
- return AVERROR(ENOMEM);
- mxf->partitions = tmp_part;
+ if ((err = av_reallocp_array(&mxf->partitions, mxf->partitions_count + 1,
+ sizeof(*mxf->partitions))) < 0) {
+ mxf->partitions_count = 0;
+ return err;
+ }
if (mxf->parsing_backward) {
/* insert the new partition pack in the middle
@@ -562,13 +564,15 @@ static int mxf_read_partition_pack(void *arg, AVIOContext *pb, int tag, int size
static int mxf_add_metadata_set(MXFContext *mxf, void *metadata_set)
{
- MXFMetadataSet **tmp;
+ int err;
+
if (mxf->metadata_sets_count+1 >= UINT_MAX / sizeof(*mxf->metadata_sets))
return AVERROR(ENOMEM);
- tmp = av_realloc(mxf->metadata_sets, (mxf->metadata_sets_count + 1) * sizeof(*mxf->metadata_sets));
- if (!tmp)
- return AVERROR(ENOMEM);
- mxf->metadata_sets = tmp;
+ if ((err = av_reallocp_array(&mxf->metadata_sets, mxf->metadata_sets_count + 1,
+ sizeof(*mxf->metadata_sets))) < 0) {
+ mxf->metadata_sets_count = 0;
+ return err;
+ }
mxf->metadata_sets[mxf->metadata_sets_count] = metadata_set;
mxf->metadata_sets_count++;
return 0;