提交 09d9672a 编写于 作者: M Michael Niedermayer

fix gsize=0 / -1 case (if(<24) goto fail) before it is not a good idea

Originally committed as revision 8320 to svn://svn.ffmpeg.org/ffmpeg/trunk
上级 e1315fb1
......@@ -167,6 +167,16 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
print_guid(&g);
printf(" size=0x%"PRIx64"\n", gsize);
#endif
if (!memcmp(&g, &data_header, sizeof(GUID))) {
asf->data_object_offset = url_ftell(pb);
// if not streaming, gsize is not unlimited (how?), and there is enough space in the file..
if (!(asf->hdr.flags & 0x01) && gsize >= 100) {
asf->data_object_size = gsize - 24;
} else {
asf->data_object_size = (uint64_t)-1;
}
break;
}
if (gsize < 24)
goto fail;
if (!memcmp(&g, &file_header, sizeof(GUID))) {
......@@ -327,15 +337,6 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
}
pos2 = url_ftell(pb);
url_fskip(pb, gsize - (pos2 - pos1 + 24));
} else if (!memcmp(&g, &data_header, sizeof(GUID))) {
asf->data_object_offset = url_ftell(pb);
// if not streaming, gsize is not unlimited (how?), and there is enough space in the file..
if (!(asf->hdr.flags & 0x01) && gsize != (uint64_t)-1 && gsize >= 24) {
asf->data_object_size = gsize - 24;
} else {
asf->data_object_size = (uint64_t)-1;
}
break;
} else if (!memcmp(&g, &comment_header, sizeof(GUID))) {
int len1, len2, len3, len4, len5;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册