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

StackOverflowError in Matcher.search

    XMLWordPrintable

    Details

      Description

      A DESCRIPTION OF THE PROBLEM :
      IBM Informix JDBC driver tries to apply a certain regex on provided query. It crashes Oracle/OpenJDK regex code (but not the IBM regex code).

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run provided source code. Observe crash.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Prints results of the replacement. The replacement in itself is wrong, but that's a problem in IBM Informix JDBC driver. But that regex works in IBM JDK 1.8, but not on Oracle JDK 1.8 nor OpenJDK 11.
      ACTUAL -
      Error is thrown.

      ---------- BEGIN SOURCE ----------
      public class InformixRegex {

          public static void main(String[] args) {
              String regex = "(?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/)|(?://.*)";
              String query = "SELECT * FROM operacje WHERE UPPER(tytul_oper) MATCHES 'B/16/16 WP*ATA*' OR UPPER(tytul_oper) MATCHES 'B/1/1 WP*' OR UPPER(tytul_oper) MATCHES 'WK/* WP*ATA' OR UPPER(tytul_oper) MATCHES 'WK/* ZWROT PRZELEWU' OR UPPER(tytul_oper) MATCHES 'WMAS/* WP*ATA PRZELEWEM' OR UPPER(tytul_oper) MATCHES 'WMAS/* ZWROT PRZELEWU' OR UPPER(tytul_oper) MATCHES 'WFORTIS/* WP*ATA PRZELEWEM' OR UPPER(tytul_oper) MATCHES 'WK/* ZWROT ODSETEK' OR UPPER(tytul_oper) MATCHES 'P/MAS WP*ATA PRZELEWEM' OR UPPER(tytul_oper) MATCHES 'OF/*' OR UPPER(tytul_oper) MATCHES 'P/BO* WP*ATA PRZELEWEM' OR UPPER(tytul_oper) MATCHES 'PWKZ *' OR UPPER(tytul_oper) MATCHES 'PWF *' OR UPPER(tytul_oper) MATCHES 'PWP *' OR UPPER(tytul_oper) MATCHES 'PWK *' OR UPPER(tytul_oper) MATCHES 'URUCH. KR:*' OR UPPER(tytul_oper) MATCHES 'URUCH. KRE:*' OR UPPER(tytul_oper) MATCHES 'URUCH. KRED:*' OR UPPER(tytul_oper) MATCHES 'URUCH. KREDY:*' OR UPPER(tytul_oper) MATCHES 'URUCH. KREDYTU NR:*' OR UPPER(tytul_oper) MATCHES 'URUCH.KREDYTU NR:*' OR UPPER(tytul_oper) MATCHES 'P/IKE WP*ATA*' OR UPPER(tytul_oper) MATCHES 'PWIKE WP*ATA(T)*UPOSA' OR UPPER(tytul_oper) MATCHES 'DNB?DYSP?DD/MM/RR' OR UPPER(tytul_oper) MATCHES 'WNKS/ ODBLOK.GOT.' OR UPPER(tytul_oper) MATCHES 'BLOKAD*GOT*WKI' OR UPPER(tytul_oper) MATCHES 'P*/*IKZE WP*ATA*' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ODBLOK*GOT*WKI' OR UPPER(tytul_oper) MATCHES 'ZWROT ZAPIS*' OR UPPER(tytul_oper) MATCHES 'B/1/1 WYP*' OR UPPER(tytul_oper) MATCHES 'B/77/77 WYP*ATA*' OR UPPER(tytul_oper) MATCHES 'B/19/19 WYP*ATA *' OR UPPER(tytul_oper) MATCHES 'B/16/16 WYP*ATA *' OR UPPER(tytul_oper) MATCHES 'B/40/40 WYP*ATA *' OR UPPER(tytul_oper) MATCHES 'B/10/10 WYP*ATA *' OR UPPER(tytul_oper) MATCHES 'B/42/42 WYP*ATA *' OR UPPER(tytul_oper) MATCHES 'B/17/17 WYP*ATA *' OR UPPER(tytul_oper) MATCHES 'B/915/915 WYP*ATA *' OR UPPER(tytul_oper) MATCHES 'B/47/47 WYP*ATA *' OR UPPER(tytul_oper) MATCHES 'B/71/71 WYP*' OR UPPER(tytul_oper) MATCHES 'PZ *' OR UPPER(tytul_oper) MATCHES 'KF/ *' OR UPPER(tytul_oper) MATCHES 'KSIEG.ODS?*' OR UPPER(tytul_oper) MATCHES 'SP*ATA KRE*' OR UPPER(tytul_oper) MATCHES 'SK*/*/*/*ODSETKI' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKE*ZWROT IKE' OR UPPER(tytul_oper) MATCHES 'B*/*IKE WYP*JEDNORAZ*IKE' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKE WYP*JEDNORAZ*IKE UPOSA*ONY' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKE WYP*ATA*' OR UPPER(tytul_oper) MATCHES 'PWIKE WP*ATA*UPOSA*' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT IKE' OR UPPER(tytul_oper) MATCHES 'PWIKE WYP*RATA IKE' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT NADWY*KI IKE' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKZE WYP*ATA*' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKZE*ZWROT IKZE' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKZE WYP*JEDNORAZ*IKZE*UPOSA*' OR UPPER(tytul_oper) MATCHES 'PWIKZE WP*ATA*UPOSA*' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT IKZE' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT NADWY*KI IKZE' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT NADP*ATY IKZE' OR UPPER(tytul_oper) MATCHES 'ODS?*' OR UPPER(tytul_oper) MATCHES 'DYW?*' OR UPPER(tytul_oper) MATCHES 'WNKS/DYW?*' OR UPPER(tytul_oper) MATCHES 'WYK.;?*' OR UPPER(tytul_oper) MATCHES 'WYK.CZĘŚĆ?*' OR UPPER(tytul_oper) MATCHES 'WYK.PRZYM?*' OR UPPER(tytul_oper) MATCHES 'PD;ODS*' OR UPPER(tytul_oper) MATCHES 'PD;DYW*' OR UPPER(tytul_oper) MATCHES 'PD;WYK*' OR UPPER(tytul_oper) MATCHES 'PD;DYS*' OR UPPER(tytul_oper) MATCHES 'B/16/16 WP*ATA*STORNO*' OR UPPER(tytul_oper) MATCHES 'B/1/1 WP*STORNO*' OR UPPER(tytul_oper) MATCHES 'WK/* WP*ATA*STORNO*' OR UPPER(tytul_oper) MATCHES 'WK/* ZWROT PRZELEWU*STORNO*' OR UPPER(tytul_oper) MATCHES 'WMAS/* WP*ATA PRZELEWEM*STORNO*' OR UPPER(tytul_oper) MATCHES 'WMAS/* ZWROT PRZELEWU*STORNO*' OR UPPER(tytul_oper) MATCHES 'WFORTIS/* WP*ATA PRZELEWEM*STORNO*' OR UPPER(tytul_oper) MATCHES 'WK/* ZWROT ODSETEK*STORNO*' OR UPPER(tytul_oper) MATCHES 'P/MAS WP*ATA PRZELEWEM*STORNO*' OR UPPER(tytul_oper) MATCHES 'OF/*STORNO*' OR UPPER(tytul_oper) MATCHES 'P/BO* WP*ATA PRZELEWEM*STORNO*' OR UPPER(tytul_oper) MATCHES 'PWKZ *STORNO*' OR UPPER(tytul_oper) MATCHES 'PWF *STORNO*' OR UPPER(tytul_oper) MATCHES 'PWP *STORNO*' OR UPPER(tytul_oper) MATCHES 'PWK *STORNO*' OR UPPER(tytul_oper) MATCHES 'URUCH. KR:*STORNO*' OR UPPER(tytul_oper) MATCHES 'URUCH. KRE:*STORNO*' OR UPPER(tytul_oper) MATCHES 'URUCH. KRED:*STORNO*' OR UPPER(tytul_oper) MATCHES 'URUCH. KREDY:*STORNO*' OR UPPER(tytul_oper) MATCHES 'URUCH. KREDYTU NR:*STORNO*' OR UPPER(tytul_oper) MATCHES 'URUCH.KREDYTU NR:*STORNO*' OR UPPER(tytul_oper) MATCHES 'P/IKE WP*ATA*STORNO*' OR UPPER(tytul_oper) MATCHES 'PWIKE WP*ATA(T)*UPOSA*STORNO*' OR UPPER(tytul_oper) MATCHES 'DNB?DYSP?DD/MM/RR*STORNO*' OR UPPER(tytul_oper) MATCHES 'WNKS/ ODBLOK.GOT.*STORNO*' OR UPPER(tytul_oper) MATCHES 'BLOKAD*GOT*WKI*STORNO*' OR UPPER(tytul_oper) MATCHES 'P*/*IKZE WP*ATA*STORNO*' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ODBLOK*GOT*WKI*STORNO*' OR UPPER(tytul_oper) MATCHES 'ZWROT ZAPIS*STORNO*' OR UPPER(tytul_oper) MATCHES 'B/1/1 WYP*STORNO*' OR UPPER(tytul_oper) MATCHES 'B/77/77 WYP*ATA*STORNO*' OR UPPER(tytul_oper) MATCHES 'B/19/19 WYP*ATA *STORNO*' OR UPPER(tytul_oper) MATCHES 'B/16/16 WYP*ATA *STORNO*' OR UPPER(tytul_oper) MATCHES 'B/40/40 WYP*ATA *STORNO*' OR UPPER(tytul_oper) MATCHES 'B/10/10 WYP*ATA *STORNO*' OR UPPER(tytul_oper) MATCHES 'B/42/42 WYP*ATA *STORNO*' OR UPPER(tytul_oper) MATCHES 'B/17/17 WYP*ATA *STORNO*' OR UPPER(tytul_oper) MATCHES 'B/915/915 WYP*ATA *STORNO*' OR UPPER(tytul_oper) MATCHES 'B/47/47 WYP*ATA *STORNO*' OR UPPER(tytul_oper) MATCHES 'B/71/71 WYP*STORNO*' OR UPPER(tytul_oper) MATCHES 'PZ *STORNO*' OR UPPER(tytul_oper) MATCHES 'KF/ *STORNO*' OR UPPER(tytul_oper) MATCHES 'KSIEG.ODS?*STORNO*' OR UPPER(tytul_oper) MATCHES 'SP*ATA KRE*STORNO*' OR UPPER(tytul_oper) MATCHES 'SK*/*/*/*ODSETKI*STORNO*' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKE*ZWROT IKE*STORNO*' OR UPPER(tytul_oper) MATCHES 'B*/*IKE WYP*JEDNORAZ*IKE*STORNO*' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKE WYP*JEDNORAZ*IKE UPOSA*ONY*STORNO*' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKE WYP*ATA*STORNO*' OR UPPER(tytul_oper) MATCHES 'PWIKE WP*ATA*UPOSA*STORNO*' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT IKE*STORNO*' OR UPPER(tytul_oper) MATCHES 'PWIKE WYP*RATA IKE*STORNO*' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT NADWY*KI IKE*STORNO*' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKZE WYP*ATA*STORNO*' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKZE*ZWROT IKZE*STORNO*' OR UPPER(tytul_oper) MATCHES 'PZ*/*IKZE WYP*JEDNORAZ*IKZE*UPOSA*STORNO*' OR UPPER(tytul_oper) MATCHES 'PWIKZE WP*ATA*UPOSA*STORNO*' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT IKZE*STORNO*' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT NADWY*KI IKZE*STORNO*' OR UPPER(tytul_oper) MATCHES 'WNKS*/*ZWROT NADP*ATY IKZE*STORNO*' OR UPPER(tytul_oper) MATCHES 'ODS?*STORNO*' OR UPPER(tytul_oper) MATCHES 'DYW?*STORNO*' OR UPPER(tytul_oper) MATCHES 'WNKS/DYW?*STORNO*' OR UPPER(tytul_oper) MATCHES 'WYK.;?*STORNO*' OR UPPER(tytul_oper) MATCHES 'WYK.CZĘŚĆ?*STORNO*' OR UPPER(tytul_oper) MATCHES 'WYK.PRZYM?*STORNO*' OR UPPER(tytul_oper) MATCHES 'PD;ODS*STORNO*' OR UPPER(tytul_oper) MATCHES 'PD;DYW*STORNO*' OR UPPER(tytul_oper) MATCHES 'PD;WYK*STORNO*' OR UPPER(tytul_oper) MATCHES 'PD;DYS*STORNO*' ORDER BY lp";
              System.out.println(query.replaceAll(regex, ""));
          }

      }
      ---------- END SOURCE ----------

      FREQUENCY : always


        Attachments

          Issue Links

            Activity

              People

              Assignee:
              smarks Stuart Marks
              Reporter:
              webbuggrp Webbug Group
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated: