From: Carl Eugen Hoyos Date: Sat, 13 Jul 2013 12:19:26 +0000 (+0200) Subject: rmdec: Forward error messages from rm_assemble_video_frame() to the caller. X-Git-Tag: android-x86-4.4-r1~2366 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=aecb9d39bc66818dd96956b7248302bf0de6d54d;p=android-x86%2Fexternal-ffmpeg.git rmdec: Forward error messages from rm_assemble_video_frame() to the caller. Fixes the cause of a null pointer dereference on oom described in ticket #2724. --- diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index 70ae8099e9..acfde844be 100644 --- a/libavformat/rmdec.c +++ b/libavformat/rmdec.c @@ -776,11 +776,13 @@ ff_rm_parse_packet (AVFormatContext *s, AVIOContext *pb, int *seq, int flags, int64_t timestamp) { RMDemuxContext *rm = s->priv_data; + int ret; if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) { rm->current_stream= st->id; - if(rm_assemble_video_frame(s, pb, rm, ast, pkt, len, seq, ×tamp)) - return -1; //got partial frame + ret = rm_assemble_video_frame(s, pb, rm, ast, pkt, len, seq, ×tamp); + if(ret) + return ret; //got partial frame or error } else if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) { if ((ast->deint_id == DEINT_ID_GENR) || (ast->deint_id == DEINT_ID_INT4) || @@ -927,6 +929,8 @@ static int rm_read_packet(AVFormatContext *s, AVPacket *pkt) res = ff_rm_parse_packet (s, s->pb, st, st->priv_data, len, pkt, &seq, flags, timestamp); + if (res < -1) + return res; if((flags&2) && (seq&0x7F) == 1) av_add_index_entry(st, pos, timestamp, 0, 0, AVINDEX_KEYFRAME); if (res)