rtpL16depay: don't crash if data is not modulo channels*width

This commit is contained in:
Havard Graff 2016-11-30 15:55:01 +01:00 committed by GStreamer Merge Bot
parent 0998c16432
commit a7c887b197

View file

@ -232,6 +232,7 @@ gst_rtp_L16_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
GstBuffer *outbuf; GstBuffer *outbuf;
gint payload_len; gint payload_len;
gboolean marker; gboolean marker;
GstAudioInfo *info;
rtpL16depay = GST_RTP_L16_DEPAY (depayload); rtpL16depay = GST_RTP_L16_DEPAY (depayload);
@ -251,10 +252,15 @@ gst_rtp_L16_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
} }
outbuf = gst_buffer_make_writable (outbuf); outbuf = gst_buffer_make_writable (outbuf);
info = &rtpL16depay->info;
if (payload_len % info->bpf != 0)
goto wrong_payload_size;
if (rtpL16depay->order && if (rtpL16depay->order &&
!gst_audio_buffer_reorder_channels (outbuf, !gst_audio_buffer_reorder_channels (outbuf,
rtpL16depay->info.finfo->format, rtpL16depay->info.channels, info->finfo->format, info->channels,
rtpL16depay->info.position, rtpL16depay->order->pos)) { info->position, rtpL16depay->order->pos)) {
goto reorder_failed; goto reorder_failed;
} }
@ -269,6 +275,12 @@ empty_packet:
("Empty Payload."), (NULL)); ("Empty Payload."), (NULL));
return NULL; return NULL;
} }
wrong_payload_size:
{
GST_ELEMENT_WARNING (rtpL16depay, STREAM, DECODE,
("Wrong Payload Size."), (NULL));
return NULL;
}
reorder_failed: reorder_failed:
{ {
GST_ELEMENT_ERROR (rtpL16depay, STREAM, DECODE, GST_ELEMENT_ERROR (rtpL16depay, STREAM, DECODE,