|
|
ee39b2 |
From d62cecf193d6bf3b16fe91d725f4514161f602c3 Mon Sep 17 00:00:00 2001
|
|
|
ee39b2 |
From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
|
|
|
ee39b2 |
Date: Wed, 3 Mar 2021 11:31:52 +0200
|
|
|
ee39b2 |
Subject: [PATCH] matroskademux: Initialize track context out parameter to NULL
|
|
|
ee39b2 |
before parsing
|
|
|
ee39b2 |
|
|
|
ee39b2 |
Various error return paths don't set it to NULL and callers are only
|
|
|
ee39b2 |
checking if the pointer is NULL. As it's allocated on the stack this
|
|
|
ee39b2 |
usually contains random stack memory, and more often than not the memory
|
|
|
ee39b2 |
of a previously parsed track.
|
|
|
ee39b2 |
|
|
|
ee39b2 |
This then causes all kinds of memory corruptions further down the line.
|
|
|
ee39b2 |
|
|
|
ee39b2 |
Thanks to Natalie Silvanovich for reporting.
|
|
|
ee39b2 |
|
|
|
ee39b2 |
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/858
|
|
|
ee39b2 |
|
|
|
ee39b2 |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/904>
|
|
|
ee39b2 |
---
|
|
|
ee39b2 |
gst/matroska/matroska-demux.c | 2 ++
|
|
|
ee39b2 |
1 file changed, 2 insertions(+)
|
|
|
ee39b2 |
|
|
|
ee39b2 |
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
|
|
|
ee39b2 |
index b2cd9b5d4..4eb3d2a9f 100644
|
|
|
ee39b2 |
--- a/gst/matroska/matroska-demux.c
|
|
|
ee39b2 |
+++ b/gst/matroska/matroska-demux.c
|
|
|
ee39b2 |
@@ -660,6 +660,8 @@ gst_matroska_demux_parse_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml,
|
|
|
ee39b2 |
|
|
|
ee39b2 |
DEBUG_ELEMENT_START (demux, ebml, "TrackEntry");
|
|
|
ee39b2 |
|
|
|
ee39b2 |
+ *dest_context = NULL;
|
|
|
ee39b2 |
+
|
|
|
ee39b2 |
/* start with the master */
|
|
|
ee39b2 |
if ((ret = gst_ebml_read_master (ebml, &id)) != GST_FLOW_OK) {
|
|
|
ee39b2 |
DEBUG_ELEMENT_STOP (demux, ebml, "TrackEntry", ret);
|
|
|
ee39b2 |
--
|
|
|
ee39b2 |
GitLab
|
|
|
ee39b2 |
|