Increase field flow branch limit in Jax-RS tests

This fixes apparently-missing results by allowing the dataflow library to persist even when there are many Map implementations possibly available.
This commit is contained in:
Chris Smowton
2021-06-21 12:46:13 +01:00
parent 9110dfaeb3
commit c5eef7be8c
3 changed files with 8 additions and 4 deletions

View File

@@ -160,12 +160,12 @@ public class JakartaRsFlow {
void testAbstractMultivaluedMap(Map<String, List<String>> map1, Map<String, List<String>> map2, List<String> list) {
map1.put(taint(), list);
AbstractMultivaluedMap<String, String> amm1 = new MyAbstractMultivaluedMapJak<String, String>(map1);
sink(amm1.keySet().iterator().next()); // $ MISSING: hasValueFlow
sink(amm1.keySet().iterator().next()); // $ hasValueFlow
list.add(taint());
map2.put("key", list);
AbstractMultivaluedMap<String, String> amm2 = new MyAbstractMultivaluedMapJak<String, String>(map2);
sink(amm2.get("key").get(0)); // $ MISSING: hasValueFlow SPURIOUS: hasTaintFlow
sink(amm2.get("key").get(0)); // $ hasValueFlow
}
void testMultivaluedHashMap(Map<String, String> map1, Map<String, String> map2,

View File

@@ -160,12 +160,12 @@ public class JaxRsFlow {
void testAbstractMultivaluedMap(Map<String, List<String>> map1, Map<String, List<String>> map2, List<String> list) {
map1.put(taint(), list);
AbstractMultivaluedMap<String, String> amm1 = new MyAbstractMultivaluedMap<String, String>(map1);
sink(amm1.keySet().iterator().next()); // $ MISSING: hasValueFlow
sink(amm1.keySet().iterator().next()); // $ hasValueFlow
list.add(taint());
map2.put("key", list);
AbstractMultivaluedMap<String, String> amm2 = new MyAbstractMultivaluedMap<String, String>(map2);
sink(amm2.get("key").get(0)); // $ MISSING: hasValueFlow SPURIOUS: hasTaintFlow
sink(amm2.get("key").get(0)); // $ hasValueFlow
}
void testMultivaluedHashMap(Map<String, String> map1, Map<String, String> map2,

View File

@@ -12,6 +12,8 @@ class TaintFlowConf extends TaintTracking::Configuration {
override predicate isSink(DataFlow::Node n) {
exists(MethodAccess ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument())
}
override int fieldFlowBranchLimit() { result = 3 }
}
class ValueFlowConf extends DataFlow::Configuration {
@@ -24,6 +26,8 @@ class ValueFlowConf extends DataFlow::Configuration {
override predicate isSink(DataFlow::Node n) {
exists(MethodAccess ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument())
}
override int fieldFlowBranchLimit() { result = 3 }
}
class HasFlowTest extends InlineExpectationsTest {