]> granicus.if.org Git - python/commitdiff
Add a "crasher" taken from the sgml bug report referenced in the comment
authorNeal Norwitz <nnorwitz@gmail.com>
Mon, 11 Sep 2006 04:32:57 +0000 (04:32 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Mon, 11 Sep 2006 04:32:57 +0000 (04:32 +0000)
Lib/test/crashers/infinite_loop_re.py [new file with mode: 0644]

diff --git a/Lib/test/crashers/infinite_loop_re.py b/Lib/test/crashers/infinite_loop_re.py
new file mode 100644 (file)
index 0000000..9aecc56
--- /dev/null
@@ -0,0 +1,16 @@
+
+# This was taken from http://python.org/sf/1541697
+# It's not technically a crasher.  It may not even truly be infinite,
+# however, I haven't waited a long time to see the result.  It takes
+# 100% of CPU while running this and should be fixed.
+
+import re
+starttag = re.compile(r'<[a-zA-Z][-_.:a-zA-Z0-9]*\s*('
+        r'\s*([a-zA-Z_][-:.a-zA-Z_0-9]*)(\s*=\s*'
+        r'(\'[^\']*\'|"[^"]*"|[-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~@]'
+        r'[][\-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~\'"@]*(?=[\s>/<])))?'
+    r')*\s*/?\s*(?=[<>])')
+
+if __name__ == '__main__':
+    foo = '<table cellspacing="0" cellpadding="0" style="border-collapse'
+    starttag.match(foo)