flexmark-java icon indicating copy to clipboard operation
flexmark-java copied to clipboard

Infinite loop when converting Markdown Text to HTML

Open PoppingSnack opened this issue 2 years ago • 4 comments

Description

A carefully crafted Markdown Text can trigger an infinite loop while loading the text.

Error Log

    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3963)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4953)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$CharProperty.match(Pattern.java:3940)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$CharProperty.match(Pattern.java:3940)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$CharProperty.match(Pattern.java:3940)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$CharProperty.match(Pattern.java:3940)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$CharProperty.match(Pattern.java:3940)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$CharProperty.match(Pattern.java:3940)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$CharProperty.match(Pattern.java:3940)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$CharProperty.match(Pattern.java:3940)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$CharProperty.match(Pattern.java:3940)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.match(Pattern.java:4941)",
    "\tat [email protected]/java.util.regex.Pattern$GroupTail.match(Pattern.java:4863)",
    "\tat [email protected]/java.util.regex.Pattern$BranchConn.match(Pattern.java:4713)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Branch.match(Pattern.java:4749)",
    "\tat [email protected]/java.util.regex.Pattern$GroupHead.match(Pattern.java:4804)",
    "\tat [email protected]/java.util.regex.Pattern$Loop.matchInit(Pattern.java:4966)",
    "\tat [email protected]/java.util.regex.Pattern$Prolog.match(Pattern.java:4887)",
    "\tat [email protected]/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3964)",
    "\tat [email protected]/java.util.regex.Pattern$Begin.match(Pattern.java:3683)",
    "\tat [email protected]/java.util.regex.Matcher.search(Matcher.java:1729)",
    "\tat [email protected]/java.util.regex.Matcher.find(Matcher.java:746)",

PoC

// PoC.java
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.data.MutableDataSet;

/**
 * Test01
 *
 * @since 1.0.0
 */
public class Test01 {

    public static void test(String data) {
        MutableDataSet options = new MutableDataSet();

        // uncomment to set optional extensions
        //options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create(), StrikethroughExtension.create()));

        // uncomment to convert soft-breaks to hard breaks
        //options.set(HtmlRenderer.SOFT_BREAK, "<br />\n");

        Parser parser = Parser.builder(options).build();
        HtmlRenderer renderer = HtmlRenderer.builder(options).build();

        // You can re-use parser and renderer instances
        Node document = parser.parse(data);
        String html = renderer.render(document);  // "<p>This is <em>Sparta</em></p>\n"
//        System.out.println(html);
    }

    public static void main(String[] args) {
        String data = "{\"\\\\\\\\\\\\\\\\\\\\\\  [a][\\\\\\\\\\\\\\\\\\\\\":\"\\\\�\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":\"\\\\�\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"}";
        test(data);
    }
}

References

https://github.com/vsch/flexmark-java/blob/b38192bca2382167796f401bd8aa7827ea3331db/flexmark/src/main/java/com/vladsch/flexmark/parser/LightInlineParserImpl.java#L163

PoppingSnack avatar May 09 '23 07:05 PoppingSnack

@PoppingSnack, thank you for reporting this. I will have to look at the regex to figure out why it loops and how to avoid it. It is a serious bug. I wrote the library to avoid infinite or near infinite parsing loops in pegdown. 🙃

vsch avatar May 09 '23 18:05 vsch

@PoppingSnack, thank you for reporting this. I will have to look at the regex to figure out why it loops and how to avoid it. It is a serious bug. I wrote the library to avoid infinite or near infinite parsing loops in pegdown. 🙃

does it fix,i get the bug now

gujincun avatar Jul 04 '24 08:07 gujincun