diff --git a/javascript/ql/src/Performance/ReDoS.ql b/javascript/ql/src/Performance/ReDoS.ql index 9afd50f7a29..55765e378c5 100644 --- a/javascript/ql/src/Performance/ReDoS.ql +++ b/javascript/ql/src/Performance/ReDoS.ql @@ -222,7 +222,7 @@ abstract class CharacterClass extends InputSymbol { /** * Gets a character matched by this character class. */ - string choose() { result = getARelevantChar() } + string choose() { result = getARelevantChar() and matches(result) } } /** diff --git a/javascript/ql/test/query-tests/Performance/ReDoS/tst.js b/javascript/ql/test/query-tests/Performance/ReDoS/tst.js index 37fb4c2d6e9..d34237d5176 100644 --- a/javascript/ql/test/query-tests/Performance/ReDoS/tst.js +++ b/javascript/ql/test/query-tests/Performance/ReDoS/tst.js @@ -258,3 +258,6 @@ var bad57 = /^([^>a]+)*(>|$)/; // NOT GOOD var bad58 = /(\n\s*)+$/; + +// GOOD +var good26 = /([^\\\]]+)*/ \ No newline at end of file