Merge branch 'main' into starcke/automodel-pack

This commit is contained in:
Anders Starcke Henriksen
2023-08-30 09:25:28 +02:00
1326 changed files with 56700 additions and 39820 deletions

View File

@@ -3,40 +3,6 @@
* See `shared/util/codeql/util/test/InlineExpectationsTest.qll`
*/
private import java as J
private import codeql.util.test.InlineExpectationsTest
private module Impl implements InlineExpectationsTestSig {
/**
* A class representing line comments in Java, which is simply Javadoc restricted
* to EOL comments, with an extra accessor used by the InlineExpectations core code
*/
abstract class ExpectationComment extends J::Top {
/** Gets the contents of the given comment, _without_ the preceding comment marker (`//`). */
abstract string getContents();
}
private class JavadocExpectationComment extends J::Javadoc, ExpectationComment {
JavadocExpectationComment() { isEolComment(this) }
override string getContents() { result = this.getChild(0).toString() }
}
private class KtExpectationComment extends J::KtComment, ExpectationComment {
KtExpectationComment() { this.isEolComment() }
override string getContents() { result = this.getText().suffix(2).trim() }
}
private class XmlExpectationComment extends ExpectationComment instanceof J::XmlComment {
override string getContents() { result = super.getText().trim() }
override Location getLocation() { result = J::XmlComment.super.getLocation() }
override string toString() { result = J::XmlComment.super.toString() }
}
class Location = J::Location;
}
private import internal.InlineExpectationsTestImpl
import Make<Impl>

View File

@@ -1,119 +1,33 @@
/**
* Provides a simple base test for flow-related tests using inline expectations.
*
* Example for a test.ql:
* ```ql
* import java
* import TestUtilities.InlineFlowTest
* import DefaultFlowTest
* import PathGraph
*
* from PathNode source, PathNode sink
* where flowPath(source, sink)
* select sink, source, sink, "$@", source, source.toString()
* ```
*
* To declare expectations, you can use the $hasTaintFlow or $hasValueFlow comments within the test source files.
* Example of the corresponding test file, e.g. Test.java
* ```java
* public class Test {
*
* Object source() { return null; }
* String taint() { return null; }
* void sink(Object o) { }
*
* public void test() {
* Object s = source();
* sink(s); // $ hasValueFlow
* String t = "foo" + taint();
* sink(t); // $ hasTaintFlow
* }
*
* }
* ```
*
* If you are only interested in value flow, then instead of importing `DefaultFlowTest`, you can import
* `ValueFlowTest<DefaultFlowConfig>`. Similarly, if you are only interested in taint flow, then instead of
* importing `DefaultFlowTest`, you can import `TaintFlowTest<DefaultFlowConfig>`. In both cases
* `DefaultFlowConfig` can be replaced by another implementation of `DataFlow::ConfigSig`.
*
* If you need more fine-grained tuning, consider implementing a test using `InlineExpectationsTest`.
* Inline flow tests for Java.
* See `shared/util/codeql/dataflow/test/InlineFlowTest.qll`
*/
import java
import semmle.code.java.dataflow.DataFlow
import semmle.code.java.dataflow.ExternalFlow
import semmle.code.java.dataflow.TaintTracking
import TestUtilities.InlineExpectationsTest
private import codeql.dataflow.test.InlineFlowTest
private import semmle.code.java.dataflow.internal.DataFlowImplSpecific
private import semmle.code.java.dataflow.internal.TaintTrackingImplSpecific
private import internal.InlineExpectationsTestImpl
private predicate defaultSource(DataFlow::Node source) {
source.asExpr().(MethodAccess).getMethod().getName() = ["source", "taint"]
}
private predicate defaultSink(DataFlow::Node sink) {
exists(MethodAccess ma | ma.getMethod().hasName("sink") | sink.asExpr() = ma.getAnArgument())
}
module DefaultFlowConfig implements DataFlow::ConfigSig {
predicate isSource(DataFlow::Node source) { defaultSource(source) }
predicate isSink(DataFlow::Node sink) { defaultSink(sink) }
int fieldFlowBranchLimit() { result = 1000 }
}
private module NoFlowConfig implements DataFlow::ConfigSig {
predicate isSource(DataFlow::Node source) { none() }
predicate isSink(DataFlow::Node sink) { none() }
}
private string getSourceArgString(DataFlow::Node src) {
defaultSource(src) and
src.asExpr().(MethodAccess).getAnArgument().(StringLiteral).getValue() = result
}
module FlowTest<DataFlow::ConfigSig ValueFlowConfig, DataFlow::ConfigSig TaintFlowConfig> {
module ValueFlow = DataFlow::Global<ValueFlowConfig>;
module TaintFlow = TaintTracking::Global<TaintFlowConfig>;
private module InlineTest implements TestSig {
string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] }
predicate hasActualResult(Location location, string element, string tag, string value) {
tag = "hasValueFlow" and
exists(DataFlow::Node src, DataFlow::Node sink | ValueFlow::flow(src, sink) |
sink.getLocation() = location and
element = sink.toString() and
if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = ""
)
or
tag = "hasTaintFlow" and
exists(DataFlow::Node src, DataFlow::Node sink |
TaintFlow::flow(src, sink) and not ValueFlow::flow(src, sink)
|
sink.getLocation() = location and
element = sink.toString() and
if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = ""
)
}
private module FlowTestImpl implements InputSig<JavaDataFlow> {
predicate defaultSource(DataFlow::Node source) {
source.asExpr().(MethodAccess).getMethod().getName() = ["source", "taint"]
}
import MakeTest<InlineTest>
import DataFlow::MergePathGraph<ValueFlow::PathNode, TaintFlow::PathNode, ValueFlow::PathGraph, TaintFlow::PathGraph>
predicate defaultSink(DataFlow::Node sink) {
exists(MethodAccess ma | ma.getMethod().hasName("sink") | sink.asExpr() = ma.getAnArgument())
}
predicate flowPath(PathNode source, PathNode sink) {
ValueFlow::flowPath(source.asPathNode1(), sink.asPathNode1()) or
TaintFlow::flowPath(source.asPathNode2(), sink.asPathNode2())
private string getSourceArgString(DataFlow::Node src) {
defaultSource(src) and
src.asExpr().(MethodAccess).getAnArgument().(StringLiteral).getValue() = result
}
string getArgString(DataFlow::Node src, DataFlow::Node sink) {
(if exists(getSourceArgString(src)) then result = getSourceArgString(src) else result = "") and
exists(sink)
}
}
module DefaultFlowTest = FlowTest<DefaultFlowConfig, DefaultFlowConfig>;
module ValueFlowTest<DataFlow::ConfigSig ValueFlowConfig> {
import FlowTest<ValueFlowConfig, NoFlowConfig>
}
module TaintFlowTest<DataFlow::ConfigSig TaintFlowConfig> {
import FlowTest<NoFlowConfig, TaintFlowConfig>
}
import InlineFlowTestMake<JavaDataFlow, JavaTaintTracking, Impl, FlowTestImpl>

View File

@@ -0,0 +1,35 @@
private import java as J
private import codeql.util.test.InlineExpectationsTest
module Impl implements InlineExpectationsTestSig {
/**
* A class representing line comments in Java, which is simply Javadoc restricted
* to EOL comments, with an extra accessor used by the InlineExpectations core code
*/
abstract class ExpectationComment extends J::Top {
/** Gets the contents of the given comment, _without_ the preceding comment marker (`//`). */
abstract string getContents();
}
private class JavadocExpectationComment extends J::Javadoc, ExpectationComment {
JavadocExpectationComment() { isEolComment(this) }
override string getContents() { result = this.getChild(0).toString() }
}
private class KtExpectationComment extends J::KtComment, ExpectationComment {
KtExpectationComment() { this.isEolComment() }
override string getContents() { result = this.getText().suffix(2).trim() }
}
private class XmlExpectationComment extends ExpectationComment instanceof J::XmlComment {
override string getContents() { result = super.getText().trim() }
override Location getLocation() { result = J::XmlComment.super.getLocation() }
override string toString() { result = J::XmlComment.super.toString() }
}
class Location = J::Location;
}

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -11,7 +11,7 @@ where
// top jdk api names for which there isn't a manual model
exists(TopJdkApi topApi |
not topApi.hasManualMadModel() and
hasApiName(topApi.asCallable(), apiName) and
hasApiName(topApi, apiName) and
message = "no manual model"
)
select apiName, message order by apiName

View File

@@ -1,5 +1,3 @@
failures
testFailures
| test.kt:28:14:28:21 | getSecond(...) | Unexpected result: hasTaintFlow=a |
| test.kt:35:14:35:27 | component1(...) | Unexpected result: hasTaintFlow=d |
| test.kt:41:14:41:22 | getSecond(...) | Unexpected result: hasTaintFlow=e |

View File

@@ -3,15 +3,15 @@ extensions:
pack: codeql/java-all
extensible: summaryModel
data:
- ["my.callback.qltest", "A", False, "applyConsumer1", "(Object,Consumer1)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer1Field1Field2", "(A,A,Consumer1)", "", "Argument[0].Field[my.callback.qltest.A.field1]", "Argument[2].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer1Field1Field2", "(A,A,Consumer1)", "", "Argument[1].Field[my.callback.qltest.A.field2]", "Argument[2].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer2", "(Object,Consumer2)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer3", "(Object,Consumer3)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer3_ret_postup", "(Consumer3)", "", "Argument[0].Parameter[0]", "ReturnValue", "value", "manual"]
- ["my.callback.qltest", "A", False, "forEach", "(Object[],Consumer3)", "", "Argument[0].ArrayElement", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyProducer1", "(Producer1)", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"]
- ["my.callback.qltest", "A", False, "produceConsume", "(Producer1,Consumer3)", "", "Argument[0].ReturnValue", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "produceConsume", "(Producer1,Consumer3)", "", "Argument[1].Parameter[0]", "ReturnValue", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConverter1", "(Object,Converter1)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConverter1", "(Object,Converter1)", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer1", "(Object,A$Consumer1)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer1Field1Field2", "(A,A,A$Consumer1)", "", "Argument[0].Field[my.callback.qltest.A.field1]", "Argument[2].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer1Field1Field2", "(A,A,A$Consumer1)", "", "Argument[1].Field[my.callback.qltest.A.field2]", "Argument[2].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer2", "(Object,A$Consumer2)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer3", "(Object,A$Consumer3)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConsumer3_ret_postup", "(A$Consumer3)", "", "Argument[0].Parameter[0]", "ReturnValue", "value", "manual"]
- ["my.callback.qltest", "A", False, "forEach", "(Object[],A$Consumer3)", "", "Argument[0].ArrayElement", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyProducer1", "(A$Producer1)", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"]
- ["my.callback.qltest", "A", False, "produceConsume", "(A$Producer1,A$Consumer3)", "", "Argument[0].ReturnValue", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "produceConsume", "(A$Producer1,A$Consumer3)", "", "Argument[1].Parameter[0]", "ReturnValue", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConverter1", "(Object,A$Converter1)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"]
- ["my.callback.qltest", "A", False, "applyConverter1", "(Object,A$Converter1)", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"]

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -210,7 +210,7 @@ public class B {
r1.run();
};
r2.run();
sink(out.get(0)); // $ MISSING: hasValueFlow=double.capture.out
sink(out.get(0)); // $ hasValueFlow=double.capture.out
}
void testEnhancedForStmtCapture() {

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,3 +1,2 @@
failures
testFailures
invalidModelRow

View File

@@ -1,4 +1,5 @@
import java
import semmle.code.java.dataflow.ExternalFlow
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import ModelValidation

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,5 +1,8 @@
import java.io.File;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceProvider;
@@ -8,37 +11,88 @@ import javax.xml.ws.WebServiceProvider;
class WebServiceClass { // $ JaxWsEndpoint
@WebMethod
void WebMethodMethod() { // $ JaxWsEndpointRemoteMethod
public void WebMethodMethod() { // $ JaxWsEndpointRemoteMethod
}
@WebEndpoint
void WebEndpointMethod() { // $ JaxWsEndpointRemoteMethod
public void WebEndpointMethod() { // $ JaxWsEndpointRemoteMethod
}
public String acceptableTypes(String param) { // $ JaxWsEndpointRemoteMethod
return null;
}
public String unacceptableParamType(File param) { // not an endpoint
return null;
}
public File unacceptableReturnType() { // not an endpoint
return null;
}
@XmlJavaTypeAdapter
public File annotatedTypes(@XmlJavaTypeAdapter File param) { // $ JaxWsEndpointRemoteMethod
return null;
}
}
@WebServiceProvider
class WebServiceProviderClass { // $ JaxWsEndpoint
@WebMethod
void WebMethodMethod() { // $ JaxWsEndpointRemoteMethod
public void WebMethodMethod() { // $ JaxWsEndpointRemoteMethod
}
@WebEndpoint
void WebEndpointMethod() { // $ JaxWsEndpointRemoteMethod
public void WebEndpointMethod() { // $ JaxWsEndpointRemoteMethod
}
public String acceptableTypes(String param) { // $ JaxWsEndpointRemoteMethod
return null;
}
public String unacceptableParamType(File param) { // not an endpoint
return null;
}
public File unacceptableReturnType() { // not an endpoint
return null;
}
@XmlJavaTypeAdapter
public File annotatedTypes(@XmlJavaTypeAdapter File param) { // $ JaxWsEndpointRemoteMethod
return null;
}
}
@WebServiceClient
class WebServiceClientClass { // $ JaxWsEndpoint
@WebMethod
void WebMethodMethod() { // $ JaxWsEndpointRemoteMethod
public void WebMethodMethod() { // $ JaxWsEndpointRemoteMethod
}
@WebEndpoint
void WebEndpointMethod() { // $ JaxWsEndpointRemoteMethod
public void WebEndpointMethod() { // $ JaxWsEndpointRemoteMethod
}
public String acceptableTypes(String param) { // $ JaxWsEndpointRemoteMethod
return null;
}
public String unacceptableParamType(File param) { // not an endpoint
return null;
}
public File unacceptableReturnType() { // not an endpoint
return null;
}
@XmlJavaTypeAdapter
public File annotatedTypes(@XmlJavaTypeAdapter File param) { // $ JaxWsEndpointRemoteMethod
return null;
}
}

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,3 +1,2 @@
failures
testFailures
valueOf

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,5 +1,6 @@
import java
import semmle.code.java.dataflow.DataFlow
import semmle.code.java.dataflow.ExternalFlow
import TestUtilities.InlineFlowTest
module OkHttpFlowConfig implements DataFlow::ConfigSig {

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,5 +1,6 @@
import java
import semmle.code.java.dataflow.DataFlow
import semmle.code.java.dataflow.ExternalFlow
import TestUtilities.InlineFlowTest
module FlowConfig implements DataFlow::ConfigSig {

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,5 +1,6 @@
| java.io.File#File(String) | 2 |
| java.net.URL#URL(String) | 2 |
| java.io.File#compareTo(File) | 1 |
| java.io.FileWriter#FileWriter(File) | 1 |
| java.lang.StringBuilder#append(String) | 1 |
| java.lang.StringBuilder#toString() | 1 |

View File

@@ -17,7 +17,7 @@ class SupportedExternalApis {
map.put("foo", new Object()); // supported summary
map.entrySet().iterator().next().getKey(); // nested class (Map.Entry), supported summaries (entrySet, iterator, next, getKey)
Duration d = java.time.Duration.ofMillis(1000); // supported neutral
Duration d = java.time.Duration.ofMillis(1000); // supported neutral summary
URL github = new URL("https://www.github.com/"); // supported summary
InputStream stream = github.openConnection().getInputStream(); // supported source (getInputStream), supported sink (openConnection)
@@ -25,6 +25,9 @@ class SupportedExternalApis {
new FileWriter(new File("foo")); // supported sink (FileWriter), supported summary (File)
new URL("http://foo").openStream(); // supported sink (openStream), supported summary (URL)
FileUtils.deleteDirectory(new File("foo")); // supported neutral (deleteDirectory), supported summary (File)
File file = new File("foo"); // supported summary (File)
FileUtils.deleteDirectory(file); // supported neutral summary (deleteDirectory)
file.compareTo(file); // supported neutral sink (compareTo)
}
}

View File

@@ -11,15 +11,15 @@ class ExternalApiUsage {
Map<String, Object> map = new HashMap<>();
map.put("foo", new Object());
Duration d = java.time.Duration.ofMillis(1000); // supported as a neutral model
Duration d = java.time.Duration.ofMillis(1000); // supported as a neutral summary model
long l = "foo".length(); // supported as a neutral model
long l = "foo".length(); // supported as a neutral summary model
AtomicReference<String> ref = new AtomicReference<>(); // uninteresting (parameterless constructor)
ref.set("foo"); // supported as a summary model
ref.toString(); // not supported
String.class.isAssignableFrom(Object.class); // parameter with generic type, supported as a neutral model
String.class.isAssignableFrom(Object.class); // parameter with generic type, supported as a neutral summary model
System.out.println(d);
System.out.println(map);

View File

@@ -19,110 +19,114 @@ edges
| Test.java:100:32:100:32 | t : String | Test.java:100:12:100:45 | new URI(...) |
| Test.java:100:32:100:32 | t : String | Test.java:101:41:101:41 | t : String |
| Test.java:101:41:101:41 | t : String | Test.java:101:12:101:54 | new URI(...) |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:34:61:34:68 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:36:41:36:48 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:38:56:38:63 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:40:46:40:53 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:42:38:42:45 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:44:36:44:43 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:46:31:46:38 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:48:33:48:40 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:50:27:50:34 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:52:27:52:34 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:54:40:54:47 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:56:47:56:54 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:58:40:58:47 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:60:38:60:45 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:62:33:62:40 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:64:33:64:40 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:66:41:66:48 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:68:42:68:49 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:70:37:70:44 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:72:29:72:36 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:74:37:74:44 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:76:28:76:35 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:78:33:78:40 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:80:40:80:47 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:82:40:82:47 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:83:40:83:47 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:85:38:85:45 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:87:28:87:35 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:88:28:88:35 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:89:28:89:35 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:91:34:91:41 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:92:34:92:41 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:94:33:94:40 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:96:42:96:49 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:98:50:98:57 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:100:54:100:61 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:102:50:102:57 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:104:35:104:42 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:106:48:106:55 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:111:37:111:44 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:113:74:113:81 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:115:68:115:75 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:117:68:117:75 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:119:30:119:37 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:124:30:124:37 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:129:33:129:40 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:131:27:131:34 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:133:28:133:35 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:135:29:135:36 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:140:27:140:34 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:142:26:142:33 | source(...) : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:147:29:147:36 | source(...) : String |
| mad/Test.java:34:61:34:68 | source(...) : String | mad/Test.java:34:52:34:68 | (...)... |
| mad/Test.java:36:41:36:48 | source(...) : String | mad/Test.java:36:32:36:48 | (...)... |
| mad/Test.java:38:56:38:63 | source(...) : String | mad/Test.java:38:47:38:63 | (...)... |
| mad/Test.java:40:46:40:53 | source(...) : String | mad/Test.java:40:39:40:53 | (...)... |
| mad/Test.java:42:38:42:45 | source(...) : String | mad/Test.java:42:31:42:45 | (...)... |
| mad/Test.java:44:36:44:43 | source(...) : String | mad/Test.java:44:29:44:43 | (...)... |
| mad/Test.java:46:31:46:38 | source(...) : String | mad/Test.java:46:24:46:38 | (...)... |
| mad/Test.java:48:33:48:40 | source(...) : String | mad/Test.java:48:24:48:40 | (...)... |
| mad/Test.java:50:27:50:34 | source(...) : String | mad/Test.java:50:20:50:34 | (...)... |
| mad/Test.java:52:27:52:34 | source(...) : String | mad/Test.java:52:20:52:34 | (...)... |
| mad/Test.java:54:40:54:47 | source(...) : String | mad/Test.java:54:33:54:47 | (...)... |
| mad/Test.java:56:47:56:54 | source(...) : String | mad/Test.java:56:40:56:54 | (...)... |
| mad/Test.java:58:40:58:47 | source(...) : String | mad/Test.java:58:33:58:47 | (...)... |
| mad/Test.java:60:38:60:45 | source(...) : String | mad/Test.java:60:31:60:45 | (...)... |
| mad/Test.java:62:33:62:40 | source(...) : String | mad/Test.java:62:26:62:40 | (...)... |
| mad/Test.java:64:33:64:40 | source(...) : String | mad/Test.java:64:26:64:40 | (...)... |
| mad/Test.java:66:41:66:48 | source(...) : String | mad/Test.java:66:34:66:48 | (...)... |
| mad/Test.java:68:42:68:49 | source(...) : String | mad/Test.java:68:35:68:49 | (...)... |
| mad/Test.java:70:37:70:44 | source(...) : String | mad/Test.java:70:30:70:44 | (...)... |
| mad/Test.java:72:29:72:36 | source(...) : String | mad/Test.java:72:22:72:36 | (...)... |
| mad/Test.java:74:37:74:44 | source(...) : String | mad/Test.java:74:30:74:44 | (...)... |
| mad/Test.java:76:28:76:35 | source(...) : String | mad/Test.java:76:21:76:35 | (...)... |
| mad/Test.java:78:33:78:40 | source(...) : String | mad/Test.java:78:26:78:40 | (...)... |
| mad/Test.java:80:40:80:47 | source(...) : String | mad/Test.java:80:33:80:47 | (...)... |
| mad/Test.java:82:40:82:47 | source(...) : String | mad/Test.java:82:33:82:47 | (...)... |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:35:61:35:68 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:37:41:37:48 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:39:56:39:63 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:41:46:41:53 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:43:38:43:45 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:45:36:45:43 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:47:31:47:38 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:49:33:49:40 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:51:27:51:34 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:53:27:53:34 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:55:40:55:47 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:57:47:57:54 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:59:40:59:47 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:61:38:61:45 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:63:33:63:40 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:65:33:65:40 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:67:41:67:48 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:69:42:69:49 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:71:37:71:44 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:73:29:73:36 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:75:37:75:44 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:77:28:77:35 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:79:33:79:40 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:81:40:81:47 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:83:40:83:47 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:84:40:84:47 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:86:38:86:45 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:88:28:88:35 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:89:28:89:35 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:90:28:90:35 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:92:34:92:41 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:93:34:93:41 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:95:33:95:40 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:97:42:97:49 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:99:50:99:57 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:101:54:101:61 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:103:50:103:57 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:105:35:105:42 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:107:48:107:55 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:109:37:109:44 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:111:35:111:42 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:116:37:116:44 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:118:74:118:81 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:120:68:120:75 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:122:68:122:75 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:124:30:124:37 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:129:30:129:37 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:134:33:134:40 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:136:27:136:34 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:138:28:138:35 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:140:29:140:36 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:145:27:145:34 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:147:26:147:33 | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:152:29:152:36 | source(...) : String |
| mad/Test.java:35:61:35:68 | source(...) : String | mad/Test.java:35:52:35:68 | (...)... |
| mad/Test.java:37:41:37:48 | source(...) : String | mad/Test.java:37:32:37:48 | (...)... |
| mad/Test.java:39:56:39:63 | source(...) : String | mad/Test.java:39:47:39:63 | (...)... |
| mad/Test.java:41:46:41:53 | source(...) : String | mad/Test.java:41:39:41:53 | (...)... |
| mad/Test.java:43:38:43:45 | source(...) : String | mad/Test.java:43:31:43:45 | (...)... |
| mad/Test.java:45:36:45:43 | source(...) : String | mad/Test.java:45:29:45:43 | (...)... |
| mad/Test.java:47:31:47:38 | source(...) : String | mad/Test.java:47:24:47:38 | (...)... |
| mad/Test.java:49:33:49:40 | source(...) : String | mad/Test.java:49:24:49:40 | (...)... |
| mad/Test.java:51:27:51:34 | source(...) : String | mad/Test.java:51:20:51:34 | (...)... |
| mad/Test.java:53:27:53:34 | source(...) : String | mad/Test.java:53:20:53:34 | (...)... |
| mad/Test.java:55:40:55:47 | source(...) : String | mad/Test.java:55:33:55:47 | (...)... |
| mad/Test.java:57:47:57:54 | source(...) : String | mad/Test.java:57:40:57:54 | (...)... |
| mad/Test.java:59:40:59:47 | source(...) : String | mad/Test.java:59:33:59:47 | (...)... |
| mad/Test.java:61:38:61:45 | source(...) : String | mad/Test.java:61:31:61:45 | (...)... |
| mad/Test.java:63:33:63:40 | source(...) : String | mad/Test.java:63:26:63:40 | (...)... |
| mad/Test.java:65:33:65:40 | source(...) : String | mad/Test.java:65:26:65:40 | (...)... |
| mad/Test.java:67:41:67:48 | source(...) : String | mad/Test.java:67:34:67:48 | (...)... |
| mad/Test.java:69:42:69:49 | source(...) : String | mad/Test.java:69:35:69:49 | (...)... |
| mad/Test.java:71:37:71:44 | source(...) : String | mad/Test.java:71:30:71:44 | (...)... |
| mad/Test.java:73:29:73:36 | source(...) : String | mad/Test.java:73:22:73:36 | (...)... |
| mad/Test.java:75:37:75:44 | source(...) : String | mad/Test.java:75:30:75:44 | (...)... |
| mad/Test.java:77:28:77:35 | source(...) : String | mad/Test.java:77:21:77:35 | (...)... |
| mad/Test.java:79:33:79:40 | source(...) : String | mad/Test.java:79:26:79:40 | (...)... |
| mad/Test.java:81:40:81:47 | source(...) : String | mad/Test.java:81:33:81:47 | (...)... |
| mad/Test.java:83:40:83:47 | source(...) : String | mad/Test.java:83:33:83:47 | (...)... |
| mad/Test.java:85:38:85:45 | source(...) : String | mad/Test.java:85:31:85:45 | (...)... |
| mad/Test.java:87:28:87:35 | source(...) : String | mad/Test.java:87:21:87:35 | (...)... |
| mad/Test.java:84:40:84:47 | source(...) : String | mad/Test.java:84:33:84:47 | (...)... |
| mad/Test.java:86:38:86:45 | source(...) : String | mad/Test.java:86:31:86:45 | (...)... |
| mad/Test.java:88:28:88:35 | source(...) : String | mad/Test.java:88:21:88:35 | (...)... |
| mad/Test.java:89:28:89:35 | source(...) : String | mad/Test.java:89:21:89:35 | (...)... |
| mad/Test.java:91:34:91:41 | source(...) : String | mad/Test.java:91:27:91:41 | (...)... |
| mad/Test.java:90:28:90:35 | source(...) : String | mad/Test.java:90:21:90:35 | (...)... |
| mad/Test.java:92:34:92:41 | source(...) : String | mad/Test.java:92:27:92:41 | (...)... |
| mad/Test.java:94:33:94:40 | source(...) : String | mad/Test.java:94:26:94:40 | (...)... |
| mad/Test.java:96:42:96:49 | source(...) : String | mad/Test.java:96:35:96:49 | (...)... |
| mad/Test.java:98:50:98:57 | source(...) : String | mad/Test.java:98:41:98:57 | (...)... |
| mad/Test.java:100:54:100:61 | source(...) : String | mad/Test.java:100:45:100:61 | (...)... |
| mad/Test.java:102:50:102:57 | source(...) : String | mad/Test.java:102:43:102:57 | (...)... |
| mad/Test.java:104:35:104:42 | source(...) : String | mad/Test.java:104:28:104:42 | (...)... |
| mad/Test.java:106:48:106:55 | source(...) : String | mad/Test.java:106:41:106:55 | (...)... |
| mad/Test.java:111:37:111:44 | source(...) : String | mad/Test.java:111:30:111:44 | (...)... |
| mad/Test.java:113:74:113:81 | source(...) : String | mad/Test.java:113:40:113:81 | (...)... |
| mad/Test.java:115:68:115:75 | source(...) : String | mad/Test.java:115:34:115:75 | (...)... |
| mad/Test.java:117:68:117:75 | source(...) : String | mad/Test.java:117:34:117:75 | (...)... |
| mad/Test.java:119:30:119:37 | source(...) : String | mad/Test.java:119:23:119:37 | (...)... |
| mad/Test.java:93:34:93:41 | source(...) : String | mad/Test.java:93:27:93:41 | (...)... |
| mad/Test.java:95:33:95:40 | source(...) : String | mad/Test.java:95:26:95:40 | (...)... |
| mad/Test.java:97:42:97:49 | source(...) : String | mad/Test.java:97:35:97:49 | (...)... |
| mad/Test.java:99:50:99:57 | source(...) : String | mad/Test.java:99:41:99:57 | (...)... |
| mad/Test.java:101:54:101:61 | source(...) : String | mad/Test.java:101:45:101:61 | (...)... |
| mad/Test.java:103:50:103:57 | source(...) : String | mad/Test.java:103:43:103:57 | (...)... |
| mad/Test.java:105:35:105:42 | source(...) : String | mad/Test.java:105:28:105:42 | (...)... |
| mad/Test.java:107:48:107:55 | source(...) : String | mad/Test.java:107:41:107:55 | (...)... |
| mad/Test.java:109:37:109:44 | source(...) : String | mad/Test.java:109:28:109:44 | (...)... |
| mad/Test.java:111:35:111:42 | source(...) : String | mad/Test.java:111:28:111:42 | (...)... |
| mad/Test.java:116:37:116:44 | source(...) : String | mad/Test.java:116:30:116:44 | (...)... |
| mad/Test.java:118:74:118:81 | source(...) : String | mad/Test.java:118:40:118:81 | (...)... |
| mad/Test.java:120:68:120:75 | source(...) : String | mad/Test.java:120:34:120:75 | (...)... |
| mad/Test.java:122:68:122:75 | source(...) : String | mad/Test.java:122:34:122:75 | (...)... |
| mad/Test.java:124:30:124:37 | source(...) : String | mad/Test.java:124:23:124:37 | (...)... |
| mad/Test.java:129:33:129:40 | source(...) : String | mad/Test.java:129:23:129:40 | (...)... |
| mad/Test.java:131:27:131:34 | source(...) : String | mad/Test.java:131:20:131:34 | (...)... |
| mad/Test.java:133:28:133:35 | source(...) : String | mad/Test.java:133:21:133:35 | (...)... |
| mad/Test.java:135:29:135:36 | source(...) : String | mad/Test.java:135:22:135:36 | (...)... |
| mad/Test.java:140:27:140:34 | source(...) : String | mad/Test.java:140:20:140:34 | (...)... |
| mad/Test.java:142:26:142:33 | source(...) : String | mad/Test.java:142:19:142:33 | (...)... |
| mad/Test.java:147:29:147:36 | source(...) : String | mad/Test.java:147:20:147:36 | (...)... |
| mad/Test.java:129:30:129:37 | source(...) : String | mad/Test.java:129:23:129:37 | (...)... |
| mad/Test.java:134:33:134:40 | source(...) : String | mad/Test.java:134:23:134:40 | (...)... |
| mad/Test.java:136:27:136:34 | source(...) : String | mad/Test.java:136:20:136:34 | (...)... |
| mad/Test.java:138:28:138:35 | source(...) : String | mad/Test.java:138:21:138:35 | (...)... |
| mad/Test.java:140:29:140:36 | source(...) : String | mad/Test.java:140:22:140:36 | (...)... |
| mad/Test.java:145:27:145:34 | source(...) : String | mad/Test.java:145:20:145:34 | (...)... |
| mad/Test.java:147:26:147:33 | source(...) : String | mad/Test.java:147:19:147:33 | (...)... |
| mad/Test.java:152:29:152:36 | source(...) : String | mad/Test.java:152:20:152:36 | (...)... |
nodes
| Test.java:19:18:19:38 | getHostName(...) : String | semmle.label | getHostName(...) : String |
| Test.java:24:20:24:23 | temp | semmle.label | temp |
@@ -148,111 +152,115 @@ nodes
| Test.java:100:32:100:32 | t : String | semmle.label | t : String |
| Test.java:101:12:101:54 | new URI(...) | semmle.label | new URI(...) |
| Test.java:101:41:101:41 | t : String | semmle.label | t : String |
| mad/Test.java:29:16:29:36 | getHostName(...) : String | semmle.label | getHostName(...) : String |
| mad/Test.java:34:52:34:68 | (...)... | semmle.label | (...)... |
| mad/Test.java:34:61:34:68 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:36:32:36:48 | (...)... | semmle.label | (...)... |
| mad/Test.java:36:41:36:48 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:38:47:38:63 | (...)... | semmle.label | (...)... |
| mad/Test.java:38:56:38:63 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:40:39:40:53 | (...)... | semmle.label | (...)... |
| mad/Test.java:40:46:40:53 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:42:31:42:45 | (...)... | semmle.label | (...)... |
| mad/Test.java:42:38:42:45 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:44:29:44:43 | (...)... | semmle.label | (...)... |
| mad/Test.java:44:36:44:43 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:46:24:46:38 | (...)... | semmle.label | (...)... |
| mad/Test.java:46:31:46:38 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:48:24:48:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:48:33:48:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:50:20:50:34 | (...)... | semmle.label | (...)... |
| mad/Test.java:50:27:50:34 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:52:20:52:34 | (...)... | semmle.label | (...)... |
| mad/Test.java:52:27:52:34 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:54:33:54:47 | (...)... | semmle.label | (...)... |
| mad/Test.java:54:40:54:47 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:56:40:56:54 | (...)... | semmle.label | (...)... |
| mad/Test.java:56:47:56:54 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:58:33:58:47 | (...)... | semmle.label | (...)... |
| mad/Test.java:58:40:58:47 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:60:31:60:45 | (...)... | semmle.label | (...)... |
| mad/Test.java:60:38:60:45 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:62:26:62:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:62:33:62:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:64:26:64:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:64:33:64:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:66:34:66:48 | (...)... | semmle.label | (...)... |
| mad/Test.java:66:41:66:48 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:68:35:68:49 | (...)... | semmle.label | (...)... |
| mad/Test.java:68:42:68:49 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:70:30:70:44 | (...)... | semmle.label | (...)... |
| mad/Test.java:70:37:70:44 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:72:22:72:36 | (...)... | semmle.label | (...)... |
| mad/Test.java:72:29:72:36 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:74:30:74:44 | (...)... | semmle.label | (...)... |
| mad/Test.java:74:37:74:44 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:76:21:76:35 | (...)... | semmle.label | (...)... |
| mad/Test.java:76:28:76:35 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:78:26:78:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:78:33:78:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:80:33:80:47 | (...)... | semmle.label | (...)... |
| mad/Test.java:80:40:80:47 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:82:33:82:47 | (...)... | semmle.label | (...)... |
| mad/Test.java:82:40:82:47 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:30:16:30:36 | getHostName(...) : String | semmle.label | getHostName(...) : String |
| mad/Test.java:35:52:35:68 | (...)... | semmle.label | (...)... |
| mad/Test.java:35:61:35:68 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:37:32:37:48 | (...)... | semmle.label | (...)... |
| mad/Test.java:37:41:37:48 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:39:47:39:63 | (...)... | semmle.label | (...)... |
| mad/Test.java:39:56:39:63 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:41:39:41:53 | (...)... | semmle.label | (...)... |
| mad/Test.java:41:46:41:53 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:43:31:43:45 | (...)... | semmle.label | (...)... |
| mad/Test.java:43:38:43:45 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:45:29:45:43 | (...)... | semmle.label | (...)... |
| mad/Test.java:45:36:45:43 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:47:24:47:38 | (...)... | semmle.label | (...)... |
| mad/Test.java:47:31:47:38 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:49:24:49:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:49:33:49:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:51:20:51:34 | (...)... | semmle.label | (...)... |
| mad/Test.java:51:27:51:34 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:53:20:53:34 | (...)... | semmle.label | (...)... |
| mad/Test.java:53:27:53:34 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:55:33:55:47 | (...)... | semmle.label | (...)... |
| mad/Test.java:55:40:55:47 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:57:40:57:54 | (...)... | semmle.label | (...)... |
| mad/Test.java:57:47:57:54 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:59:33:59:47 | (...)... | semmle.label | (...)... |
| mad/Test.java:59:40:59:47 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:61:31:61:45 | (...)... | semmle.label | (...)... |
| mad/Test.java:61:38:61:45 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:63:26:63:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:63:33:63:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:65:26:65:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:65:33:65:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:67:34:67:48 | (...)... | semmle.label | (...)... |
| mad/Test.java:67:41:67:48 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:69:35:69:49 | (...)... | semmle.label | (...)... |
| mad/Test.java:69:42:69:49 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:71:30:71:44 | (...)... | semmle.label | (...)... |
| mad/Test.java:71:37:71:44 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:73:22:73:36 | (...)... | semmle.label | (...)... |
| mad/Test.java:73:29:73:36 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:75:30:75:44 | (...)... | semmle.label | (...)... |
| mad/Test.java:75:37:75:44 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:77:21:77:35 | (...)... | semmle.label | (...)... |
| mad/Test.java:77:28:77:35 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:79:26:79:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:79:33:79:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:81:33:81:47 | (...)... | semmle.label | (...)... |
| mad/Test.java:81:40:81:47 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:83:33:83:47 | (...)... | semmle.label | (...)... |
| mad/Test.java:83:40:83:47 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:85:31:85:45 | (...)... | semmle.label | (...)... |
| mad/Test.java:85:38:85:45 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:87:21:87:35 | (...)... | semmle.label | (...)... |
| mad/Test.java:87:28:87:35 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:84:33:84:47 | (...)... | semmle.label | (...)... |
| mad/Test.java:84:40:84:47 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:86:31:86:45 | (...)... | semmle.label | (...)... |
| mad/Test.java:86:38:86:45 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:88:21:88:35 | (...)... | semmle.label | (...)... |
| mad/Test.java:88:28:88:35 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:89:21:89:35 | (...)... | semmle.label | (...)... |
| mad/Test.java:89:28:89:35 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:91:27:91:41 | (...)... | semmle.label | (...)... |
| mad/Test.java:91:34:91:41 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:90:21:90:35 | (...)... | semmle.label | (...)... |
| mad/Test.java:90:28:90:35 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:92:27:92:41 | (...)... | semmle.label | (...)... |
| mad/Test.java:92:34:92:41 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:94:26:94:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:94:33:94:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:96:35:96:49 | (...)... | semmle.label | (...)... |
| mad/Test.java:96:42:96:49 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:98:41:98:57 | (...)... | semmle.label | (...)... |
| mad/Test.java:98:50:98:57 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:100:45:100:61 | (...)... | semmle.label | (...)... |
| mad/Test.java:100:54:100:61 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:102:43:102:57 | (...)... | semmle.label | (...)... |
| mad/Test.java:102:50:102:57 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:104:28:104:42 | (...)... | semmle.label | (...)... |
| mad/Test.java:104:35:104:42 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:106:41:106:55 | (...)... | semmle.label | (...)... |
| mad/Test.java:106:48:106:55 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:111:30:111:44 | (...)... | semmle.label | (...)... |
| mad/Test.java:111:37:111:44 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:113:40:113:81 | (...)... | semmle.label | (...)... |
| mad/Test.java:113:74:113:81 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:115:34:115:75 | (...)... | semmle.label | (...)... |
| mad/Test.java:115:68:115:75 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:117:34:117:75 | (...)... | semmle.label | (...)... |
| mad/Test.java:117:68:117:75 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:119:23:119:37 | (...)... | semmle.label | (...)... |
| mad/Test.java:119:30:119:37 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:93:27:93:41 | (...)... | semmle.label | (...)... |
| mad/Test.java:93:34:93:41 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:95:26:95:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:95:33:95:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:97:35:97:49 | (...)... | semmle.label | (...)... |
| mad/Test.java:97:42:97:49 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:99:41:99:57 | (...)... | semmle.label | (...)... |
| mad/Test.java:99:50:99:57 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:101:45:101:61 | (...)... | semmle.label | (...)... |
| mad/Test.java:101:54:101:61 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:103:43:103:57 | (...)... | semmle.label | (...)... |
| mad/Test.java:103:50:103:57 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:105:28:105:42 | (...)... | semmle.label | (...)... |
| mad/Test.java:105:35:105:42 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:107:41:107:55 | (...)... | semmle.label | (...)... |
| mad/Test.java:107:48:107:55 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:109:28:109:44 | (...)... | semmle.label | (...)... |
| mad/Test.java:109:37:109:44 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:111:28:111:42 | (...)... | semmle.label | (...)... |
| mad/Test.java:111:35:111:42 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:116:30:116:44 | (...)... | semmle.label | (...)... |
| mad/Test.java:116:37:116:44 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:118:40:118:81 | (...)... | semmle.label | (...)... |
| mad/Test.java:118:74:118:81 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:120:34:120:75 | (...)... | semmle.label | (...)... |
| mad/Test.java:120:68:120:75 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:122:34:122:75 | (...)... | semmle.label | (...)... |
| mad/Test.java:122:68:122:75 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:124:23:124:37 | (...)... | semmle.label | (...)... |
| mad/Test.java:124:30:124:37 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:129:23:129:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:129:33:129:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:131:20:131:34 | (...)... | semmle.label | (...)... |
| mad/Test.java:131:27:131:34 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:133:21:133:35 | (...)... | semmle.label | (...)... |
| mad/Test.java:133:28:133:35 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:135:22:135:36 | (...)... | semmle.label | (...)... |
| mad/Test.java:135:29:135:36 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:140:20:140:34 | (...)... | semmle.label | (...)... |
| mad/Test.java:140:27:140:34 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:142:19:142:33 | (...)... | semmle.label | (...)... |
| mad/Test.java:142:26:142:33 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:147:20:147:36 | (...)... | semmle.label | (...)... |
| mad/Test.java:147:29:147:36 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:129:23:129:37 | (...)... | semmle.label | (...)... |
| mad/Test.java:129:30:129:37 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:134:23:134:40 | (...)... | semmle.label | (...)... |
| mad/Test.java:134:33:134:40 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:136:20:136:34 | (...)... | semmle.label | (...)... |
| mad/Test.java:136:27:136:34 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:138:21:138:35 | (...)... | semmle.label | (...)... |
| mad/Test.java:138:28:138:35 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:140:22:140:36 | (...)... | semmle.label | (...)... |
| mad/Test.java:140:29:140:36 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:145:20:145:34 | (...)... | semmle.label | (...)... |
| mad/Test.java:145:27:145:34 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:147:19:147:33 | (...)... | semmle.label | (...)... |
| mad/Test.java:147:26:147:33 | source(...) : String | semmle.label | source(...) : String |
| mad/Test.java:152:20:152:36 | (...)... | semmle.label | (...)... |
| mad/Test.java:152:29:152:36 | source(...) : String | semmle.label | source(...) : String |
subpaths
#select
| Test.java:24:11:24:24 | new File(...) | Test.java:19:18:19:38 | getHostName(...) : String | Test.java:24:20:24:23 | temp | This path depends on a $@. | Test.java:19:18:19:38 | getHostName(...) | user-provided value |
@@ -266,55 +274,57 @@ subpaths
| Test.java:99:3:99:34 | new File(...) | Test.java:95:14:95:34 | getHostName(...) : String | Test.java:99:12:99:33 | new URI(...) | This path depends on a $@. | Test.java:95:14:95:34 | getHostName(...) | user-provided value |
| Test.java:100:3:100:46 | new File(...) | Test.java:95:14:95:34 | getHostName(...) : String | Test.java:100:12:100:45 | new URI(...) | This path depends on a $@. | Test.java:95:14:95:34 | getHostName(...) | user-provided value |
| Test.java:101:3:101:55 | new File(...) | Test.java:95:14:95:34 | getHostName(...) : String | Test.java:101:12:101:54 | new URI(...) | This path depends on a $@. | Test.java:95:14:95:34 | getHostName(...) | user-provided value |
| mad/Test.java:34:52:34:68 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:34:52:34:68 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:36:32:36:48 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:36:32:36:48 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:38:47:38:63 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:38:47:38:63 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:40:39:40:53 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:40:39:40:53 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:42:31:42:45 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:42:31:42:45 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:44:29:44:43 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:44:29:44:43 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:46:24:46:38 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:46:24:46:38 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:48:9:48:41 | new FileReader(...) | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:48:24:48:40 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:50:20:50:34 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:50:20:50:34 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:52:20:52:34 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:52:20:52:34 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:54:33:54:47 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:54:33:54:47 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:56:40:56:54 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:56:40:56:54 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:58:33:58:47 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:58:33:58:47 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:60:31:60:45 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:60:31:60:45 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:62:26:62:40 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:62:26:62:40 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:64:26:64:40 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:64:26:64:40 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:66:34:66:48 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:66:34:66:48 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:68:35:68:49 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:68:35:68:49 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:70:30:70:44 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:70:30:70:44 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:72:22:72:36 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:72:22:72:36 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:74:30:74:44 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:74:30:74:44 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:76:21:76:35 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:76:21:76:35 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:78:26:78:40 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:78:26:78:40 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:80:33:80:47 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:80:33:80:47 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:82:33:82:47 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:82:33:82:47 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:83:33:83:47 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:83:33:83:47 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:85:31:85:45 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:85:31:85:45 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:87:21:87:35 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:87:21:87:35 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:88:21:88:35 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:88:21:88:35 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:89:21:89:35 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:89:21:89:35 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:91:27:91:41 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:91:27:91:41 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:92:27:92:41 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:92:27:92:41 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:94:26:94:40 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:94:26:94:40 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:96:35:96:49 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:96:35:96:49 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:98:41:98:57 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:98:41:98:57 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:100:45:100:61 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:100:45:100:61 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:102:43:102:57 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:102:43:102:57 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:104:28:104:42 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:104:28:104:42 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:106:41:106:55 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:106:41:106:55 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:111:30:111:44 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:111:30:111:44 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:113:40:113:81 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:113:40:113:81 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:115:34:115:75 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:115:34:115:75 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:117:34:117:75 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:117:34:117:75 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:119:23:119:37 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:119:23:119:37 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:124:23:124:37 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:124:23:124:37 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:129:23:129:40 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:129:23:129:40 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:131:20:131:34 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:131:20:131:34 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:133:21:133:35 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:133:21:133:35 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:135:22:135:36 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:135:22:135:36 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:140:20:140:34 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:140:20:140:34 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:142:19:142:33 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:142:19:142:33 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:147:20:147:36 | (...)... | mad/Test.java:29:16:29:36 | getHostName(...) : String | mad/Test.java:147:20:147:36 | (...)... | This path depends on a $@. | mad/Test.java:29:16:29:36 | getHostName(...) | user-provided value |
| mad/Test.java:35:52:35:68 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:35:52:35:68 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:37:32:37:48 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:37:32:37:48 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:39:47:39:63 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:39:47:39:63 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:41:39:41:53 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:41:39:41:53 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:43:31:43:45 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:43:31:43:45 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:45:29:45:43 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:45:29:45:43 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:47:24:47:38 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:47:24:47:38 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:49:9:49:41 | new FileReader(...) | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:49:24:49:40 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:51:20:51:34 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:51:20:51:34 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:53:20:53:34 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:53:20:53:34 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:55:33:55:47 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:55:33:55:47 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:57:40:57:54 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:57:40:57:54 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:59:33:59:47 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:59:33:59:47 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:61:31:61:45 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:61:31:61:45 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:63:26:63:40 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:63:26:63:40 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:65:26:65:40 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:65:26:65:40 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:67:34:67:48 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:67:34:67:48 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:69:35:69:49 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:69:35:69:49 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:71:30:71:44 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:71:30:71:44 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:73:22:73:36 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:73:22:73:36 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:75:30:75:44 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:75:30:75:44 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:77:21:77:35 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:77:21:77:35 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:79:26:79:40 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:79:26:79:40 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:81:33:81:47 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:81:33:81:47 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:83:33:83:47 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:83:33:83:47 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:84:33:84:47 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:84:33:84:47 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:86:31:86:45 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:86:31:86:45 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:88:21:88:35 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:88:21:88:35 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:89:21:89:35 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:89:21:89:35 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:90:21:90:35 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:90:21:90:35 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:92:27:92:41 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:92:27:92:41 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:93:27:93:41 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:93:27:93:41 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:95:26:95:40 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:95:26:95:40 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:97:35:97:49 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:97:35:97:49 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:99:41:99:57 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:99:41:99:57 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:101:45:101:61 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:101:45:101:61 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:103:43:103:57 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:103:43:103:57 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:105:28:105:42 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:105:28:105:42 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:107:41:107:55 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:107:41:107:55 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:109:28:109:44 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:109:28:109:44 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:111:28:111:42 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:111:28:111:42 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:116:30:116:44 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:116:30:116:44 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:118:40:118:81 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:118:40:118:81 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:120:34:120:75 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:120:34:120:75 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:122:34:122:75 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:122:34:122:75 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:124:23:124:37 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:124:23:124:37 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:129:23:129:37 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:129:23:129:37 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:134:23:134:40 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:134:23:134:40 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:136:20:136:34 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:136:20:136:34 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:138:21:138:35 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:138:21:138:35 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:140:22:140:36 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:140:22:140:36 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:145:20:145:34 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:145:20:145:34 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:147:19:147:33 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:147:19:147:33 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |
| mad/Test.java:152:20:152:36 | (...)... | mad/Test.java:30:16:30:36 | getHostName(...) : String | mad/Test.java:152:20:152:36 | (...)... | This path depends on a $@. | mad/Test.java:30:16:30:36 | getHostName(...) | user-provided value |

View File

@@ -9,6 +9,7 @@ import java.net.URL;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import javax.activation.FileDataSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.commons.io.FileUtils;
import org.apache.tools.ant.AntClassLoader;
@@ -104,6 +105,10 @@ public class Test {
FileCopyUtils.copy((File) source(), null);
// "org.springframework.util;FileCopyUtils;false;copy;(File,File);;Argument[1];create-file;manual"
FileCopyUtils.copy((File) null, (File) source());
// "javax.activation;FileDataSource;true;FileDataSource;(String);;Argument[0];path-injection;manual"
new FileDataSource((String) source());
// "javax.activation;FileDataSource;true;FileDataSource;(File);;Argument[0];path-injection;manual"
new FileDataSource((File) source());
}
void test(AntClassLoader acl) {

View File

@@ -1 +1 @@
// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../../stubs/servlet-api-2.4:${testdir}/../../../../../stubs/apache-commons-io-2.6:${testdir}/../../../../../stubs/cargo:${testdir}/../../../../../stubs/apache-ant-1.10.13:${testdir}/../../../../../stubs/stapler-1.263:${testdir}/../../../../../stubs/javax-servlet-2.5:${testdir}/../../../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../../../stubs/saxon-xqj-9.x:${testdir}/../../../../../stubs/apache-commons-beanutils:${testdir}/../../../../../stubs/dom4j-2.1.1:${testdir}/../../../../../stubs/apache-commons-lang:${testdir}/../../../../../stubs/jaxen-1.2.0:${testdir}/../../../../../stubs/jmh-1.3.6:${testdir}/../../../../../stubs/springframework-5.3.8
// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../../stubs/servlet-api-2.4:${testdir}/../../../../../stubs/apache-commons-io-2.6:${testdir}/../../../../../stubs/cargo:${testdir}/../../../../../stubs/apache-ant-1.10.13:${testdir}/../../../../../stubs/stapler-1.263:${testdir}/../../../../../stubs/javax-servlet-2.5:${testdir}/../../../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../../../stubs/saxon-xqj-9.x:${testdir}/../../../../../stubs/apache-commons-beanutils:${testdir}/../../../../../stubs/dom4j-2.1.1:${testdir}/../../../../../stubs/apache-commons-lang:${testdir}/../../../../../stubs/jaxen-1.2.0:${testdir}/../../../../../stubs/jmh-1.3.6:${testdir}/../../../../../stubs/springframework-5.3.8:${testdir}/../../../../../stubs/jaxws-api-2.0

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -0,0 +1,35 @@
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.owasp.esapi.Validator;
public class TrustBoundaryViolations extends HttpServlet {
Validator validator;
public void doGet(HttpServletRequest request, HttpServletResponse response) {
String input = request.getParameter("input");
// BAD: The input is written to the session without being sanitized.
request.getSession().setAttribute("input", input); // $ hasTaintFlow
String input2 = request.getParameter("input2");
try {
String sanitized = validator.getValidInput("HTTP parameter", input2, "HTTPParameterValue", 100, false);
// GOOD: The input is sanitized before being written to the session.
request.getSession().setAttribute("input2", sanitized);
} catch (Exception e) {
}
try {
String input3 = request.getParameter("input3");
if (validator.isValidInput("HTTP parameter", input3, "HTTPParameterValue", 100, false)) {
// GOOD: The input is sanitized before being written to the session.
request.getSession().setAttribute("input3", input3);
}
} catch (Exception e) {
}
}
}

View File

@@ -0,0 +1,4 @@
import java
import semmle.code.java.security.TrustBoundaryViolationQuery
import TestUtilities.InlineFlowTest
import TaintFlowTest<TrustBoundaryConfig>

View File

@@ -0,0 +1 @@
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/esapi-2.0.1:${testdir}/../../../stubs/javax-servlet-2.5

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -0,0 +1,23 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import org.openhealthtools.mdht.uml.cda.util.CDAUtil;
import org.xml.sax.InputSource;
public class CdaUtilTests {
public void test(Socket sock) throws Exception {
InputStream is = sock.getInputStream();
InputSource iSrc = new InputSource(new InputStreamReader(is));
CDAUtil.load(is); // $ hasTaintFlow
CDAUtil.load(iSrc); // $ hasTaintFlow
CDAUtil.load(is, (CDAUtil.ValidationHandler) null); // $ hasTaintFlow
CDAUtil.load(is, (CDAUtil.LoadHandler) null); // $ hasTaintFlow
CDAUtil.load(null, null, is, null); // $ hasTaintFlow
CDAUtil.load(iSrc, (CDAUtil.ValidationHandler) null); // $ hasTaintFlow
CDAUtil.load(iSrc, (CDAUtil.LoadHandler) null); // $ hasTaintFlow
CDAUtil.load(null, null, iSrc, null); // $ hasTaintFlow
CDAUtil.loadAs(is, null); // $ hasTaintFlow
CDAUtil.loadAs(is, null, null); // $ hasTaintFlow
}
}

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1 +1 @@
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jdom-1.1.3:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/simple-xml-2.7.1:${testdir}/../../../stubs/jaxb-api-2.3.1:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/apache-commons-digester3-3.2:${testdir}/../../../stubs/servlet-api-2.4/:${testdir}/../../../stubs/rundeck-api-java-client-13.2:${testdir}/../../../stubs/springframework-5.3.8/
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jdom-1.1.3:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/simple-xml-2.7.1:${testdir}/../../../stubs/jaxb-api-2.3.1:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/apache-commons-digester3-3.2:${testdir}/../../../stubs/servlet-api-2.4/:${testdir}/../../../stubs/rundeck-api-java-client-13.2:${testdir}/../../../stubs/springframework-5.3.8/:${testdir}/../../../stubs/mdht-1.2.0/

View File

@@ -1,2 +0,0 @@
failures
testFailures

View File

@@ -1,5 +1,4 @@
import java
import TestUtilities.InlineExpectationsTest
import TestUtilities.InlineFlowTest
import semmle.code.java.security.RsaWithoutOaepQuery
import TaintFlowTest<RsaWithoutOaepConfig>

View File

@@ -4,6 +4,7 @@ import java.net.Socket;
import java.net.SocketAddress;
import java.net.URL;
import java.net.URLClassLoader;
import javax.activation.URLDataSource;
import javax.servlet.http.HttpServletRequest;
import javafx.scene.web.WebEngine;
import org.apache.commons.jelly.JellyContext;
@@ -59,6 +60,8 @@ public class Test {
new JellyContext((URL) null, (URL) source()); // $ SSRF
// "org.apache.commons.jelly;JellyContext;true;JellyContext;(URL);;Argument[0];open-url;ai-generated"
new JellyContext((URL) source()); // $ SSRF
// "javax.activation;URLDataSource;true;URLDataSource;(URL);;Argument[0];request-forgery;manual"
new URLDataSource((URL) source()); // $ SSRF
}
public void test(WebEngine webEngine) {

View File

@@ -1 +1 @@
//semmle-extractor-options: --javac-args -source 11 -target 11 -cp ${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/javax-ws-rs-api-2.1.1:${testdir}/../../../stubs/javax-ws-rs-api-3.0.0:${testdir}/../../../stubs/apache-http-4.4.13/:${testdir}/../../../stubs/projectreactor-3.4.3/:${testdir}/../../../stubs/postgresql-42.3.3/:${testdir}/../../../stubs/HikariCP-3.4.5/:${testdir}/../../../stubs/spring-jdbc-5.3.8/:${testdir}/../../../stubs/jdbi3-core-3.27.2/:${testdir}/../../../stubs/cargo:${testdir}/../../../stubs/javafx-web:${testdir}/../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/saxon-xqj-9.x:${testdir}/../../../stubs/apache-commons-beanutils:${testdir}/../../../stubs/apache-commons-lang:${testdir}/../../../stubs/apache-http-5:${testdir}/../../../stubs/playframework-2.6.x
//semmle-extractor-options: --javac-args -source 11 -target 11 -cp ${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/javax-ws-rs-api-2.1.1:${testdir}/../../../stubs/javax-ws-rs-api-3.0.0:${testdir}/../../../stubs/apache-http-4.4.13/:${testdir}/../../../stubs/projectreactor-3.4.3/:${testdir}/../../../stubs/postgresql-42.3.3/:${testdir}/../../../stubs/HikariCP-3.4.5/:${testdir}/../../../stubs/spring-jdbc-5.3.8/:${testdir}/../../../stubs/jdbi3-core-3.27.2/:${testdir}/../../../stubs/cargo:${testdir}/../../../stubs/javafx-web:${testdir}/../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/saxon-xqj-9.x:${testdir}/../../../stubs/apache-commons-beanutils:${testdir}/../../../stubs/apache-commons-lang:${testdir}/../../../stubs/apache-http-5:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jaxws-api-2.0

Some files were not shown because too many files have changed in this diff Show More