matroskademux: Don't take data out of an empty adapter when processing WavPack frames

Thanks to Antonio Morales for finding and reporting the issue.

Fixes GHSL-2024-249
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3865

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>
This commit is contained in:
Sebastian Dröge 2024-09-30 19:04:51 +03:00 committed by GStreamer Marge Bot
parent 8aa1c185cf
commit 395f2b3ffd

View file

@ -4042,11 +4042,16 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
} }
gst_buffer_unmap (*buf, &map); gst_buffer_unmap (*buf, &map);
newbuf = gst_adapter_take_buffer (adapter, gst_adapter_available (adapter)); size = gst_adapter_available (adapter);
g_object_unref (adapter); if (size > 0) {
newbuf = gst_adapter_take_buffer (adapter, size);
gst_buffer_copy_into (newbuf, *buf, gst_buffer_copy_into (newbuf, *buf,
GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS, 0, -1); GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS, 0, -1);
} else {
newbuf = NULL;
}
g_object_unref (adapter);
gst_buffer_unref (*buf); gst_buffer_unref (*buf);
*buf = newbuf; *buf = newbuf;