Skip to content

Commit 4e243f9

Browse files
authored
Merge pull request github#6555 from bmuskalla/objectsAsCsv
Java: Migrate `Objects` flow to CSV model
2 parents f18e8a4 + 9ca3b46 commit 4e243f9

File tree

3 files changed

+18
-21
lines changed

3 files changed

+18
-21
lines changed

java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ private module Frameworks {
8787
private import semmle.code.java.frameworks.JaxWS
8888
private import semmle.code.java.frameworks.JoddJson
8989
private import semmle.code.java.frameworks.JsonJava
90+
private import semmle.code.java.frameworks.Objects
9091
private import semmle.code.java.frameworks.Optional
9192
private import semmle.code.java.frameworks.spring.SpringCache
9293
private import semmle.code.java.frameworks.spring.SpringHttp

java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,6 @@ abstract class FluentMethod extends ValuePreservingMethod {
5050
override predicate returnsValue(int arg) { arg = -1 }
5151
}
5252

53-
private class StandardLibraryValuePreservingMethod extends ValuePreservingMethod {
54-
int returnsArgNo;
55-
56-
StandardLibraryValuePreservingMethod() {
57-
this.getDeclaringType().hasQualifiedName("java.util", "Objects") and
58-
(
59-
this.hasName(["requireNonNull", "requireNonNullElseGet"]) and returnsArgNo = 0
60-
or
61-
this.hasName("requireNonNullElse") and returnsArgNo = [0 .. this.getNumberOfParameters() - 1]
62-
or
63-
this.hasName("toString") and returnsArgNo = 1
64-
)
65-
or
66-
this.getDeclaringType().getASourceSupertype*().hasQualifiedName("java.util", "Stack") and
67-
this.hasName("push") and
68-
returnsArgNo = 0
69-
}
70-
71-
override predicate returnsValue(int argNo) { argNo = returnsArgNo }
72-
}
73-
7453
/**
7554
* A unit class for adding additional taint steps.
7655
*
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/** Definitions of taint steps in Objects class of the JDK */
2+
3+
import java
4+
private import semmle.code.java.dataflow.ExternalFlow
5+
6+
private class ObjectsSummaryCsv extends SummaryModelCsv {
7+
override predicate row(string row) {
8+
row =
9+
[
10+
//`namespace; type; subtypes; name; signature; ext; input; output; kind`
11+
"java.util;Objects;false;requireNonNull;;;Argument[0];ReturnValue;value",
12+
"java.util;Objects;false;requireNonNullElse;;;Argument[0..1];ReturnValue;value",
13+
"java.util;Objects;false;requireNonNullElseGet;;;Argument[0];ReturnValue;value",
14+
"java.util;Objects;false;toString;;;Argument[1];ReturnValue;value"
15+
]
16+
}
17+
}

0 commit comments

Comments
 (0)