mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 17:20:36 +00:00
matroskademux: Only unmap GstMapInfo in WavPack header extraction error paths if previously mapped
Thanks to Antonio Morales for finding and reporting the issue. Fixes GHSL-2024-197 Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3863 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>
This commit is contained in:
parent
0870e87c7c
commit
c0dceda8e9
1 changed files with 2 additions and 2 deletions
|
@ -3891,7 +3891,6 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
|
||||||
GstMatroskaTrackAudioContext *audiocontext =
|
GstMatroskaTrackAudioContext *audiocontext =
|
||||||
(GstMatroskaTrackAudioContext *) stream;
|
(GstMatroskaTrackAudioContext *) stream;
|
||||||
GstBuffer *newbuf = NULL;
|
GstBuffer *newbuf = NULL;
|
||||||
GstMapInfo map, outmap;
|
|
||||||
guint8 *buf_data, *data;
|
guint8 *buf_data, *data;
|
||||||
Wavpack4Header wvh;
|
Wavpack4Header wvh;
|
||||||
|
|
||||||
|
@ -3908,11 +3907,11 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
|
||||||
|
|
||||||
if (audiocontext->channels <= 2) {
|
if (audiocontext->channels <= 2) {
|
||||||
guint32 block_samples, tmp;
|
guint32 block_samples, tmp;
|
||||||
|
GstMapInfo outmap;
|
||||||
gsize size = gst_buffer_get_size (*buf);
|
gsize size = gst_buffer_get_size (*buf);
|
||||||
|
|
||||||
if (size < 4) {
|
if (size < 4) {
|
||||||
GST_ERROR_OBJECT (element, "Too small wavpack buffer");
|
GST_ERROR_OBJECT (element, "Too small wavpack buffer");
|
||||||
gst_buffer_unmap (*buf, &map);
|
|
||||||
return GST_FLOW_ERROR;
|
return GST_FLOW_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3950,6 +3949,7 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
|
||||||
*buf = newbuf;
|
*buf = newbuf;
|
||||||
audiocontext->wvpk_block_index += block_samples;
|
audiocontext->wvpk_block_index += block_samples;
|
||||||
} else {
|
} else {
|
||||||
|
GstMapInfo map, outmap;
|
||||||
guint8 *outdata = NULL;
|
guint8 *outdata = NULL;
|
||||||
gsize buf_size, size;
|
gsize buf_size, size;
|
||||||
guint32 block_samples, flags, crc;
|
guint32 block_samples, flags, crc;
|
||||||
|
|
Loading…
Reference in a new issue