[0.11] gst-plugins-bad: codecparsers: Add checks to input, and fix size checking

Wim Taymans wtay at kemper.freedesktop.org
Mon Sep 26 13:32:36 PDT 2011


Module: gst-plugins-bad
Branch: 0.11
Commit: 7d5bd1992ecfab4d511199b8b70ff13169cf2a5f
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=7d5bd1992ecfab4d511199b8b70ff13169cf2a5f

Author: Edward Hervey <edward.hervey at collabora.co.uk>
Date:   Mon Sep 19 16:32:58 2011 +0200

codecparsers: Add checks to input, and fix size checking

---

 gst-libs/gst/codecparsers/gstmpegvideoparser.c |   25 +++++++++++++++++------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/gst-libs/gst/codecparsers/gstmpegvideoparser.c b/gst-libs/gst/codecparsers/gstmpegvideoparser.c
index 1a2ddcc..e871017 100644
--- a/gst-libs/gst/codecparsers/gstmpegvideoparser.c
+++ b/gst-libs/gst/codecparsers/gstmpegvideoparser.c
@@ -324,7 +324,8 @@ gst_mpeg_video_parse (guint8 * data, gsize size, guint offset)
   gint off, rsize;
   GstByteReader br;
   GList *ret = NULL;
-  size = size - offset;
+
+  size -= offset;
 
   if (!initialized) {
     GST_DEBUG_CATEGORY_INIT (mpegvideo_parser_debug, "codecparsers_mpegvideo",
@@ -388,9 +389,11 @@ gst_mpeg_video_parse_sequence_header (GstMpegVideoSequenceHdr * seqhdr,
 {
   GstBitReader br;
 
-  size = size - offset;
+  g_return_val_if_fail (seqhdr != NULL, FALSE);
+
+  size -= offset;
 
-  if (size - offset < 4)
+  if (size < 4)
     return FALSE;
 
   gst_bit_reader_init (&br, &data[offset], size);
@@ -415,7 +418,9 @@ gst_mpeg_video_parse_sequence_extension (GstMpegVideoSequenceExt * seqext,
 {
   GstBitReader br;
 
-  size = size - offset;
+  g_return_val_if_fail (seqext != NULL, FALSE);
+
+  size -= offset;
 
   if (size < 6) {
     GST_DEBUG ("not enough bytes to parse the extension");
@@ -482,7 +487,9 @@ gst_mpeg_video_parse_quant_matrix_extension (GstMpegVideoQuantMatrixExt * quant,
   guint8 i;
   GstBitReader br;
 
-  size = size - offset;
+  g_return_val_if_fail (quant != NULL, FALSE);
+
+  size -= offset;
 
   if (size < 1) {
     GST_DEBUG ("not enough bytes to parse the extension");
@@ -553,7 +560,9 @@ gst_mpeg_video_parse_picture_extension (GstMpegVideoPictureExt * ext,
 {
   GstBitReader br;
 
-  size = size - offset;
+  g_return_val_if_fail (ext != NULL, FALSE);
+
+  size -= offset;
 
   if (size < 4)
     return FALSE;
@@ -724,7 +733,9 @@ gst_mpeg_video_parse_gop (GstMpegVideoGop * gop, guint8 * data,
 {
   GstBitReader br;
 
-  size = size - offset;
+  g_return_val_if_fail (gop != NULL, FALSE);
+
+  size -= offset;
 
   if (size < 4)
     return FALSE;



More information about the gstreamer-commits mailing list