@@ -15,37 +15,19 @@ import java
1515import semmle.code.java.dataflow.FlowSources
1616import experimental.semmle.code.java.security.FileAndFormRemoteSource
1717import experimental.semmle.code.java.security.DecompressionBomb:: DecompressionBomb
18+ import semmle.code.java.dataflow.TaintTracking
1819
19- module DecompressionBombsConfig implements DataFlow:: StateConfigSig {
20- class FlowState = DecompressionState ;
20+ module DecompressionBombsConfig implements DataFlow:: ConfigSig {
21+ predicate isSource ( DataFlow :: Node source ) { source instanceof RemoteFlowSource }
2122
22- predicate isSource ( DataFlow:: Node source , FlowState state ) {
23- source instanceof RemoteFlowSource and
24- (
25- state instanceof ZipFile
26- or
27- state instanceof Zip4j
28- or
29- state instanceof Inflator
30- or
31- state instanceof ApacheCommons
32- or
33- state instanceof XerialSnappy
34- or
35- state instanceof UtilZip
36- )
37- }
38-
39- predicate isSink ( DataFlow:: Node sink , FlowState state ) { any ( Sink s ) .sink ( sink , state ) }
23+ predicate isSink ( DataFlow:: Node sink ) { sink instanceof Sink }
4024
41- predicate isAdditionalFlowStep (
42- DataFlow:: Node nodeFrom , FlowState stateFrom , DataFlow:: Node nodeTo , FlowState stateTo
43- ) {
44- any ( AdditionalStep ads ) .step ( nodeFrom , stateFrom , nodeTo , stateTo )
25+ predicate isAdditionalFlowStep ( DataFlow:: Node nodeFrom , DataFlow:: Node nodeTo ) {
26+ any ( AdditionalStep ads ) .step ( nodeFrom , nodeTo )
4527 }
4628}
4729
48- module DecompressionBombsFlow = TaintTracking:: GlobalWithState < DecompressionBombsConfig > ;
30+ module DecompressionBombsFlow = TaintTracking:: Global < DecompressionBombsConfig > ;
4931
5032import DecompressionBombsFlow:: PathGraph
5133
0 commit comments