Browse code

mtv: improve header check and avoid division by zero

CC: libav-stable@libav.org
Bug-Id: CID 732203 / CID 732204

Vittorio Giovara authored on 2014/10/24 21:15:36
Showing 1 changed files
... ...
@@ -96,14 +96,17 @@ static int mtv_read_header(AVFormatContext *s)
96 96
 
97 97
     /* Calculate width and height if missing from header */
98 98
 
99
-    if(!mtv->img_width)
99
+    if (!mtv->img_width && mtv->img_height > 0 && mtv->img_bpp >= 8)
100 100
         mtv->img_width=mtv->img_segment_size / (mtv->img_bpp>>3)
101 101
                         / mtv->img_height;
102 102
 
103
-    if(!mtv->img_height)
103
+    if (!mtv->img_height && mtv->img_width > 0 && mtv->img_bpp >= 8)
104 104
         mtv->img_height=mtv->img_segment_size / (mtv->img_bpp>>3)
105 105
                         / mtv->img_width;
106 106
 
107
+    if (!mtv->img_width || !mtv->img_height)
108
+        return AVERROR_INVALIDDATA;
109
+
107 110
     avio_skip(pb, 4);
108 111
     audio_subsegments = avio_rl16(pb);
109 112