From 1b04ec5cb24dc035100e63f91a3d1c3f35b84c15 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Wed, 19 Feb 2025 10:52:09 +0100 Subject: [PATCH] gstvalue: fix leak in gst_value_deserialize_g_date_time() gst_date_time_to_g_date_time() does not take ownership. Part-of: --- subprojects/gstreamer/gst/gstvalue.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/subprojects/gstreamer/gst/gstvalue.c b/subprojects/gstreamer/gst/gstvalue.c index e99ed745a2..4bbca33265 100644 --- a/subprojects/gstreamer/gst/gstvalue.c +++ b/subprojects/gstreamer/gst/gstvalue.c @@ -7521,6 +7521,7 @@ gst_value_serialize_g_date_time (const GValue * val) static gboolean gst_value_deserialize_g_date_time (GValue * dest, const gchar * s) { + GstDateTime *gst_datetime; GDateTime *datetime; if (!s || strcmp (s, "null") == 0) { @@ -7528,8 +7529,13 @@ gst_value_deserialize_g_date_time (GValue * dest, const gchar * s) } /* The Gstreamer iso8601 parser is a bit more forgiving */ - datetime = - gst_date_time_to_g_date_time (gst_date_time_new_from_iso8601_string (s)); + gst_datetime = gst_date_time_new_from_iso8601_string (s); + if (gst_datetime == NULL) { + GST_WARNING ("Failed to deserialize date time string '%s'", s); + return FALSE; + } + datetime = gst_date_time_to_g_date_time (gst_datetime); + gst_date_time_unref (gst_datetime); if (datetime != NULL) { g_value_take_boxed (dest, datetime); return TRUE;