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