Commit 4172951b authored by Reimar Döffinger's avatar Reimar Döffinger

Return an error when get_buffer reads none or only partial data instead

of returning packets with uninitialized data.
Returning partial packets as for other demuxers is problematice due to
packet scrambling and thus is not done.

Originally committed as revision 25931 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 3c3ef81b
...@@ -848,6 +848,7 @@ static int ff_asf_parse_packet(AVFormatContext *s, ByteIOContext *pb, AVPacket * ...@@ -848,6 +848,7 @@ static int ff_asf_parse_packet(AVFormatContext *s, ByteIOContext *pb, AVPacket *
ASFContext *asf = s->priv_data; ASFContext *asf = s->priv_data;
ASFStream *asf_st = 0; ASFStream *asf_st = 0;
for (;;) { for (;;) {
int ret;
if(url_feof(pb)) if(url_feof(pb))
return AVERROR_EOF; return AVERROR_EOF;
if (asf->packet_size_left < FRAME_HEADER_SIZE if (asf->packet_size_left < FRAME_HEADER_SIZE
...@@ -950,8 +951,10 @@ static int ff_asf_parse_packet(AVFormatContext *s, ByteIOContext *pb, AVPacket * ...@@ -950,8 +951,10 @@ static int ff_asf_parse_packet(AVFormatContext *s, ByteIOContext *pb, AVPacket *
continue; continue;
} }
get_buffer(pb, asf_st->pkt.data + asf->packet_frag_offset, ret = get_buffer(pb, asf_st->pkt.data + asf->packet_frag_offset,
asf->packet_frag_size); asf->packet_frag_size);
if (ret != asf->packet_frag_size)
return ret >= 0 ? AVERROR_EOF : ret;
if (s->key && s->keylen == 20) if (s->key && s->keylen == 20)
ff_asfcrypt_dec(s->key, asf_st->pkt.data + asf->packet_frag_offset, ff_asfcrypt_dec(s->key, asf_st->pkt.data + asf->packet_frag_offset,
asf->packet_frag_size); asf->packet_frag_size);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment