diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2006-11-27 16:26:50 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2006-11-27 16:26:50 +0000 |
commit | 9e782fdc7e3be9fcf6e621260391ccfe830ac41f (patch) | |
tree | b15aa66f8deeb09795d130a7255cc5935d337a47 /gst/rtp | |
parent | 13ee276c8d59d5f7ab71fb9122fced32dccba9f7 (diff) |
gst/rtp/gstrtpmpadepay.c: Small buffer overflow fix and improve debugging.
Original commit message from CVS:
* gst/rtp/gstrtpmpadepay.c: (gst_rtp_mpa_depay_chain):
Small buffer overflow fix and improve debugging.
Diffstat (limited to 'gst/rtp')
-rw-r--r-- | gst/rtp/gstrtpmpadepay.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gst/rtp/gstrtpmpadepay.c b/gst/rtp/gstrtpmpadepay.c index 3dcc981e..bce5e005 100644 --- a/gst/rtp/gstrtpmpadepay.c +++ b/gst/rtp/gstrtpmpadepay.c @@ -174,7 +174,8 @@ gst_rtp_mpa_depay_chain (GstPad * pad, GstBuffer * buf) payload_len = gst_rtp_buffer_get_payload_len (buf); payload = gst_rtp_buffer_get_payload (buf); - frag_offset = (payload[2] << 8) | payload[3]; + if (payload_len <= 4) + goto empty_packet; /* strip off header * @@ -184,6 +185,8 @@ gst_rtp_mpa_depay_chain (GstPad * pad, GstBuffer * buf) * | MBZ | Frag_offset | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ + frag_offset = (payload[2] << 8) | payload[3]; + payload_len -= 4; payload += 4; @@ -195,7 +198,8 @@ gst_rtp_mpa_depay_chain (GstPad * pad, GstBuffer * buf) memcpy (GST_BUFFER_DATA (outbuf), payload, payload_len); - GST_DEBUG ("gst_rtp_mpa_depay_chain: pushing buffer of size %d", + GST_DEBUG_OBJECT (rtpmpadepay, + "gst_rtp_mpa_depay_chain: pushing buffer of size %d", GST_BUFFER_SIZE (outbuf)); gst_buffer_unref (buf); @@ -209,16 +213,22 @@ gst_rtp_mpa_depay_chain (GstPad * pad, GstBuffer * buf) bad_packet: { - GST_DEBUG ("Packet did not validate"); + GST_DEBUG_OBJECT (rtpmpadepay, "Packet did not validate"); gst_buffer_unref (buf); return GST_FLOW_ERROR; } bad_payload: { - GST_DEBUG ("Unexpected payload type %u", pt); + GST_DEBUG_OBJECT (rtpmpadepay, "Unexpected payload type %u", pt); gst_buffer_unref (buf); return GST_FLOW_ERROR; } +empty_packet: + { + GST_DEBUG_OBJECT (rtpmpadepay, "Empty payload"); + gst_buffer_unref (buf); + return GST_FLOW_OK; + } } static void |