From 3035d21b5a77df0e9531df397fc06d59488996c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Beauz=C3=A9e-Luyssen?= Date: Sun, 1 Feb 2015 19:19:47 +0100 Subject: [PATCH] nutdec: Check memory allocations Signed-off-by: Vittorio Giovara --- libavformat/nutdec.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c index 00da7dded0..87d29f1cc4 100644 --- a/libavformat/nutdec.c +++ b/libavformat/nutdec.c @@ -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)