From 9b224309a25f5558b923d29a10e23c48f36dd064 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 23 Jan 2006 15:02:04 +0000 Subject: [PATCH] ext/lame/gstlame.c: don't pass an uninitialised string pointer to lame if we don't know how to handle the tag type, a... Original commit message from CVS: * ext/lame/gstlame.c: (add_one_tag): Fix handling of GST_TAG_DATE (#311679), don't pass an uninitialised string pointer to lame if we don't know how to handle the tag type, and fix minor memory leak. --- ChangeLog | 7 +++++++ ext/lame/gstlame.c | 27 ++++++++++++++++++++------- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9816245f..2fdb74f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-01-23 Tim-Philipp Müller + + * ext/lame/gstlame.c: (add_one_tag): + Fix handling of GST_TAG_DATE (#311679), don't pass an + uninitialised string pointer to lame if we don't know + how to handle the tag type, and fix minor memory leak. + 2006-01-23 Tim-Philipp Müller * ext/mad/gstmad.c: (gst_mad_chain): diff --git a/ext/lame/gstlame.c b/ext/lame/gstlame.c index fde95f5e..c22f6349 100644 --- a/ext/lame/gstlame.c +++ b/ext/lame/gstlame.c @@ -580,7 +580,7 @@ static void add_one_tag (const GstTagList * list, const gchar * tag, gpointer user_data) { GstLame *lame; - gchar *value; + gchar *value = NULL; int i = 0; lame = GST_LAME (user_data); @@ -616,16 +616,29 @@ add_one_tag (const GstTagList * list, const gchar * tag, gpointer user_data) return; }; break; - default: - GST_WARNING_OBJECT (lame, "Couldn't write tag %s", tag); + default:{ + if (strcmp (tag, GST_TAG_DATE) == 0) { + GDate *date = NULL; + + if (!gst_tag_list_get_date (list, tag, &date) || date == NULL) { + GST_WARNING_OBJECT (lame, "Error reading \"%s\" tag value", tag); + } else { + value = g_strdup_printf ("%u", g_date_get_year (date)); + g_date_free (date); + } + } else { + GST_WARNING_OBJECT (lame, "Couldn't write tag %s", tag); + } break; + } } - tag_matches[i].tag_func (lame->lgf, value); - - if (gst_tag_get_type (tag) == G_TYPE_UINT) { - g_free (value); + if (value != NULL && *value != '\0') { + GST_LOG_OBJECT (lame, "Adding tag %s:%s", tag, value); + tag_matches[i].tag_func (lame->lgf, value); } + + g_free (value); } static void -- 2.34.1