Commit 9f449d57 authored by Reimar Döffinger's avatar Reimar Döffinger

Check the index validity more thoroughly for the c93 probe function.

In particular, check that length of the first index entries is not 0 since
that is interpreted "end of file" and makes no sense in the very first entries.

Originally committed as revision 19843 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent ddbb7c9b
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "avformat.h" #include "avformat.h"
#include "voc.h" #include "voc.h"
#include "libavutil/intreadwrite.h"
typedef struct { typedef struct {
uint16_t index; uint16_t index;
...@@ -43,13 +44,16 @@ typedef struct { ...@@ -43,13 +44,16 @@ typedef struct {
static int probe(AVProbeData *p) static int probe(AVProbeData *p)
{ {
if (p->buf[0] == 0x01 && p->buf[1] == 0x00 && int i;
p->buf[4] == 0x01 + p->buf[2] && int index = 1;
p->buf[8] == p->buf[4] + p->buf[6] && if (p->buf_size < 16)
p->buf[12] == p->buf[8] + p->buf[10]) return 0;
return AVPROBE_SCORE_MAX; for (i = 0; i < 16; i += 4) {
if (AV_RL16(p->buf + i) != index || !p->buf[i + 2] || !p->buf[i + 3])
return 0; return 0;
index += p->buf[i + 2];
}
return AVPROBE_SCORE_MAX;
} }
static int read_header(AVFormatContext *s, static int read_header(AVFormatContext *s,
......
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