Skip to content

Commit dce0ebd

Browse files
committed
Fix
1 parent 02bddf4 commit dce0ebd

2 files changed

Lines changed: 319 additions & 2 deletions

File tree

soot-infoflow-android/src/soot/jimple/infoflow/android/callbacks/AbstractCallbackAnalyzer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -644,8 +644,9 @@ protected boolean invokesInflate(InvokeExpr inv) {
644644
// of using the superclass signature
645645
SootClass curClass = inv.getMethod().getDeclaringClass();
646646
while (curClass != null) {
647-
if (curClass.getName().equals("android.app.Fragment")
648-
|| curClass.getName().equals("android.view.LayoutInflater"))
647+
if (curClass.getName().equals("android.app.Fragment") || curClass.getName().equals("android.view.LayoutInflater"))
648+
return true;
649+
if (curClass.declaresMethod("android.view.View inflate(int,android.view.ViewGroup,boolean)"))
649650
return true;
650651
curClass = curClass.hasSuperclass() ? curClass.getSuperclass() : null;
651652
}
Lines changed: 316 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,316 @@
1+
<?xml version="1.0" ?>
2+
<summary fileFormatVersion="101">
3+
<hierarchy superClass="java.lang.Object">
4+
<interface name="java.io.Closeable" />
5+
<interface name="java.util.Iterator" />
6+
</hierarchy>
7+
<methods>
8+
<method id="void &lt;init&gt;(java.io.InputStream)">
9+
<flows>
10+
<flow isAlias="true">
11+
<from sourceSinkType="Parameter" ParameterIndex="0" />
12+
<to sourceSinkType="Field"
13+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
14+
AccessPathTypes="[java.io.InputStream]" />
15+
</flow>
16+
</flows>
17+
</method>
18+
<method id="void &lt;init&gt;(java.io.InputStream,java.lang.String)">
19+
<flows>
20+
<flow isAlias="true">
21+
<from sourceSinkType="Parameter" ParameterIndex="0" />
22+
<to sourceSinkType="Field"
23+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
24+
AccessPathTypes="[java.io.InputStream]" />
25+
</flow>
26+
</flows>
27+
</method>
28+
<method id="void &lt;init&gt;(java.io.InputStream,java.nio.charset.Charset)">
29+
<flows>
30+
<flow isAlias="true">
31+
<from sourceSinkType="Parameter" ParameterIndex="0" />
32+
<to sourceSinkType="Field"
33+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
34+
AccessPathTypes="[java.io.InputStream]" />
35+
</flow>
36+
</flows>
37+
</method>
38+
<method id="void &lt;init&gt;(java.io.File)">
39+
<flows>
40+
<flow isAlias="false">
41+
<from sourceSinkType="Parameter" ParameterIndex="0" />
42+
<to sourceSinkType="Field"
43+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
44+
AccessPathTypes="[java.io.InputStream]" />
45+
</flow>
46+
</flows>
47+
</method>
48+
<method id="void &lt;init&gt;(java.io.File,java.lang.String)">
49+
<flows>
50+
<flow isAlias="false">
51+
<from sourceSinkType="Parameter" ParameterIndex="0" />
52+
<to sourceSinkType="Field"
53+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
54+
AccessPathTypes="[java.io.InputStream]" />
55+
</flow>
56+
</flows>
57+
</method>
58+
<method id="void &lt;init&gt;(java.io.File,java.nio.charset.Charset)">
59+
<flows>
60+
<flow isAlias="false">
61+
<from sourceSinkType="Parameter" ParameterIndex="0" />
62+
<to sourceSinkType="Field"
63+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
64+
AccessPathTypes="[java.io.InputStream]" />
65+
</flow>
66+
</flows>
67+
</method>
68+
<method id="void &lt;init&gt;(java.lang.Readable)">
69+
<flows>
70+
<flow isAlias="false">
71+
<from sourceSinkType="Parameter" ParameterIndex="0" />
72+
<to sourceSinkType="Field"
73+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
74+
AccessPathTypes="[java.io.InputStream]" />
75+
</flow>
76+
</flows>
77+
<method id="void &lt;init&gt;(java.lang.String)">
78+
<flows>
79+
<flow isAlias="false">
80+
<from sourceSinkType="Parameter" ParameterIndex="0" />
81+
<to sourceSinkType="Field"
82+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
83+
AccessPathTypes="[java.io.InputStream]" />
84+
</flow>
85+
</flows>
86+
</method>
87+
<method id="void &lt;init&gt;(java.nio.channels.ReadableByteChannel)">
88+
<flows>
89+
<flow isAlias="false">
90+
<from sourceSinkType="Parameter" ParameterIndex="0" />
91+
<to sourceSinkType="Field"
92+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
93+
AccessPathTypes="[java.io.InputStream]" />
94+
</flow>
95+
</flows>
96+
</method>
97+
<method id="void &lt;init&gt;(java.nio.channels.ReadableByteChannel,java.lang.String)">
98+
<flows>
99+
<flow isAlias="false">
100+
<from sourceSinkType="Parameter" ParameterIndex="0" />
101+
<to sourceSinkType="Field"
102+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
103+
AccessPathTypes="[java.io.InputStream]" />
104+
</flow>
105+
</flows>
106+
</method>
107+
<method id="void &lt;init&gt;(java.nio.channels.ReadableByteChannel,java.nio.charset.Charset)">
108+
<flows>
109+
<flow isAlias="false">
110+
<from sourceSinkType="Parameter" ParameterIndex="0" />
111+
<to sourceSinkType="Field"
112+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
113+
AccessPathTypes="[java.io.InputStream]" />
114+
</flow>
115+
</flows>
116+
</method>
117+
<method id="void &lt;init&gt;(java.nio.file.Path)">
118+
<flows>
119+
<flow isAlias="false">
120+
<from sourceSinkType="Parameter" ParameterIndex="0" />
121+
<to sourceSinkType="Field"
122+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
123+
AccessPathTypes="[java.io.InputStream]" />
124+
</flow>
125+
</flows>
126+
</method>
127+
<method id="void &lt;init&gt;(java.nio.file.Path,java.lang.String)">
128+
<flows>
129+
<flow isAlias="false">
130+
<from sourceSinkType="Parameter" ParameterIndex="0" />
131+
<to sourceSinkType="Field"
132+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
133+
AccessPathTypes="[java.io.InputStream]" />
134+
</flow>
135+
</flows>
136+
</method>
137+
<method id="void &lt;init&gt;(java.nio.file.Path,java.nio.charset.Charset)">
138+
<flows>
139+
<flow isAlias="false">
140+
<from sourceSinkType="Parameter" ParameterIndex="0" />
141+
<to sourceSinkType="Field"
142+
AccessPath="[java.util.Scanner: java.io.InputStream innerStream]"
143+
AccessPathTypes="[java.io.InputStream]" />
144+
</flow>
145+
</flows>
146+
</method>
147+
<method id="java.util.Scanner: java.util.regex.MatchResult match()">
148+
<flows>
149+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
150+
<from sourceSinkType="Field" />
151+
<to sourceSinkType="Return" />
152+
</flow>
153+
</flows>
154+
</method>
155+
<method id="java.util.Scanner: java.lang.String next()">
156+
<flows>
157+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
158+
<from sourceSinkType="Field" />
159+
<to sourceSinkType="Return" />
160+
</flow>
161+
</flows>
162+
</method>
163+
<method id="java.util.Scanner: java.lang.String next(java.lang.String)">
164+
<flows>
165+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
166+
<from sourceSinkType="Field" />
167+
<to sourceSinkType="Return" />
168+
</flow>
169+
</flows>
170+
</method>
171+
<method id="java.util.Scanner: java.lang.String next(java.util.regex.Pattern)">
172+
<flows>
173+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
174+
<from sourceSinkType="Field" />
175+
<to sourceSinkType="Return" />
176+
</flow>
177+
</flows>
178+
</method>
179+
<method id="java.util.Scanner: java.lang.String nextLine()">
180+
<flows>
181+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
182+
<from sourceSinkType="Field" />
183+
<to sourceSinkType="Return" />
184+
</flow>
185+
</flows>
186+
</method>
187+
<method id="java.util.Scanner: java.lang.String findInLine(java.lang.String)">
188+
<flows>
189+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
190+
<from sourceSinkType="Field" />
191+
<to sourceSinkType="Return" />
192+
</flow>
193+
</flows>
194+
</method>
195+
<method id="java.util.Scanner: java.lang.String findInLine(java.util.regex.Pattern)">
196+
<flows>
197+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
198+
<from sourceSinkType="Field" />
199+
<to sourceSinkType="Return" />
200+
</flow>
201+
</flows>
202+
</method>
203+
<method id="java.util.Scanner: java.lang.String findWithinHorizon(java.lang.String,int)">
204+
<flows>
205+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
206+
<from sourceSinkType="Field" />
207+
<to sourceSinkType="Return" />
208+
</flow>
209+
</flows>
210+
</method>
211+
<method id="java.util.Scanner: java.lang.String findWithinHorizon(java.util.regex.Pattern,int)">
212+
<flows>
213+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
214+
<from sourceSinkType="Field" />
215+
<to sourceSinkType="Return" />
216+
</flow>
217+
</flows>
218+
</method>
219+
<method id="java.util.Scanner: boolean nextBoolean()">
220+
<flows>
221+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
222+
<from sourceSinkType="Field" />
223+
<to sourceSinkType="Return" />
224+
</flow>
225+
</flows>
226+
</method>
227+
<method id="java.util.Scanner: byte nextByte()">
228+
<flows>
229+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
230+
<from sourceSinkType="Field" />
231+
<to sourceSinkType="Return" />
232+
</flow>
233+
</flows>
234+
</method>
235+
<method id="java.util.Scanner: byte nextByte(int)">
236+
<flows>
237+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
238+
<from sourceSinkType="Field" />
239+
<to sourceSinkType="Return" />
240+
</flow>
241+
</flows>
242+
</method>
243+
<method id="java.util.Scanner: short nextShort()">
244+
<flows>
245+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
246+
<from sourceSinkType="Field" />
247+
<to sourceSinkType="Return" />
248+
</flow>
249+
</flows>
250+
</method>
251+
<method id="java.util.Scanner: int nextInt()">
252+
<flows>
253+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
254+
<from sourceSinkType="Field" />
255+
<to sourceSinkType="Return" />
256+
</flow>
257+
</flows>
258+
</method>
259+
<method id="java.util.Scanner: int nextInt(int)">
260+
<flows>
261+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
262+
<from sourceSinkType="Field" />
263+
<to sourceSinkType="Return" />
264+
</flow>
265+
</flows>
266+
</method>
267+
<method id="java.util.Scanner: long nextLong(int)">
268+
<flows>
269+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
270+
<from sourceSinkType="Field" />
271+
<to sourceSinkType="Return" />
272+
</flow>
273+
</flows>
274+
</method>
275+
<method id="java.util.Scanner: float nextFloat()">
276+
<flows>
277+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
278+
<from sourceSinkType="Field" />
279+
<to sourceSinkType="Return" />
280+
</flow>
281+
</flows>
282+
</method>
283+
<method id="java.util.Scanner: double nextDouble()">
284+
<flows>
285+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
286+
<from sourceSinkType="Field" />
287+
<to sourceSinkType="Return" />
288+
</flow>
289+
</flows>
290+
</method>
291+
<method id="java.util.Scanner: java.math.BigInteger nextBigInteger()">
292+
<flows>
293+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
294+
<from sourceSinkType="Field" />
295+
<to sourceSinkType="Return" />
296+
</flow>
297+
</flows>
298+
</method>
299+
<method id="java.util.Scanner: java.math.BigInteger nextBigInteger(int)">
300+
<flows>
301+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
302+
<from sourceSinkType="Field" />
303+
<to sourceSinkType="Return" />
304+
</flow>
305+
</flows>
306+
</method>
307+
<method id="java.util.Scanner: java.math.BigDecimal nextBigDecimal()">
308+
<flows>
309+
<flow isAlias="false" cutSubfields="true" typeChecking="false">
310+
<from sourceSinkType="Field" />
311+
<to sourceSinkType="Return" />
312+
</flow>
313+
</flows>
314+
</method>
315+
</methods>
316+
</summary>

0 commit comments

Comments
 (0)