|
49 | 49 | import soot.jimple.internal.JNopStmt;
|
50 | 50 | import soot.tagkit.Host;
|
51 | 51 | import soot.tagkit.PositionTag;
|
| 52 | +import soot.tagkit.AbstractHost; |
52 | 53 | import wpds.impl.Weight.NoWeight;
|
53 | 54 |
|
54 | 55 | class SingleFlowAnalysis implements Analysis {
|
@@ -183,21 +184,28 @@ private SameTypedPair<LocationDetails> getDetailsPair(TaintFlowQueryImpl flowQue
|
183 | 184 | LocationDetails startDetails = new LocationDetails();
|
184 | 185 | SootMethod sourceMethodDefinition = Utility.findSourceMethodDefinition(flowQuery, start.stmt().getMethod(),
|
185 | 186 | start.stmt().getUnit().get());
|
186 |
| - |
187 |
| - startDetails.setClassName(sourceMethodDefinition.getClass().getName()); |
188 |
| - startDetails.setLineNumber(sourceMethodDefinition.getJavaSourceStartLineNumber()); |
189 |
| - startDetails.setColumnNumber(sourceMethodDefinition.getJavaSourceStartColumnNumber()); |
| 187 | + startDetails.setSourceClassName(sourceMethodDefinition.getDeclaringClass().getName()); |
190 | 188 | startDetails.setMethodSignature(sourceMethodDefinition.getSignature());
|
| 189 | + |
| 190 | + AbstractHost sourceHost = (AbstractHost) start.asNode().stmt().getUnit().get(); |
| 191 | + startDetails.setUsageLineNumber(sourceHost.getJavaSourceStartLineNumber()); |
| 192 | + startDetails.setUsageColumnNumber(sourceHost.getJavaSourceStartColumnNumber()); |
| 193 | + startDetails.setUsageMethodSignature(start.stmt().getMethod().getSignature()); |
| 194 | + startDetails.setUsageClassName(start.stmt().getMethod().getDeclaringClass().getName()); |
191 | 195 | startDetails.setType(LocationType.Source);
|
192 | 196 |
|
193 | 197 | LocationDetails endDetails = new LocationDetails();
|
194 | 198 | SootMethod sinkMethodDefinition = Utility.findSinkMethodDefinition(flowQuery, end.stmt().getMethod(),
|
195 | 199 | end.stmt().getUnit().get());
|
196 |
| - endDetails.setClassName(sinkMethodDefinition.getClass().getName()); |
197 |
| - endDetails.setLineNumber(sinkMethodDefinition.getJavaSourceStartLineNumber()); |
198 |
| - endDetails.setColumnNumber(sinkMethodDefinition.getJavaSourceStartColumnNumber()); |
| 200 | + endDetails.setSourceClassName(sinkMethodDefinition.getDeclaringClass().getName()); |
199 | 201 | endDetails.setMethodSignature(sinkMethodDefinition.getSignature());
|
200 |
| - endDetails.setType(LocationType.Sink); |
| 202 | + |
| 203 | + AbstractHost sinkHost = (AbstractHost) end.asNode().stmt().getUnit().get(); |
| 204 | + endDetails.setUsageLineNumber(sinkHost.getJavaSourceStartLineNumber()); |
| 205 | + endDetails.setUsageColumnNumber(sinkHost.getJavaSourceStartColumnNumber()); |
| 206 | + endDetails.setUsageMethodSignature(end.stmt().getMethod().getSignature()); |
| 207 | + endDetails.setUsageClassName(end.stmt().getMethod().getDeclaringClass().getName()); |
| 208 | + endDetails.setType(LocationType.Sink); |
201 | 209 |
|
202 | 210 | return new SameTypedPair<LocationDetails>(startDetails, endDetails);
|
203 | 211 | }
|
|
0 commit comments