Guard against output buffer overflows
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 22 Sep 2007 09:21:43 +0000 (09:21 +0000)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 22 Sep 2007 09:21:43 +0000 (09:21 +0000)
Originally committed as revision 10548 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/dpcm.c

index 0ce05c821acd19a3c962be4b2590d979e58ec036..c4a127d7c71b71f8357c8ab5371c6efcd295eda0 100644 (file)
@@ -173,6 +173,10 @@ static int dpcm_decode_frame(AVCodecContext *avctx,
     if (!buf_size)
         return 0;
 
+    // almost every DPCM variant expands one byte of data into two
+    if(*data_size/2 < buf_size)
+        return -1;
+
     switch(avctx->codec->id) {
 
     case CODEC_ID_ROQ_DPCM:
@@ -256,6 +260,8 @@ static int dpcm_decode_frame(AVCodecContext *avctx,
     case CODEC_ID_SOL_DPCM:
         in = 0;
         if (avctx->codec_tag != 3) {
+            if(*data_size/4 < buf_size)
+                return -1;
             while (in < buf_size) {
                 int n1, n2;
                 n1 = (buf[in] >> 4) & 0xF;