avutil/lzo: Fix integer overflow
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 20 Jun 2014 01:15:28 +0000 (03:15 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 23 Jun 2014 12:18:20 +0000 (14:18 +0200)
Embargoed-till: 2014-06-27 requested by researcher, but embargo broken by libav today (git and mailing list)

Fixes: LMS-2014-06-16-4
Found-by: "Don A. Bailey" <donb@securitymouse.com>
See: ccda51b14c0fcae2fad73a24872dce75a7964996
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavutil/lzo.c

index 221a66b..82dba94 100644 (file)
@@ -65,8 +65,13 @@ static inline int get_len(LZOContext *c, int x, int mask)
 {
     int cnt = x & mask;
     if (!cnt) {
-        while (!(x = get_byte(c)))
+        while (!(x = get_byte(c))) {
+            if (cnt >= INT_MAX - 1000) {
+                c->error |= AV_LZO_ERROR;
+                break;
+            }
             cnt += 255;
+        }
         cnt += mask + x;
     }
     return cnt;