|
|
|
@ -231,6 +231,8 @@ static int decode_main_header(NUTContext *nut) |
|
|
|
|
|
|
|
|
|
GET_V(nut->time_base_count, tmp > 0 && tmp < INT_MAX / sizeof(AVRational)); |
|
|
|
|
nut->time_base = av_malloc(nut->time_base_count * sizeof(AVRational)); |
|
|
|
|
if (!nut->time_base) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
|
|
for (i = 0; i < nut->time_base_count; i++) { |
|
|
|
|
GET_V(nut->time_base[i].num, tmp > 0 && tmp < (1ULL << 31)); |
|
|
|
@ -332,6 +334,8 @@ static int decode_main_header(NUTContext *nut) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
nut->stream = av_mallocz(sizeof(StreamContext) * stream_count); |
|
|
|
|
if (!nut->stream) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
for (i = 0; i < stream_count; i++) |
|
|
|
|
avformat_new_stream(s, NULL); |
|
|
|
|
|
|
|
|
@ -405,6 +409,8 @@ static int decode_stream_header(NUTContext *nut) |
|
|
|
|
if (st->codec->extradata_size) { |
|
|
|
|
st->codec->extradata = av_mallocz(st->codec->extradata_size + |
|
|
|
|
FF_INPUT_BUFFER_PADDING_SIZE); |
|
|
|
|
if (!st->codec->extradata) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
avio_read(bc, st->codec->extradata, st->codec->extradata_size); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -609,6 +615,8 @@ static int find_and_decode_index(NUTContext *nut) |
|
|
|
|
GET_V(syncpoint_count, tmp < INT_MAX / 8 && tmp > 0); |
|
|
|
|
syncpoints = av_malloc(sizeof(int64_t) * syncpoint_count); |
|
|
|
|
has_keyframe = av_malloc(sizeof(int8_t) * (syncpoint_count + 1)); |
|
|
|
|
if (!syncpoints || !has_keyframe) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
for (i = 0; i < syncpoint_count; i++) { |
|
|
|
|
syncpoints[i] = ffio_read_varlen(bc); |
|
|
|
|
if (syncpoints[i] <= 0) |
|
|
|
|