Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-5628

new JsonBuilder('<complex xml string>').toPrettyPrint() throws StackOverflowException

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.8.4
    • 1.8.7
    • JSON
    • None
    • Windows 7, Java 6, IntelliJ IDEA

    Description

      When we run the following,

      new JsonBuilder('<a a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\" a=\\"\\"/>').toPrettyPrint()
      

      we get a StackOverflowException

       java.lang.StackOverflowError
      	at java.lang.Character.codePointAt(Character.java:2335)
      	at java.util.regex.Pattern$CharProperty.match(Pattern.java:3344)
      	at java.util.regex.Pattern$Curly.match0(Pattern.java:3760)
      	at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
      	at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
      	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
      	at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
      	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
      	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
      	at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
      	at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
      	at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
      	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
      	at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
              ...
      

      We have made a basic change to fix the problem as an override/temporary solution as follows...

      JsonTokenType.STRING.validator = Pattern.compile('"(?>[^"\\\\]+|\\\\["\\\\bfnrt\\/]|\\\\u[0-9a-fA-F]{4})*"', Pattern.DOTALL)
      

      The main change is the addition of ?> and the change from * to +.

      Attachments

        Activity

          People

            guillaume Guillaume Sauthier
            crykal79 Craig Rykal
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: