Skip to content

Commit a07af79

Browse files
committed
Java: model java.util.Arrays
1 parent c629f6b commit a07af79

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

java/ql/src/semmle/code/java/dataflow/internal/ContainerFlow.qll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,12 @@ private predicate taintPreservingArgumentToMethod(Method method, int arg) {
180180
or
181181
method.hasName(["nCopies", "singletonMap"]) and arg = 1
182182
)
183+
or
184+
method.getDeclaringType().hasQualifiedName("java.util", "Arrays") and
185+
(
186+
method.hasName(["copyOf", "copyOfRange", "deepToString", "spliterator", "stream", "toString"]) and
187+
arg = 0
188+
)
183189
}
184190

185191
/**
@@ -195,6 +201,13 @@ private predicate taintPreservingArgToArg(Method method, int input, int output)
195201
or
196202
method.hasName("replaceAll") and input = 2 and output = 0
197203
)
204+
or
205+
method.getDeclaringType().hasQualifiedName("java.util", "Arrays") and
206+
(
207+
method.hasName(["fill", "parallelPrefix", "parallelSetAll", "setAll"]) and
208+
output = 0 and
209+
input = method.getNumberOfParameters() - 1
210+
)
198211
}
199212

200213
private predicate argToQualifierStep(Expr tracked, Expr sink) {

0 commit comments

Comments
 (0)