From 8e84d457b2716cafc4236b72fee1a56483900c88 Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Fri, 8 Jan 2010 11:33:02 -0300 Subject: [PATCH] avidemux: Use more glib and be safer Be safer on sscanf by limiting string format sizes. Remove useless parameter and use g_strndup. --- gst/avi/gstavidemux.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index 1457c18a21..c696636053 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -3101,7 +3101,7 @@ gst_avi_demux_add_date_tag (GstAviDemux * avi, gint y, gint m, gint d) } static void -gst_avi_demux_parse_idit_nums_only (GstAviDemux * avi, gchar * data, guint size) +gst_avi_demux_parse_idit_nums_only (GstAviDemux * avi, gchar * data) { gint y, m, d; gint ret; @@ -3147,15 +3147,15 @@ get_month_num (gchar * data, guint size) } static void -gst_avi_demux_parse_idit_text (GstAviDemux * avi, gchar * data, guint size) +gst_avi_demux_parse_idit_text (GstAviDemux * avi, gchar * data) { gint year, month, day; gint hour, min, sec; gint ret; - gchar weekday[16]; - gchar monthstr[16]; + gchar weekday[4]; + gchar monthstr[4]; - ret = sscanf (data, "%s %s %d %d:%d:%d %d", weekday, monthstr, &day, &hour, + ret = sscanf (data, "%3s %3s %d %d:%d:%d %d", weekday, monthstr, &day, &hour, &min, &sec, &year); if (ret != 7) { GST_WARNING_OBJECT (avi, "Failed to parse IDIT tag"); @@ -3195,17 +3195,15 @@ gst_avi_demux_parse_idit (GstAviDemux * avi, GstBuffer * buf) } /* make a safe copy to add a \0 to the end of the string */ - safedata = g_malloc (sizeof (gchar) * size + 1); - memcpy (safedata, data, size); - safedata[size] = '\0'; + safedata = g_strndup (data, size); /* test if the first char is a alpha or a number */ if (g_ascii_isdigit (data[0])) { - gst_avi_demux_parse_idit_nums_only (avi, safedata, size); + gst_avi_demux_parse_idit_nums_only (avi, safedata); g_free (safedata); return; } else if (g_ascii_isalpha (data[0])) { - gst_avi_demux_parse_idit_text (avi, safedata, size); + gst_avi_demux_parse_idit_text (avi, safedata); g_free (safedata); return; }