---
annotation: this fixed all other samples sent by Andreas
libavformat/asfdec.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c
index 1790096..4e300f5 100644
--- a/libavformat/asfdec.c
+++ b/libavformat/asfdec.c
@@ -1141,7 +1141,7 @@ static int asf_read_replicated_data(AVFormatContext *s,
ASFPacket *asf_pkt)
if (!asf_pkt->data_size) {
asf_pkt->data_size = asf_pkt->size_left = avio_rl32(pb); // read media
object size
if (asf_pkt->data_size <= 0)
- return AVERROR_EOF;
+ return AVERROR_INVALIDDATA;
if ((ret = av_new_packet(&asf_pkt->avpkt, asf_pkt->data_size)) < 0)
return ret;
} else
@@ -1190,6 +1190,8 @@ static int asf_read_multiple_payload(AVFormatContext *s,
AVPacket *pkt,
skip = pay_len - asf_pkt->size_left;
pay_len = asf_pkt->size_left;
}
+ if (asf_pkt->size_left <= 0)
+ return AVERROR_INVALIDDATA;
if ((ret = avio_read(pb, p, pay_len)) < 0)
return ret;
if (s->key && s->keylen == 20)
@@ -1243,6 +1245,8 @@ static int asf_read_single_payload(AVFormatContext *s,
AVPacket *pkt,
asf_pkt->size_left -= size;
else
asf_pkt->size_left = 0;
+ if (asf_pkt->size_left <= 0)
+ return AVERROR_INVALIDDATA;
if ((ret = avio_read(pb, p, size)) < 0)
return ret;
if (s->key && s->keylen == 20)
--
2.0.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel