From 575a5b65476920de351e82865d49930ed8848d70 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sun, 30 Oct 2016 19:08:00 +0100 Subject: [PATCH 1/3] Add unit test for #1531 [plsql] OOM/Endless loop while parsing (PL)SQL --- .../net/sourceforge/pmd/lang/plsql/PLSQLParserTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/PLSQLParserTest.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/PLSQLParserTest.java index c4301ef41e..07120bfee9 100644 --- a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/PLSQLParserTest.java +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/PLSQLParserTest.java @@ -36,4 +36,12 @@ public class PLSQLParserTest extends AbstractPLSQLParserTst { + " doSomethingElse;" + "END;"); } + + @Test(timeout = 5000) + public void testBug1531() { + parsePLSQL( + "create or replace force view oxa.o_xa_function_role_types as\n" + + "select \"CFT_ID\",\"CFR_ID\",\"CFT_NAME\",\"TCN\",\"LOG_MODULE\",\"LOG_USER\",\"LOG_DATE\",\"LOG_TIME\" from crm_function_role_types\n" + + "/"); + } } From 4310b3634474c267bc8842461d226ecc223b7546 Mon Sep 17 00:00:00 2001 From: Frits Jalvingh Date: Tue, 18 Oct 2016 17:41:08 +0200 Subject: [PATCH 2/3] Fix PMD issue 1531- endless loop followed by OOM while parsing (PL)SQL --- pmd-plsql/etc/grammar/PldocAST.jjt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pmd-plsql/etc/grammar/PldocAST.jjt b/pmd-plsql/etc/grammar/PldocAST.jjt index 723e831d25..b48397094e 100644 --- a/pmd-plsql/etc/grammar/PldocAST.jjt +++ b/pmd-plsql/etc/grammar/PldocAST.jjt @@ -917,6 +917,8 @@ void Skip2NextTerminator(String initiator,String terminator) : t = getToken(1); if(t.image.equals(initiator)) count++; if(t.image.equals(terminator)) count--; + if(null != t.specialToken || t.kind == EOF) + return; } } { From 2cc91732ecae821514eefc1df38d4d30a695a11e Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sun, 30 Oct 2016 19:11:54 +0100 Subject: [PATCH 3/3] Update changelog --- src/site/markdown/overview/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/site/markdown/overview/changelog.md b/src/site/markdown/overview/changelog.md index c5b039a214..fe60ad9edd 100644 --- a/src/site/markdown/overview/changelog.md +++ b/src/site/markdown/overview/changelog.md @@ -17,6 +17,7 @@ * [#111](https://github.com/pmd/pmd/pull/111): \[java] Fix BooleanInstantiationRule for Java 8 * [#112](https://github.com/pmd/pmd/pull/112): \[java] Fix ClassCastException on CloneMethodMustImplementCloneable * [#113](https://github.com/pmd/pmd/pull/113): \[java] Fix ClassCastException on SignatureDeclareThrowsException +* [#119](https://github.com/pmd/pmd/pull/119): \[plsql] Fix PMD issue 1531- endless loop followed by OOM while parsing (PL)SQL **Bugfixes:** @@ -38,6 +39,8 @@ * [#1484](https://sourceforge.net/p/pmd/bugs/1484/): UnusedLocalVariable - false positive - parenthesis * java-unusedcode/UnusedModifier * [#1480](https://sourceforge.net/p/pmd/bugs/1480/): false positive on public modifier used with inner interface in enum +* PLSQL + * [#1531](https://sourceforge.net/p/pmd/bugs/1531/): \[plsql] OOM/Endless loop while parsing (PL)SQL * General * [#1481](https://sourceforge.net/p/pmd/bugs/1481/): no problems found results in blank file instead of empty xml * [#1499](https://sourceforge.net/p/pmd/bugs/1499/): \[core] CPD test break PMD 5.5.1 build on Windows