Skip to content

Commit 1ec0fb6

Browse files
authored
Merge pull request #542 from lostsnow/feature/add-range-command-overwrite
add taint range command OVERWRITE
2 parents a15a32a + e987bfe commit 1ec0fb6

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

dongtai-core/src/main/java/io/dongtai/iast/core/handler/hookpoint/models/taint/range/TaintCommand.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public enum TaintCommand {
1313
REMOVE,
1414
REPLACE,
1515
CONCAT,
16+
OVERWRITE,
1617
TRIM,
1718
TRIM_RIGHT,
1819
TRIM_LEFT,

dongtai-core/src/main/java/io/dongtai/iast/core/handler/hookpoint/models/taint/range/TaintCommandRunner.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ public TaintRanges run(PropagatorNode propagatorNode, Object source, Object targ
133133
case CONCAT:
134134
this.builder.concat(tr, target, oldTaintRanges, source, srcTaintRanges, params);
135135
break;
136+
case OVERWRITE:
137+
this.builder.overwrite(tr, oldTaintRanges, source, srcTaintRanges, p1, this.paramsCount);
136138
case TRIM:
137139
case TRIM_LEFT:
138140
case TRIM_RIGHT:

dongtai-core/src/main/java/io/dongtai/iast/core/handler/hookpoint/models/taint/range/TaintRangesBuilder.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,16 @@ public void concat(TaintRanges taintRanges, Object target, TaintRanges oldTaintR
144144
taintRanges.merge();
145145
}
146146

147+
public void overwrite(TaintRanges taintRanges, TaintRanges oldTagRanges, Object source, TaintRanges srcTagRanges, int p1, int argC) {
148+
if (argC == 1) {
149+
int length = getLength(source);
150+
srcTagRanges.shift(p1);
151+
oldTagRanges.clear(p1, length + p1);
152+
taintRanges.addAll(oldTagRanges);
153+
taintRanges.addAll(srcTagRanges);
154+
}
155+
}
156+
147157
public void trim(TaintCommand command, TaintRanges taintRanges, Object source, TaintRanges srcTaintRanges, int argC) {
148158
if (argC > 0) {
149159
return;

0 commit comments

Comments
 (0)