Skip to content

Commit 82f208c

Browse files
Jami CogswellJami Cogswell
authored andcommitted
Java: add isNeutralSink test case
1 parent 24fc4ba commit 82f208c

File tree

2 files changed

+48
-28
lines changed

2 files changed

+48
-28
lines changed

java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import java
22
import TestUtilities.InlineExpectationsTest
33
import semmle.code.java.dataflow.DataFlow
44
import semmle.code.java.dataflow.ExternalFlow
5+
import semmle.code.java.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
56

6-
class NeutralSinksTest extends InlineExpectationsTest {
7-
NeutralSinksTest() { this = "NeutralSinksTest" }
7+
class SinkTest extends InlineExpectationsTest {
8+
SinkTest() { this = "SinkTest" }
89

910
override string getARelevantTag() { result = "isSink" }
1011

@@ -18,3 +19,22 @@ class NeutralSinksTest extends InlineExpectationsTest {
1819
)
1920
}
2021
}
22+
23+
class NeutralSinkTest extends InlineExpectationsTest {
24+
NeutralSinkTest() { this = "NeutralSinkTest" }
25+
26+
override string getARelevantTag() { result = "isNeutralSink" }
27+
28+
override predicate hasActualResult(Location location, string element, string tag, string value) {
29+
tag = "isNeutralSink" and
30+
exists(Call call, Callable callable |
31+
call.getCallee() = callable and
32+
neutralModel(callable.getDeclaringType().getCompilationUnit().getPackage().getName(),
33+
callable.getDeclaringType().getSourceDeclaration().nestedName(), callable.getName(),
34+
[paramsString(callable), ""], "sink", _) and
35+
call.getLocation() = location and
36+
element = call.toString() and
37+
value = ""
38+
)
39+
}
40+
}

java/ql/test/library-tests/neutrals/neutralsinks/Test.java

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,48 +14,48 @@ public void test() throws Exception {
1414

1515
// java.io
1616
File file = null;
17-
file.exists(); // Neutral Sink
18-
file.compareTo(null); // Neutral Sink
17+
file.exists(); // $ isNeutralSink
18+
file.compareTo(null); // $ isNeutralSink
1919

2020
// java.nio.file
21-
Files.exists(null, (LinkOption[])null); // Neutral Sink
22-
Files.getLastModifiedTime(null, (LinkOption[])null); // Neutral Sink
23-
Files.getOwner(null, (LinkOption[])null); // Neutral Sink
24-
Files.getPosixFilePermissions(null, (LinkOption[])null); // Neutral Sink
25-
Files.isDirectory(null, (LinkOption[])null); // Neutral Sink
26-
Files.isExecutable(null); // Neutral Sink
27-
Files.isHidden(null); // Neutral Sink
28-
Files.isReadable(null); // Neutral Sink
29-
Files.isRegularFile(null, (LinkOption[])null); // Neutral Sink
30-
Files.isSameFile(null, null); // Neutral Sink
31-
Files.isSymbolicLink(null); // Neutral Sink
32-
Files.isWritable(null); // Neutral Sink
33-
Files.notExists(null, (LinkOption[])null); // Neutral Sink
34-
Files.setLastModifiedTime(null, null); // Neutral Sink
35-
Files.size(null); // Neutral Sink
21+
Files.exists(null, (LinkOption[])null); // $ isNeutralSink
22+
Files.getLastModifiedTime(null, (LinkOption[])null); // $ isNeutralSink
23+
Files.getOwner(null, (LinkOption[])null); // $ isNeutralSink
24+
Files.getPosixFilePermissions(null, (LinkOption[])null); // $ isNeutralSink
25+
Files.isDirectory(null, (LinkOption[])null); // $ isNeutralSink
26+
Files.isExecutable(null); // $ isNeutralSink
27+
Files.isHidden(null); // $ isNeutralSink
28+
Files.isReadable(null); // $ isNeutralSink
29+
Files.isRegularFile(null, (LinkOption[])null); // $ isNeutralSink
30+
Files.isSameFile(null, null); // $ isNeutralSink
31+
Files.isSymbolicLink(null); // $ isNeutralSink
32+
Files.isWritable(null); // $ isNeutralSink
33+
Files.notExists(null, (LinkOption[])null); // $ isNeutralSink
34+
Files.setLastModifiedTime(null, null); // $ isNeutralSink
35+
Files.size(null); // $ isNeutralSink
3636

3737
// java.nio.file.spi
3838
FileSystemProvider fsp = null;
39-
fsp.isHidden(null); // Neutral Sink
40-
fsp.isSameFile(null, null); // Neutral Sink
39+
fsp.isHidden(null); // $ isNeutralSink
40+
fsp.isSameFile(null, null); // $ isNeutralSink
4141

4242
// java.text
4343
Collator c = null;
44-
c.compare(null, null); // Neutral Sink
45-
c.equals(null); // Neutral Sink
46-
c.equals(null, null); // Neutral Sink
44+
c.compare(null, null); // $ isNeutralSink
45+
c.equals(null); // $ isNeutralSink
46+
c.equals(null, null); // $ isNeutralSink
4747
RuleBasedCollator rbc = null;
48-
rbc.compare(null, null); // Neutral Sink
48+
rbc.compare(null, null); // $ isNeutralSink
4949

5050
// java.util.prefs
5151
AbstractPreferences ap = null;
52-
ap.nodeExists(null); // Neutral Sink
52+
ap.nodeExists(null); // $ isNeutralSink
5353
Preferences p = null;
54-
p.nodeExists(null); // Neutral Sink
54+
p.nodeExists(null); // $ isNeutralSink
5555

5656
// org.apache.hc.client5.http.protocol
5757
RedirectLocations rl = null;
58-
rl.contains(null); // Neutral Sink
58+
rl.contains(null); // $ isNeutralSink
5959
}
6060

6161
}

0 commit comments

Comments
 (0)