rtp: fix static array overruns in a nicer way
authorStefan Kost <ensonic@users.sf.net>
Fri, 20 May 2011 07:34:47 +0000 (10:34 +0300)
committerStefan Kost <ensonic@users.sf.net>
Fri, 20 May 2011 07:34:47 +0000 (10:34 +0300)
Use G_N_ELEMENTS instead of hard-coding the array size.

gst/rtp/gstrtpjpegpay.c
gst/rtp/gstrtpmp4adepay.c
gst/rtp/gstrtpqcelpdepay.c

index 9a34447..f223847 100644 (file)
@@ -716,7 +716,7 @@ gst_rtp_jpeg_pay_handle_buffer (GstBaseRTPPayload * basepayload,
       guint qt;
 
       qt = info[i].qt;
-      if (qt > 14)
+      if (qt >= G_N_ELEMENTS (tables))
         goto invalid_quant;
 
       qsize = tables[qt].size;
index edcd8db..664864a 100644 (file)
@@ -51,7 +51,7 @@ GST_STATIC_PAD_TEMPLATE ("sink",
         /* All optional parameters
          *
          * "profile-level-id=[1,MAX]"
-         * "config=" 
+         * "config="
          */
     )
     );
@@ -229,7 +229,7 @@ gst_rtp_mp4a_depay_setcaps (GstBaseRTPDepayload * depayload, GstCaps * caps)
 
       if (!gst_bit_reader_get_bits_uint8 (&br, &sr_idx, 4))
         goto bad_config;
-      if (sr_idx > 11 && sr_idx != 15) {
+      if (sr_idx >= G_N_ELEMENTS (aac_sample_rates) && sr_idx != 15) {
         GST_WARNING_OBJECT (depayload, "invalid sample rate index %d", sr_idx);
         goto bad_config;
       }
index e83ed2c..ce947d4 100644 (file)
@@ -164,7 +164,7 @@ static const gint frame_size[16] = {
 static gint
 get_frame_len (GstRtpQCELPDepay * depay, guint8 frame_type)
 {
-  if (frame_type > 15)
+  if (frame_type >= G_N_ELEMENTS (frame_size))
     return 0;
 
   return frame_size[frame_type];