Skip to content

Commit b1e604b

Browse files
committed
Java: treat Stack.push as data flow instead of taint flow
1 parent a484aff commit b1e604b

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,9 +270,6 @@ private predicate taintPreservingArgumentToQualifier(Method method, int arg) {
270270
* `arg`th argument is tainted.
271271
*/
272272
private predicate taintPreservingArgumentToMethod(Method method, int arg) {
273-
// java.util.Stack
274-
method.(CollectionMethod).hasName("push") and arg = 0
275-
or
276273
method.getDeclaringType().hasQualifiedName("java.util", "Collections") and
277274
(
278275
method

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,18 @@ predicate simpleLocalFlowStep(Node node1, Node node2) {
413413
m.hasName("toString") and node1.asExpr() = ma.getArgument(1)
414414
)
415415
)
416+
or
417+
exists(MethodAccess ma, Method m |
418+
ma = node2.asExpr() and
419+
m = ma.getMethod() and
420+
m
421+
.getDeclaringType()
422+
.getSourceDeclaration()
423+
.getASourceSupertype*()
424+
.hasQualifiedName("java.util", "Stack") and
425+
m.hasName("push") and
426+
node1.asExpr() = ma.getArgument(0)
427+
)
416428
}
417429

418430
/**

0 commit comments

Comments
 (0)