$NetBSD: patch-Lib_ctypes_test_test__parameters.py,v 1.1 2021/10/10 03:00:59 gutteridge Exp $ Fix CVE-2021-3177: Replace snprintf with Python unicode formatting in ctypes param reprs Via Fedora: https://src.fedoraproject.org/rpms/python2.7/blob/rawhide/f/00357-CVE-2021-3177.patch --- Lib/ctypes/test/test_parameters.py.orig 2020-04-19 21:13:39.000000000 +0000 +++ Lib/ctypes/test/test_parameters.py @@ -206,6 +206,49 @@ class SimpleTypesTestCase(unittest.TestC with self.assertRaises(ZeroDivisionError): WorseStruct().__setstate__({}, b'foo') + def test_parameter_repr(self): + from ctypes import ( + c_bool, + c_char, + c_wchar, + c_byte, + c_ubyte, + c_short, + c_ushort, + c_int, + c_uint, + c_long, + c_ulong, + c_longlong, + c_ulonglong, + c_float, + c_double, + c_longdouble, + c_char_p, + c_wchar_p, + c_void_p, + ) + self.assertRegexpMatches(repr(c_bool.from_param(True)), r"^$") + self.assertEqual(repr(c_char.from_param('a')), "") + self.assertRegexpMatches(repr(c_wchar.from_param('a')), r"^$") + self.assertEqual(repr(c_byte.from_param(98)), "") + self.assertEqual(repr(c_ubyte.from_param(98)), "") + self.assertEqual(repr(c_short.from_param(511)), "") + self.assertEqual(repr(c_ushort.from_param(511)), "") + self.assertRegexpMatches(repr(c_int.from_param(20000)), r"^$") + self.assertRegexpMatches(repr(c_uint.from_param(20000)), r"^$") + self.assertRegexpMatches(repr(c_long.from_param(20000)), r"^$") + self.assertRegexpMatches(repr(c_ulong.from_param(20000)), r"^$") + self.assertRegexpMatches(repr(c_longlong.from_param(20000)), r"^$") + self.assertRegexpMatches(repr(c_ulonglong.from_param(20000)), r"^$") + self.assertEqual(repr(c_float.from_param(1.5)), "") + self.assertEqual(repr(c_double.from_param(1.5)), "") + self.assertEqual(repr(c_double.from_param(1e300)), "") + self.assertRegexpMatches(repr(c_longdouble.from_param(1.5)), r"^$") + self.assertRegexpMatches(repr(c_char_p.from_param(b'hihi')), "^$") + self.assertRegexpMatches(repr(c_wchar_p.from_param('hihi')), "^$") + self.assertRegexpMatches(repr(c_void_p.from_param(0x12)), r"^$") + ################################################################ if __name__ == '__main__':