|
|
|
@@ -407,16 +407,17 @@ 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; |
|
|
|
MXFPartition *partition, *tmp_part; |
|
|
|
UID op; |
|
|
|
uint64_t footer_partition; |
|
|
|
|
|
|
|
if (mxf->partitions_count+1 >= UINT_MAX / sizeof(*mxf->partitions)) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
mxf->partitions = av_realloc(mxf->partitions, (mxf->partitions_count + 1) * sizeof(*mxf->partitions)); |
|
|
|
if (!mxf->partitions) |
|
|
|
tmp_part = av_realloc(mxf->partitions, (mxf->partitions_count + 1) * sizeof(*mxf->partitions)); |
|
|
|
if (!tmp_part) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
mxf->partitions = tmp_part; |
|
|
|
|
|
|
|
if (mxf->parsing_backward) { |
|
|
|
/* insert the new partition pack in the middle |
|
|
|
@@ -512,11 +513,13 @@ 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; |
|
|
|
if (mxf->metadata_sets_count+1 >= UINT_MAX / sizeof(*mxf->metadata_sets)) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
mxf->metadata_sets = av_realloc(mxf->metadata_sets, (mxf->metadata_sets_count + 1) * sizeof(*mxf->metadata_sets)); |
|
|
|
if (!mxf->metadata_sets) |
|
|
|
tmp = av_realloc(mxf->metadata_sets, (mxf->metadata_sets_count + 1) * sizeof(*mxf->metadata_sets)); |
|
|
|
if (!tmp) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
mxf->metadata_sets = tmp; |
|
|
|
mxf->metadata_sets[mxf->metadata_sets_count] = metadata_set; |
|
|
|
mxf->metadata_sets_count++; |
|
|
|
return 0; |
|
|
|
|