theoradec: Check for valid width/height
authorEdward Hervey <edward@centricular.com>
Wed, 17 Jan 2018 13:35:11 +0000 (14:35 +0100)
committerEdward Hervey <bilboed@bilboed.com>
Wed, 17 Jan 2018 13:35:51 +0000 (14:35 +0100)
If width or height are zero ... there's no video :)

ext/theora/gsttheoradec.c

index 01f738d..a506d2b 100644 (file)
@@ -465,6 +465,9 @@ theora_handle_type_packet (GstTheoraDec * dec)
   GST_DEBUG_OBJECT (dec, "after fixup frame dimension %dx%d, offset %d:%d",
       info->width, info->height, dec->info.pic_x, dec->info.pic_y);
 
+  if (info->width == 0 || info->height == 0)
+    goto invalid_dimensions;
+
   /* done */
   dec->decoder = th_decode_alloc (&dec->info, dec->setup);
 
@@ -535,6 +538,13 @@ not_negotiated:
     GST_ERROR_OBJECT (dec, "Failed to negotiate");
     return GST_FLOW_NOT_NEGOTIATED;
   }
+
+invalid_dimensions:
+  {
+    GST_ERROR_OBJECT (dec, "Invalid dimensions (width:%d, height:%d)",
+        info->width, info->height);
+    return GST_FLOW_ERROR;
+  }
 }
 
 static GstFlowReturn