TIME_ARGS: Catch bad input. Fixes #579455
authorThomas Vander Stichele <thomas (at) apestaart (dot) org>
Sat, 18 Apr 2009 21:52:08 +0000 (23:52 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Thu, 23 Apr 2009 15:08:04 +0000 (17:08 +0200)
gst/gst.override
testsuite/test_gst.py [new file with mode: 0644]

index c6e5410..c83c9e2 100644 (file)
@@ -880,6 +880,9 @@ _wrap_GST_TIME_ARGS(PyObject *self, PyObject *args, PyObject *kwargs)
     if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:time_to_string", kwlist, &py_time))
         return NULL;
     time = PyInt_AsUnsignedLongLongMask(py_time);
+    if (PyErr_Occurred ())
+      return NULL;
+
     if (GST_CLOCK_TIME_IS_VALID (time))
        ret = g_strdup_printf("%"GST_TIME_FORMAT, GST_TIME_ARGS(time));
     else
diff --git a/testsuite/test_gst.py b/testsuite/test_gst.py
new file mode 100644 (file)
index 0000000..6ad50f4
--- /dev/null
@@ -0,0 +1,36 @@
+# -*- Mode: Python -*-
+# vi:si:et:sw=4:sts=4:ts=4
+#
+# Copyright (C) 2009 Thomas Vander Stichele
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+
+from common import gst, TestCase, unittest
+
+class TimeArgsTest(TestCase):
+    def testNoneTime(self):
+        self.assertRaises(TypeError, gst.TIME_ARGS, None)
+
+    def testStringTime(self):
+        self.assertRaises(TypeError, gst.TIME_ARGS, "String")
+
+    def testClockTimeNone(self):
+        self.assertEquals(gst.TIME_ARGS(gst.CLOCK_TIME_NONE), 'CLOCK_TIME_NONE')
+
+    def testOneSecond(self):
+        self.assertEquals(gst.TIME_ARGS(gst.SECOND), '0:00:01.000000000')
+
+if __name__ == "__main__":
+    unittest.main()