codecparsers: mpegvideoparser: fix buffer size check
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 21 May 2012 13:24:25 +0000 (15:24 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 21 May 2012 13:29:37 +0000 (15:29 +0200)
... to mind unsigned integer wrap

Based on patch by Alban Browaeys <prahal@yahoo.com>

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=673436

gst-libs/gst/codecparsers/gstmpegvideoparser.c

index ec8c934..5c84268 100644 (file)
@@ -298,19 +298,19 @@ gst_mpeg_video_parse (const guint8 * data, gsize size, guint offset)
   GstByteReader br;
   GList *ret = NULL;
 
-  size -= offset;
-
   if (!initialized) {
     GST_DEBUG_CATEGORY_INIT (mpegvideo_parser_debug, "codecparsers_mpegvideo",
         0, "Mpegvideo parser library");
     initialized = TRUE;
   }
 
-  if (size <= 0) {
+  if (size <= offset) {
     GST_DEBUG ("Can't parse from offset %d, buffer is to small", offset);
     return NULL;
   }
 
+  size -= offset;
+
   gst_byte_reader_init (&br, &data[offset], size);
 
   off = scan_for_start_codes (&br, 0, size);