diff --git a/libavcodec/lzo.c b/libavcodec/lzo.c index 54a34c2bf2..5fd1f4cc06 100644 --- a/libavcodec/lzo.c +++ b/libavcodec/lzo.c @@ -182,6 +182,8 @@ int lzo1x_decode(void *out, int *outlen, void *in, int *inlen) { x = GETB(c); if (x < 16) c.error |= LZO_ERROR; } + if (c.in > c.in_end) + c.error |= LZO_INPUT_DEPLETED; while (!c.error) { int cnt, back; if (x > 15) { @@ -209,6 +211,10 @@ int lzo1x_decode(void *out, int *outlen, void *in, int *inlen) { cnt = get_len(&c, x, 15); copy(&c, cnt + 3); x = GETB(c); + if (c.in > c.in_end) { + c.error |= LZO_INPUT_DEPLETED; + continue; + } if (x >> 4) continue; cnt = 1;