datetime: just return NULL on short input strings instead of a warning
authorTim-Philipp Müller <tim@centricular.net>
Sun, 15 Jul 2012 23:24:46 +0000 (00:24 +0100)
committerTim-Philipp Müller <tim@centricular.net>
Sun, 15 Jul 2012 23:24:46 +0000 (00:24 +0100)
We want to be able to use this function on random non-NULL input,
this should not result in a runtime-critical.

gst/gstdatetime.c

index b9eaa1d..6a8f659 100644 (file)
@@ -751,12 +751,15 @@ gst_date_time_new_from_iso8601_string (const gchar * string)
   guint64 usecs;
   gint len, ret;
 
-  len = strlen (string);
+  g_return_val_if_fail (string != NULL, NULL);
+
+  GST_DEBUG ("Parsing '%s' into a datetime", string);
 
-  g_return_val_if_fail (len >= 4, NULL);
-  g_return_val_if_fail (g_ascii_isdigit (*string), NULL);
+  len = strlen (string);
 
-  GST_DEBUG ("Parsing %s into a datetime", string);
+  if (len < 4 || !g_ascii_isdigit (string[0]) || !g_ascii_isdigit (string[1])
+      || !g_ascii_isdigit (string[2]) || !g_ascii_isdigit (string[3]))
+    return NULL;
 
   ret = sscanf (string, "%04d-%02d-%02d", &year, &month, &day);