<div dir="ltr">Dear FlowDroid-team,<br>I am trying to analyses a piece of Java code with flowdroid, and somehow I do not understand why FlowDroid does not report a flow, although sinks and sources are detected. The code is the following:<br><br>------------------------------------------------------------<br>public class DataContainerMain(){<br>public static void main(String[] args){<br>FileInputStream fis1 = new FileInputStream(new File(&quot;D1.txt&quot;));<br>byte[] b1 = read(new byte[100],fis1);        <br>String s1 = new String(b1, StandardCharsets.UTF_8);<br>FileOutputStream fos = new FileOutputStream(new File(&quot;D3.txt&quot;));<br>fos.write(s1.getBytes()); <br>}<br>}<br><br>------------------------------------------------------------<br><br>I expect that Flowdroid should report the flow from source read(new byte....) -&gt; b1-&gt;s1-&gt; sink fow.write(s1.getBytes()); (source and sink are detected). <br><br>To analyze that code I extended one of JUnit test cases of Flowdroid, namely soot.jimple.infoflow.test.junit.StringTests, with a test method as follows:<br><br>------------------------------------------------------------<br>@Test()<br>    public void stringConstructorTest() throws IOException {<br>        Infoflow infoflow = initInfoflow();<br>        <br>        List&lt;String&gt; epoints = new ArrayList&lt;String&gt;();<br>        epoints.add(&quot;&lt;soot.jimple.infoflow.test.DataContainerMain: void main(java.lang.String[])&gt;&quot;);<br><br>        List&lt;String&gt; sources = new LinkedList&lt;String&gt;();<br>        sources.add(&quot;&lt;soot.jimple.infoflow.test.DataContainerMain: byte[] read(byte[],java.io.FileInputStream)&gt;&quot;);<br>        <br>        List&lt;String&gt; sinks = new LinkedList&lt;String&gt;();<br>        sinks.add(&quot;&lt;java.io.FileOutputStream: void write(byte[])&gt;&quot;);<br><br>        infoflow.computeInfoflow(appPath, libPath, epoints, sources, sinks);<br>    }<br>------------------------------------------------------------<br><br>Could it be the case that the test method is incorrect? May I need to provide more configuration parameters to the Infoflow-Object?<br><br> If I add the constructor &lt;java.lang.String: void &lt;init&gt;(byte[],java.nio.charset.Charset)&gt; to the set of EasyTaintWrappers and instantiate the infoflow object with true (i.e. initInfoflow(true)), that a flow is detected. But without that it doesnt work. So, I do not understand why Flowdroid doesnt detect the flow (without TaintWrappers) in the upper example. What do I have to provide to the analysis in order to detect that flow? <br>Thanks a lot for your help in advance!<br></div>