mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Merge commit 'ca6c3f2c53be70aa3c38e8f1292809db89ea1ba6'
* commit 'ca6c3f2c53be70aa3c38e8f1292809db89ea1ba6': lzo: fix overflow checking in copy_backptr() flacdec: simplify bounds checking in flac_probe() atrac3: avoid oversized shifting in decode_bytes() Conflicts: libavformat/flacdec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
aef816f957
@ -164,7 +164,10 @@ static int decode_bytes(const uint8_t *input, uint8_t *out, int bytes)
|
|||||||
|
|
||||||
off = (intptr_t)input & 3;
|
off = (intptr_t)input & 3;
|
||||||
buf = (const uint32_t *)(input - off);
|
buf = (const uint32_t *)(input - off);
|
||||||
c = av_be2ne32((0x537F6103 >> (off * 8)) | (0x537F6103 << (32 - (off * 8))));
|
if (off)
|
||||||
|
c = av_be2ne32((0x537F6103U >> (off * 8)) | (0x537F6103U << (32 - (off * 8))));
|
||||||
|
else
|
||||||
|
c = av_be2ne32(0x537F6103U);
|
||||||
bytes += 3 + off;
|
bytes += 3 + off;
|
||||||
for (i = 0; i < bytes / 4; i++)
|
for (i = 0; i < bytes / 4; i++)
|
||||||
output[i] = c ^ buf[i];
|
output[i] = c ^ buf[i];
|
||||||
|
@ -278,11 +278,9 @@ fail:
|
|||||||
|
|
||||||
static int flac_probe(AVProbeData *p)
|
static int flac_probe(AVProbeData *p)
|
||||||
{
|
{
|
||||||
const uint8_t *bufptr = p->buf;
|
if (p->buf_size < 4 || memcmp(p->buf, "fLaC", 4))
|
||||||
const uint8_t *end = p->buf + p->buf_size;
|
return 0;
|
||||||
|
return AVPROBE_SCORE_MAX/2;
|
||||||
if(bufptr > end-4 || memcmp(bufptr, "fLaC", 4)) return 0;
|
|
||||||
else return AVPROBE_SCORE_MAX/2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AVInputFormat ff_flac_demuxer = {
|
AVInputFormat ff_flac_demuxer = {
|
||||||
|
@ -110,9 +110,8 @@ static inline void copy(LZOContext *c, int cnt)
|
|||||||
*/
|
*/
|
||||||
static inline void copy_backptr(LZOContext *c, int back, int cnt)
|
static inline void copy_backptr(LZOContext *c, int back, int cnt)
|
||||||
{
|
{
|
||||||
register const uint8_t *src = &c->out[-back];
|
|
||||||
register uint8_t *dst = c->out;
|
register uint8_t *dst = c->out;
|
||||||
if (src < c->out_start || src > dst) {
|
if (dst - c->out_start < back) {
|
||||||
c->error |= AV_LZO_INVALID_BACKPTR;
|
c->error |= AV_LZO_INVALID_BACKPTR;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user