From 4747cf794b03920153a10ee7a8dd53011bf4802f Mon Sep 17 00:00:00 2001 From: Waylan Limberg Date: Fri, 23 Sep 2016 19:33:56 -0400 Subject: Don't allow equal signs in attr_list keys. This will probably not result in the output intending by the author, but the syntax would be incorrect so the author needs to edit the document anyway. We just need to ensure the parser does not crash here. Fixes #498. --- markdown/extensions/attr_list.py | 6 +++--- tests/extensions/attr_list.html | 3 ++- tests/extensions/attr_list.txt | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/markdown/extensions/attr_list.py b/markdown/extensions/attr_list.py index de39944..8735538 100644 --- a/markdown/extensions/attr_list.py +++ b/markdown/extensions/attr_list.py @@ -53,9 +53,9 @@ def _handle_word(s, t): return t, t _scanner = Scanner([ - (r'[^ ]+=".*?"', _handle_double_quote), - (r"[^ ]+='.*?'", _handle_single_quote), - (r'[^ ]+=[^ =]+', _handle_key_value), + (r'[^ =]+=".*?"', _handle_double_quote), + (r"[^ =]+='.*?'", _handle_single_quote), + (r'[^ =]+=[^ =]+', _handle_key_value), (r'[^ =]+', _handle_word), (r' ', None) ]) diff --git a/tests/extensions/attr_list.html b/tests/extensions/attr_list.html index 93a862f..6eafd3e 100644 --- a/tests/extensions/attr_list.html +++ b/tests/extensions/attr_list.html @@ -65,4 +65,5 @@ And a nested Weirdness

More weirdness

Attr_lists do not contain newlines{ foo=bar -key=value }

\ No newline at end of file +key=value }

+

Extra equals signs

\ No newline at end of file diff --git a/tests/extensions/attr_list.txt b/tests/extensions/attr_list.txt index 603b611..54ebcb6 100644 --- a/tests/extensions/attr_list.txt +++ b/tests/extensions/attr_list.txt @@ -90,3 +90,5 @@ No *key or value*{ = } Attr_lists do not contain *newlines*{ foo=bar key=value } + +Extra *equals signs*{ foo=bar=baz } -- cgit v1.2.3