Uploaded image for project: 'Commons Lang'
  1. Commons Lang
  2. LANG-509

OutOfMemory Error caused by ExtendedMessageFormat

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 2.4
    • 2.5
    • lang.text.*
    • None
    • Windows XP, Tomcat 5.5.27, Sun JDK 1.6.0_13

    Description

      It is possible to let ExtendedMessageFormat cause an OutOfMemory Error (Java heap space) - no matter how large you define the memory, because the code produces an endless loop that extends a StringBuffer ad infinitum.

      Code to reproduce:

      instantiate an ExtendedMessageFormat object using the constructor
      public ExtendedMessageFormat(String pattern, Locale locale, Map registry)

      locale and registry (not null) don't matter actually, but pattern as String looks like this:
      {{The field ''

      {0}

      '' must be completed}}
      notice the doubled single quotes.

      The constructor then executes applyPattern(pattern)
      In applyPattern, line 158 (that is inside the loop over the pattern length) appendQuotedString(pattern, pos, stripCustom, true); is called, it is the last statement for that case in the loop.
      In appendQuotedString, line 422 the quote character gets appended to the return StringBuffer, then return. The problem in fact is, that the pointer (ParsePosition pos) isn't updated and after return the procedure will check the same character again and again and again.

      Primitive workaround: no use of single quotes in messages as input of ExtendedMessageFormat.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            schlaufuchs Kai Hackemesser
            Votes:
            1 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment