mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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
This commit is contained in:
parent
ddbb7c9be2
commit
9f449d57c7
@ -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 {
|
|||||||
|
|
||||||
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,
|
||||||
|
Loading…
Reference in New Issue
Block a user