From: Michael W. Hudson Date: Fri, 11 Oct 2002 13:46:32 +0000 (+0000) Subject: A test for the recent overflow-in-format-crash bug. X-Git-Tag: v2.3c1~3817 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=549ab8a98d0d5981558660b414b9c0849d644795;p=thirdparty%2FPython%2Fcpython.git A test for the recent overflow-in-format-crash bug. Only runs when sys.maxint == 2**32 - 1; different things go wrong on a 64-bit box. --- diff --git a/Lib/test/test_format.py b/Lib/test/test_format.py index be120fbd7e88..b40e8202f1b6 100644 --- a/Lib/test/test_format.py +++ b/Lib/test/test_format.py @@ -183,12 +183,12 @@ testboth("%#X", 0, "0X0") testboth("%#X", 0L, "0X0") testboth("%x", 0x42, "42") -# testboth("%x", -0x42, "ffffffbe") # Alas, that's specific to 32-bit machines +# testboth("%x", -0x42, "ffffffbe") # specific to 32-bit boxes; see below testboth("%x", 0x42L, "42") testboth("%x", -0x42L, "-42") testboth("%o", 042, "42") -# testboth("%o", -042, "37777777736") # Alas, that's specific to 32-bit machines +# testboth("%o", -042, "37777777736") # specific to 32-bit boxes; see below testboth("%o", 042L, "42") testboth("%o", -042L, "-42") @@ -221,3 +221,15 @@ if have_unicode: test_exc('%d', '1', TypeError, "int argument required") test_exc('%g', '1', TypeError, "float argument required") + +if sys.maxint == 2**32-1: + # crashes 2.2.1 and earlier: + try: + "%*d"%(sys.maxint, -127) + except MemoryError: + pass + else: + raise TestFailed, '"%*d"%(sys.maxint, -127) should fail' + # (different things go wrong on a 64 bit box...) + testboth("%x", -0x42, "ffffffbe") + testboth("%o", -042, "37777777736")