|
6 | 6 | import io.dongtai.iast.core.handler.hookpoint.models.MethodEvent; |
7 | 7 | import io.dongtai.iast.core.handler.hookpoint.models.policy.SourceNode; |
8 | 8 | import io.dongtai.iast.core.handler.hookpoint.models.policy.TaintPosition; |
| 9 | +import io.dongtai.iast.core.handler.hookpoint.models.taint.range.*; |
9 | 10 | import io.dongtai.iast.core.utils.StackUtils; |
10 | 11 | import io.dongtai.iast.core.utils.TaintPoolUtils; |
11 | 12 | import io.dongtai.log.DongTaiLog; |
@@ -68,9 +69,7 @@ public static void collectDubboRequestSource(Object handler, Object invocation, |
68 | 69 | tgt.add(new TaintPosition("P1")); |
69 | 70 |
|
70 | 71 | SourceNode sourceNode = new SourceNode(src, tgt, null); |
71 | | - if (arguments != null && arguments.length > 0) { |
72 | | - TaintPoolUtils.trackObject(event, sourceNode, arguments, 0); |
73 | | - } |
| 72 | + TaintPoolUtils.trackObject(event, sourceNode, arguments, 0); |
74 | 73 |
|
75 | 74 | Map<String, String> sHeaders = new HashMap<String, String>(); |
76 | 75 | if (headers != null) { |
@@ -100,6 +99,13 @@ public static void collectDubboRequestSource(Object handler, Object invocation, |
100 | 99 | event.setObjectValue(handler, false); |
101 | 100 | event.setTaintPositions(sourceNode.getSources(), sourceNode.getTargets()); |
102 | 101 |
|
| 102 | + // for display taint range (full arguments value) |
| 103 | + String fv = event.parameterValues.get(0).getValue(); |
| 104 | + int hash = System.identityHashCode(fv); |
| 105 | + int len = TaintRangesBuilder.getLength(fv); |
| 106 | + TaintRanges tr = new TaintRanges(new TaintRange(0, len)); |
| 107 | + event.targetRanges.add(0, new MethodEvent.MethodEventTargetRange(hash, tr)); |
| 108 | + |
103 | 109 | requestMeta.put("headers", sHeaders); |
104 | 110 | JSONArray arr = new JSONArray(); |
105 | 111 | for (Object arg : arguments) { |
|
0 commit comments