mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-13 09:45:27 +00:00
avidemux: Use more glib and be safer
Be safer on sscanf by limiting string format sizes. Remove useless parameter and use g_strndup.
This commit is contained in:
parent
c0e184641a
commit
8e84d457b2
1 changed files with 8 additions and 10 deletions
|
@ -3101,7 +3101,7 @@ gst_avi_demux_add_date_tag (GstAviDemux * avi, gint y, gint m, gint d)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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 y, m, d;
|
||||||
gint ret;
|
gint ret;
|
||||||
|
@ -3147,15 +3147,15 @@ get_month_num (gchar * data, guint size)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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 year, month, day;
|
||||||
gint hour, min, sec;
|
gint hour, min, sec;
|
||||||
gint ret;
|
gint ret;
|
||||||
gchar weekday[16];
|
gchar weekday[4];
|
||||||
gchar monthstr[16];
|
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);
|
&min, &sec, &year);
|
||||||
if (ret != 7) {
|
if (ret != 7) {
|
||||||
GST_WARNING_OBJECT (avi, "Failed to parse IDIT tag");
|
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 */
|
/* make a safe copy to add a \0 to the end of the string */
|
||||||
safedata = g_malloc (sizeof (gchar) * size + 1);
|
safedata = g_strndup (data, size);
|
||||||
memcpy (safedata, data, size);
|
|
||||||
safedata[size] = '\0';
|
|
||||||
|
|
||||||
/* test if the first char is a alpha or a number */
|
/* test if the first char is a alpha or a number */
|
||||||
if (g_ascii_isdigit (data[0])) {
|
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);
|
g_free (safedata);
|
||||||
return;
|
return;
|
||||||
} else if (g_ascii_isalpha (data[0])) {
|
} 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);
|
g_free (safedata);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue