Skip to content

Commit 6a4fa3a

Browse files
committed
Fix bug so += File.separator is recognized
1 parent 55401ef commit 6a4fa3a

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,11 @@ private class CharacterLiteralFileSeparatorExpr extends FileSeparatorExpr, Chara
4040
CharacterLiteralFileSeparatorExpr() { this.getValue() = "/" or this.getValue() = "\\" }
4141
}
4242

43-
private class FileSeparatorAppend extends AddExpr {
44-
FileSeparatorAppend() { this.getRightOperand() instanceof FileSeparatorExpr }
43+
private class FileSeparatorAppend extends BinaryExpr {
44+
FileSeparatorAppend() {
45+
this.(AddExpr).getRightOperand() instanceof FileSeparatorExpr or
46+
this.(AssignAddExpr).getRightOperand() instanceof FileSeparatorExpr
47+
}
4548
}
4649

4750
private predicate isSafe(Expr expr) {

java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversal.expected

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@
1414
| PartialPathTraversalTest.java:176:14:176:65 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. |
1515
| PartialPathTraversalTest.java:194:18:194:87 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. |
1616
| PartialPathTraversalTest.java:212:14:212:64 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. |
17-
| PartialPathTraversalTest.java:234:14:234:54 | startsWith(...) | Partial Path Traversal Vulnerability due to insufficient guard against path traversal. |

java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ void foo24(File parent) throws IOException {
231231
void foo25(File parent) throws IOException {
232232
String path = parent.getCanonicalPath();
233233
path += File.separator;
234-
if (!dir().getCanonicalPath().startsWith(path)) { // $ SPURIOUS: Alert[java/partial-path-traversal-from-remote] Alert[java/partial-path-traversal]
234+
if (!dir().getCanonicalPath().startsWith(path)) {
235235
throw new IOException("Invalid directory: " + dir().getCanonicalPath());
236236
}
237237
}

0 commit comments

Comments
 (0)