Mercurial > libavformat.hg
changeset 539:78a8cbdad269 libavformat
64bit and reading over the end of the array fixes
author | michael |
---|---|
date | Fri, 01 Oct 2004 16:00:00 +0000 |
parents | d2cc9c6f5d98 |
children | 26a477a5ebda |
files | mpeg.c |
diffstat | 1 files changed, 5 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mpeg.c Fri Oct 01 13:32:13 2004 +0000 +++ b/mpeg.c Fri Oct 01 16:00:00 2004 +0000 @@ -1026,21 +1026,18 @@ static int mpegps_probe(AVProbeData *p) { - int code, c, i; + int i; + int size= FFMIN(20, p->buf_size); + uint32_t code=0xFF; - code = 0xff; /* we search the first start code. If it is a packet start code, then we decide it is mpeg ps. We do not send highest value to give a chance to mpegts */ /* NOTE: the search range was restricted to avoid too many false detections */ - if (p->buf_size < 6) - return 0; - - for (i = 0; i < 20; i++) { - c = p->buf[i]; - code = (code << 8) | c; + for (i = 0; i < size; i++) { + code = (code << 8) | p->buf[i]; if ((code & 0xffffff00) == 0x100) { if (code == PACK_START_CODE || code == SYSTEM_HEADER_START_CODE ||