Skip to content

Commit a55a32f

Browse files
committed
Add more missing models
And corresponding tests
1 parent 54fdfe3 commit a55a32f

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

java/ql/src/semmle/code/java/frameworks/apache/Collections.qll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ private class ApacheCollectionsModel extends SummaryModelCsv {
4242
";ArrayStack;true;peek;;;Element of Argument[-1];ReturnValue;value",
4343
";ArrayStack;true;pop;;;Element of Argument[-1];ReturnValue;value",
4444
";ArrayStack;true;push;;;Argument[0];Element of Argument[-1];value",
45+
";ArrayStack;true;push;;;Argument[0];ReturnValue;value",
4546
";Bag;true;add;;;Argument[0];Element of Argument[-1];value",
4647
";Bag;true;uniqueSet;;;Element of Argument[-1];Element of ReturnValue;value",
4748
";BidiMap;true;getKey;;;MapKey of Argument[-1];ReturnValue;value",
@@ -100,6 +101,8 @@ private class ApacheCollectionsModel extends SummaryModelCsv {
100101
";MultiSet;true;entrySet;;;Element of Argument[-1];Element of Element of ReturnValue;value",
101102
";MultiValuedMap;true;asMap;;;MapKey of Argument[-1];MapKey of ReturnValue;value",
102103
";MultiValuedMap;true;asMap;;;Element of MapValue of Argument[-1];Element of MapValue of ReturnValue;value",
104+
";MultiValuedMap;true;entries;;;MapKey of Argument[-1];MapKey of Element of ReturnValue;value",
105+
";MultiValuedMap;true;entries;;;Element of MapValue of Argument[-1];MapValue of Element of ReturnValue;value",
103106
";MultiValuedMap;true;get;;;Element of MapValue of Argument[-1];Element of ReturnValue;value",
104107
";MultiValuedMap;true;keys;;;MapKey of Argument[-1];Element of ReturnValue;value",
105108
";MultiValuedMap;true;keySet;;;MapKey of Argument[-1];Element of ReturnValue;value",

java/ql/test/library-tests/frameworks/apache-collections/Test.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,6 +1087,14 @@ public void test() {
10871087
out.push(in);
10881088
sink(getElement(out)); // $ hasValueFlow
10891089
}
1090+
{
1091+
// "org.apache.commons.collections4;ArrayStack;true;push;;;Argument[0];ReturnValue;value"
1092+
Object out = null;
1093+
Object in = source();
1094+
ArrayStack instance = null;
1095+
out = instance.push(in);
1096+
sink(out); // $ hasValueFlow
1097+
}
10901098
{
10911099
// "org.apache.commons.collections4;Bag;true;add;;;Argument[0];Element of Argument[-1];value"
10921100
Bag out = null;
@@ -2913,6 +2921,20 @@ public void test() {
29132921
out = MultiMapUtils.emptyIfNull(in);
29142922
sink(out); // $ hasValueFlow
29152923
}
2924+
{
2925+
// "org.apache.commons.collections4;MultiValuedMap;true;entries;;;MapKey of Argument[-1];MapKey of Element of ReturnValue;value"
2926+
Collection<Map.Entry> out = null;
2927+
MultiValuedMap in = newALVHMWithMapKey((String)source());
2928+
out = in.entries();
2929+
sink(getMapKeyFromEntry(getElement(out))); // $ hasValueFlow
2930+
}
2931+
{
2932+
// "org.apache.commons.collections4;MultiValuedMap;true;entries;;;Element of MapValue of Argument[-1];MapValue of Element of ReturnValue;value"
2933+
Collection<Map.Entry> out = null;
2934+
MultiValuedMap in = newALVHMWithMapValue((String)source());
2935+
out = in.entries();
2936+
sink(getMapValueFromEntry(getElement(out))); // $ hasValueFlow
2937+
}
29162938
{
29172939
// "org.apache.commons.collections4;MultiMapUtils;true;getCollection;;;MapValue of Argument[0];ReturnValue;value"
29182940
Collection out = null;

0 commit comments

Comments
 (0)