diff --git a/src/rules.ts b/src/rules.ts index fd77781ea3..fa2dbf7913 100644 --- a/src/rules.ts +++ b/src/rules.ts @@ -378,7 +378,7 @@ const tag = edit( .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) .getRegex(); -const _inlineLabel = /(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/; +const _inlineLabel = /(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/; const link = edit(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/) .replace('label', _inlineLabel) diff --git a/test/specs/redos/backticks_in_link_no_close.html b/test/specs/redos/backticks_in_link_no_close.html new file mode 100644 index 0000000000..569364875e --- /dev/null +++ b/test/specs/redos/backticks_in_link_no_close.html @@ -0,0 +1 @@ +
[code0 code1 code2 code3 code4 code5 code6 code7 code8 code9 code10 code11 code12 code13 code14