Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4465339

Long patterns cause ArrayIndexOutOfBoundsException

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 1.4.0
    • 1.4.0
    • core-libs
    • beta2
    • x86
    • windows_98, windows_nt
    • Verified



      Name: bsC130419 Date: 06/01/2001


      java version "1.4.0-beta"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b65)
      Java HotSpot(TM) Client VM (build 1.4.0-beta-b65, mixed mode)


      In the following code, the first compile attempt works, but
      the other two throw ArrayIndexOutOfBoundsException's, each
      from a different method, as shown in the stack traces. It
      looks like those two methods are trying to expand the pattern
      buffer beyond its original 32-character allocation, but are
      referring to element #32 in the process.


      import java.util.regex.*;

      public class PatternTest
      {
        public static void main(String[] argv)
        {
          Pattern pat;
          try {
            pat = Pattern.compile("a 32-character-long pattern xxxx");
          } catch (ArrayIndexOutOfBoundsException ex) {
            ex.printStackTrace();
          }
          try {
            pat = Pattern.compile("a 33-character-long pattern xxxxx");
          } catch (ArrayIndexOutOfBoundsException ex) {
            ex.printStackTrace();
          }
          try {
            pat = Pattern.compile("a thirty four character long regex");
          } catch (ArrayIndexOutOfBoundsException ex) {
            ex.printStackTrace();
          }
        }
      }


      $ java PatternTest
      java.lang.ArrayIndexOutOfBoundsException
              at java.util.regex.Pattern.newSlice(Pattern.java:2330)
              at java.util.regex.Pattern.atom(Pattern.java:1553)
              at java.util.regex.Pattern.sequence(Pattern.java:1471)
              at java.util.regex.Pattern.expr(Pattern.java:1383)
              at java.util.regex.Pattern.compile(Pattern.java:1231)
              at java.util.regex.Pattern.<init>(Pattern.java:919)
              at java.util.regex.Pattern.compile(Pattern.java:678)
              at PatternTest.main(PatternTest.java:14)
      java.lang.ArrayIndexOutOfBoundsException
              at java.util.regex.Pattern.append(Pattern.java:1562)
              at java.util.regex.Pattern.atom(Pattern.java:1543)
              at java.util.regex.Pattern.sequence(Pattern.java:1471)
              at java.util.regex.Pattern.expr(Pattern.java:1383)
              at java.util.regex.Pattern.compile(Pattern.java:1231)
              at java.util.regex.Pattern.<init>(Pattern.java:919)
              at java.util.regex.Pattern.compile(Pattern.java:678)
              at PatternTest.main(PatternTest.java:19)
      (Review ID: 125240)
      ======================================================================

            mmcclosksunw Michael Mccloskey (Inactive)
            bstrathesunw Bill Strathearn (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: