int item_len = avio_rb32(pb);
if (item_len != 18) {
- av_log_ask_for_sample(pb, "unsupported primer pack item length %d\n",
- item_len);
+ avpriv_request_sample(pb, "Primer pack item length %d", item_len);
return AVERROR_PATCHWELCOME;
}
- if (item_num > UINT_MAX / item_len)
+ if (item_num > 65536) {
+ av_log(mxf->fc, AV_LOG_ERROR, "item_num %d is too large\n", item_num);
return AVERROR_INVALIDDATA;
- mxf->local_tags_count = item_num;
- mxf->local_tags = av_malloc(item_num*item_len);
+ }
+ mxf->local_tags = av_calloc(item_num, item_len);
if (!mxf->local_tags)
return AVERROR(ENOMEM);
+ mxf->local_tags_count = item_num;
avio_read(pb, mxf->local_tags, item_num*item_len);
return 0;
}
next_ofs = mxf_set_current_edit_unit(mxf, klv.offset);
if (next_ofs >= 0 && next_klv > next_ofs) {
- /* if this check is hit then it's possible OPAtom was treated
- * as OP1a truncate the packet since it's probably very large
- * (>2 GiB is common) */
+ /* if this check is hit then it's possible OPAtom was treated as OP1a
+ * truncate the packet since it's probably very large (>2 GiB is common) */
- av_log_ask_for_sample(s,
- "KLV for edit unit %i extends into next edit unit - OPAtom misinterpreted as OP1a?\n",
- mxf->current_edit_unit);
+ avpriv_request_sample(s,
+ "OPAtom misinterpreted as OP1a?"
+ "KLV for edit unit %i extending into "
+ "next edit unit",
+ mxf->current_edit_unit);
klv.length = next_ofs - avio_tell(s->pb);
}