From d8da5358a6ad87c7e8fa95fd941446d4d288f250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 30 Jun 2022 09:02:00 +0300 Subject: [PATCH] sdpmessage: Don't set SDP medias from caps without media/payload/clock-rate fields Previously it would've silently failed reading the payload/clock-rate and instead would've used some random value that happened to be on the stack. Part-of: --- .../gst-libs/gst/sdp/gstsdpmessage.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c b/subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c index a546647f47..fde98583d8 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c +++ b/subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c @@ -3814,15 +3814,25 @@ gst_sdp_media_set_media_from_caps (const GstCaps * caps, GstSDPMedia * media) /* get media type and payload for the m= line */ caps_str = gst_structure_get_string (s, "media"); + if (!caps_str) { + GST_ERROR ("ignoring stream without media type"); + goto error; + } gst_sdp_media_set_media (media, caps_str); - gst_structure_get_int (s, "payload", &caps_pt); + if (!gst_structure_get_int (s, "payload", &caps_pt)) { + GST_ERROR ("ignoring stream without payload type"); + goto error; + } tmp = g_strdup_printf ("%d", caps_pt); gst_sdp_media_add_format (media, tmp); g_free (tmp); /* get clock-rate, media type and params for the rtpmap attribute */ - gst_structure_get_int (s, "clock-rate", &caps_rate); + if (!gst_structure_get_int (s, "clock-rate", &caps_rate)) { + GST_ERROR ("ignoring stream without payload type"); + goto error; + } caps_enc = gst_structure_get_string (s, "encoding-name"); caps_params = gst_structure_get_string (s, "encoding-params");