]> granicus.if.org Git - python/commitdiff
A test for the recent overflow-in-format-crash bug.
authorMichael W. Hudson <mwh@python.net>
Fri, 11 Oct 2002 13:46:32 +0000 (13:46 +0000)
committerMichael W. Hudson <mwh@python.net>
Fri, 11 Oct 2002 13:46:32 +0000 (13:46 +0000)
Only runs when sys.maxint == 2**32 - 1; different things go wrong
on a 64-bit box.

Lib/test/test_format.py

index be120fbd7e884920a3df71d25bf8841a468faa03..b40e8202f1b6f2009d2378a3788c7f643d7b8b50 100644 (file)
@@ -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")