From c58a2d9bbb8136f9e11682a1574533f37fe15e3f Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Thu, 12 Jun 2014 10:31:47 +0100 Subject: [PATCH] rtpdvpay: catch failures to map buffer Coverity 1139741 --- gst/rtp/gstrtpdvpay.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/gst/rtp/gstrtpdvpay.c b/gst/rtp/gstrtpdvpay.c index d779f12303..db75cf6593 100644 --- a/gst/rtp/gstrtpdvpay.c +++ b/gst/rtp/gstrtpdvpay.c @@ -300,7 +300,12 @@ gst_rtp_dv_pay_handle_buffer (GstRTPBasePayload * basepayload, max_payload_size = ((GST_RTP_BASE_PAYLOAD_MTU (rtpdvpay) - hdrlen) / 80) * 80; /* The length of the buffer to transmit. */ - gst_buffer_map (buffer, &map, GST_MAP_READ); + if (!gst_buffer_map (buffer, &map, GST_MAP_READ)) { + GST_ELEMENT_ERROR (rtpdvpay, CORE, FAILED, + (NULL), ("Failed to map buffer")); + gst_buffer_unref (buffer); + return GST_FLOW_ERROR; + } data = map.data; size = map.size; @@ -327,7 +332,13 @@ gst_rtp_dv_pay_handle_buffer (GstRTPBasePayload * basepayload, outbuf = gst_rtp_buffer_new_allocate (max_payload_size, 0, 0); GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buffer); - gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp); + if (!gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp)) { + gst_buffer_unref (outbuf); + GST_ELEMENT_ERROR (rtpdvpay, CORE, FAILED, + (NULL), ("Failed to map RTP buffer")); + ret = GST_FLOW_ERROR; + goto beach; + } dest = gst_rtp_buffer_get_payload (&rtp); filled = 0; } @@ -368,6 +379,8 @@ gst_rtp_dv_pay_handle_buffer (GstRTPBasePayload * basepayload, outbuf = NULL; } } + +beach: gst_buffer_unmap (buffer, &map); gst_buffer_unref (buffer);