Skip to content

Commit 68e513c

Browse files
authored
Merge pull request github#11246 from erik-krogh/java-redosMod
Java: use the shared regex pack
2 parents 89a8ccb + dff7b47 commit 68e513c

File tree

17 files changed

+1004
-3235
lines changed

17 files changed

+1004
-3235
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
* The ReDoS libraries in `semmle.code.java.security.regexp` has been moved to a shared pack inside the `shared/` folder, and the previous location has been deprecated.

java/ql/lib/qlpack.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ dbscheme: config/semmlecode.dbscheme
55
extractor: java
66
library: true
77
upgrades: upgrades
8+
dependencies:
9+
codeql/regex: ${workspace}

java/ql/lib/semmle/code/java/PrintAst.qll

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88

99
import java
10-
import semmle.code.java.regex.RegexTreeView
10+
import semmle.code.java.regex.RegexTreeView as RegexTreeView
1111

1212
private newtype TPrintAstConfiguration = MkPrintAstConfiguration()
1313

@@ -134,8 +134,10 @@ private newtype TPrintAstNode =
134134
TImportsNode(CompilationUnit cu) {
135135
shouldPrint(cu, _) and exists(Import i | i.getCompilationUnit() = cu)
136136
} or
137-
TRegExpTermNode(RegExpTerm term) {
138-
exists(StringLiteral str | term.getRootTerm() = getParsedRegExp(str) and shouldPrint(str, _))
137+
TRegExpTermNode(RegexTreeView::RegExpTerm term) {
138+
exists(StringLiteral str |
139+
term.getRootTerm() = RegexTreeView::getParsedRegExp(str) and shouldPrint(str, _)
140+
)
139141
}
140142

141143
/**
@@ -316,20 +318,20 @@ final class StringLiteralNode extends ExprStmtNode {
316318

317319
override PrintAstNode getChild(int childIndex) {
318320
childIndex = 0 and
319-
result.(RegExpTermNode).getTerm() = getParsedRegExp(element)
321+
result.(RegExpTermNode).getTerm() = RegexTreeView::getParsedRegExp(element)
320322
}
321323
}
322324

323325
/**
324326
* A node representing a regular expression term.
325327
*/
326328
class RegExpTermNode extends TRegExpTermNode, PrintAstNode {
327-
RegExpTerm term;
329+
RegexTreeView::RegExpTerm term;
328330

329331
RegExpTermNode() { this = TRegExpTermNode(term) }
330332

331333
/** Gets the `RegExpTerm` for this node. */
332-
RegExpTerm getTerm() { result = term }
334+
RegexTreeView::RegExpTerm getTerm() { result = term }
333335

334336
override PrintAstNode getChild(int childIndex) {
335337
result.(RegExpTermNode).getTerm() = term.getChild(childIndex)

0 commit comments

Comments
 (0)