Skip to content

Commit d02fba8

Browse files
committed
Java: adjust wrapped constructor calls
1 parent e3534d1 commit d02fba8

File tree

2 files changed

+22
-37
lines changed

2 files changed

+22
-37
lines changed

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

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -243,28 +243,28 @@ private predicate summaryModelCsv(string row) {
243243
"org.apache.commons.io;IOUtils;false;writeLines;;;Argument[0];Argument[2];taint",
244244
"org.apache.commons.io;IOUtils;false;writeLines;;;Argument[1];Argument[2];taint",
245245
// constructor flow
246-
"java.io;File;false;File;;;Argument[0];ReturnValue;taint",
247-
"java.io;File;false;File;;;Argument[1];ReturnValue;taint",
248-
"java.net;URI;false;URI;(String);;Argument[0];ReturnValue;taint",
249-
"javax.xml.transform.stream;StreamSource;false;StreamSource;;;Argument[0];ReturnValue;taint",
250-
"javax.xml.transform.sax;SAXSource;false;SAXSource;(InputSource);;Argument[0];ReturnValue;taint",
251-
"javax.xml.transform.sax;SAXSource;false;SAXSource;(XMLReader,InputSource);;Argument[1];ReturnValue;taint",
252-
"org.xml.sax;InputSource;false;InputSource;;;Argument[0];ReturnValue;taint",
253-
"javax.servlet.http;Cookie;false;Cookie;;;Argument[0];ReturnValue;taint",
254-
"javax.servlet.http;Cookie;false;Cookie;;;Argument[1];ReturnValue;taint",
255-
"java.util.zip;ZipInputStream;false;ZipInputStream;;;Argument[0];ReturnValue;taint",
256-
"java.util.zip;GZIPInputStream;false;GZIPInputStream;;;Argument[0];ReturnValue;taint",
257-
"java.util;StringTokenizer;false;StringTokenizer;;;Argument[0];ReturnValue;taint",
258-
"java.beans;XMLDecoder;false;XMLDecoder;;;Argument[0];ReturnValue;taint",
259-
"com.esotericsoftware.kryo.io;Input;false;Input;;;Argument[0];ReturnValue;taint",
260-
"java.io;BufferedInputStream;false;BufferedInputStream;;;Argument[0];ReturnValue;taint",
261-
"java.io;DataInputStream;false;DataInputStream;;;Argument[0];ReturnValue;taint",
262-
"java.io;ByteArrayInputStream;false;ByteArrayInputStream;;;Argument[0];ReturnValue;taint",
263-
"java.io;ObjectInputStream;false;ObjectInputStream;;;Argument[0];ReturnValue;taint",
264-
"java.io;StringReader;false;StringReader;;;Argument[0];ReturnValue;taint",
265-
"java.io;CharArrayReader;false;CharArrayReader;;;Argument[0];ReturnValue;taint",
266-
"java.io;BufferedReader;false;BufferedReader;;;Argument[0];ReturnValue;taint",
267-
"java.io;InputStreamReader;false;InputStreamReader;;;Argument[0];ReturnValue;taint"
246+
"java.io;File;false;File;;;Argument[0];Argument[-1];taint",
247+
"java.io;File;false;File;;;Argument[1];Argument[-1];taint",
248+
"java.net;URI;false;URI;(String);;Argument[0];Argument[-1];taint",
249+
"javax.xml.transform.stream;StreamSource;false;StreamSource;;;Argument[0];Argument[-1];taint",
250+
"javax.xml.transform.sax;SAXSource;false;SAXSource;(InputSource);;Argument[0];Argument[-1];taint",
251+
"javax.xml.transform.sax;SAXSource;false;SAXSource;(XMLReader,InputSource);;Argument[1];Argument[-1];taint",
252+
"org.xml.sax;InputSource;false;InputSource;;;Argument[0];Argument[-1];taint",
253+
"javax.servlet.http;Cookie;false;Cookie;;;Argument[0];Argument[-1];taint",
254+
"javax.servlet.http;Cookie;false;Cookie;;;Argument[1];Argument[-1];taint",
255+
"java.util.zip;ZipInputStream;false;ZipInputStream;;;Argument[0];Argument[-1];taint",
256+
"java.util.zip;GZIPInputStream;false;GZIPInputStream;;;Argument[0];Argument[-1];taint",
257+
"java.util;StringTokenizer;false;StringTokenizer;;;Argument[0];Argument[-1];taint",
258+
"java.beans;XMLDecoder;false;XMLDecoder;;;Argument[0];Argument[-1];taint",
259+
"com.esotericsoftware.kryo.io;Input;false;Input;;;Argument[0];Argument[-1];taint",
260+
"java.io;BufferedInputStream;false;BufferedInputStream;;;Argument[0];Argument[-1];taint",
261+
"java.io;DataInputStream;false;DataInputStream;;;Argument[0];Argument[-1];taint",
262+
"java.io;ByteArrayInputStream;false;ByteArrayInputStream;;;Argument[0];Argument[-1];taint",
263+
"java.io;ObjectInputStream;false;ObjectInputStream;;;Argument[0];Argument[-1];taint",
264+
"java.io;StringReader;false;StringReader;;;Argument[0];Argument[-1];taint",
265+
"java.io;CharArrayReader;false;CharArrayReader;;;Argument[0];Argument[-1];taint",
266+
"java.io;BufferedReader;false;BufferedReader;;;Argument[0];Argument[-1];taint",
267+
"java.io;InputStreamReader;false;InputStreamReader;;;Argument[0];Argument[-1];taint"
268268
]
269269
}
270270

@@ -697,15 +697,3 @@ predicate summaryStep(Node node1, Node node2, string kind) {
697697
interpretOutput(output, 0, ref, TNode(node2))
698698
)
699699
}
700-
701-
/**
702-
* Holds if `node1` to `node2` is specified as a flow step with the given kind, input and output
703-
* in a CSV flow model.
704-
*/
705-
predicate summaryStep(Node node1, Node node2, string kind, string input, string output) {
706-
exists(Top ref |
707-
summaryElementRef(ref, input, output, kind) and
708-
interpretInput(input, 0, ref, TNode(node1)) and
709-
interpretOutput(output, 0, ref, TNode(node2))
710-
)
711-
}

java/ql/src/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,6 @@ private predicate inputStreamWrapper(Constructor c, int argi) {
166166
/** An object construction that preserves the data flow status of any of its arguments. */
167167
private predicate constructorStep(Expr tracked, ConstructorCall sink) {
168168
exists(int argi | sink.getArgument(argi) = tracked |
169-
summaryStep(any(DataFlow::Node n | n.asExpr() = tracked),
170-
any(DataFlow::Node n | n.asExpr() = sink), "taint", "Argument(" + argi + ")", "ReturnValue")
171-
or
172169
// wrappers constructed by extension
173170
exists(Constructor c, Parameter p, SuperConstructorInvocationStmt sup |
174171
c = sink.getConstructor() and

0 commit comments

Comments
 (0)