diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-09-11 10:54:41 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-09-11 11:23:40 +0200 |
commit | cbe47b1e8452e37fda592941e7d3f3bb5920c201 (patch) | |
tree | 9ea8b6418c4d89e27c98314d41974163b5dbafe8 /libavformat/mxfdec.c | |
parent | 64b6279d1414378214a58a55f0066fbc95256c9b (diff) | |
parent | f369b9356c4606cd4d713d60f7db5de119d901fa (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.c | 24 |
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; |