Skip to content

Commit 1beac06

Browse files
committed
Translate ArrayUtils models to CSV
1 parent 7fb5bd0 commit 1beac06

File tree

1 file changed

+38
-41
lines changed
  • java/ql/src/semmle/code/java/frameworks/apache

1 file changed

+38
-41
lines changed

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

Lines changed: 38 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,6 @@ class TypeApacheRandomStringUtils extends Class {
1414
}
1515
}
1616

17-
/**
18-
* The class `org.apache.commons.lang.ArrayUtils` or `org.apache.commons.lang3.ArrayUtils`.
19-
*/
20-
class TypeApacheArrayUtils extends Class {
21-
TypeApacheArrayUtils() {
22-
hasQualifiedName(["org.apache.commons.lang", "org.apache.commons.lang3"], "ArrayUtils")
23-
}
24-
}
25-
2617
/**
2718
* The method `deserialize` in either `org.apache.commons.lang.SerializationUtils`
2819
* or `org.apache.commons.lang3.SerializationUtils`.
@@ -37,39 +28,45 @@ class MethodApacheSerializationUtilsDeserialize extends Method {
3728
}
3829

3930
/**
40-
* A taint preserving method on `org.apache.commons.lang.ArrayUtils` or `org.apache.commons.lang3.ArrayUtils`
31+
* Taint-propagating models for `ArrayUtils`.
4132
*/
42-
private class ApacheLangArrayUtilsTaintPreservingMethod extends TaintPreservingCallable {
43-
ApacheLangArrayUtilsTaintPreservingMethod() {
44-
this.getDeclaringType() instanceof TypeApacheArrayUtils
45-
}
46-
47-
override predicate returnsTaintFrom(int src) {
48-
this.hasName(["addAll", "addFirst"]) and
49-
src = [0 .. getNumberOfParameters() - 1]
50-
or
51-
this.hasName([
52-
"clone", "nullToEmpty", "remove", "removeAll", "removeElement", "removeElements",
53-
"subarray", "toArray", "toMap", "toObject", "removeAllOccurences", "removeAllOccurrences"
54-
]) and
55-
src = 0
56-
or
57-
this.hasName("toPrimitive") and
58-
src = [0, 1]
59-
or
60-
this.hasName("add") and
61-
this.getNumberOfParameters() = 2 and
62-
src = [0, 1]
63-
or
64-
this.hasName(["add"]) and
65-
this.getNumberOfParameters() = 3 and
66-
src = [0, 2]
67-
or
68-
this.hasName("insert") and
69-
src = [1, 2]
70-
or
71-
this.hasName("get") and
72-
src = [0, 2]
33+
private class ApacheArrayUtilsModel extends SummaryModelCsv {
34+
override predicate row(string row) {
35+
row =
36+
[
37+
"org.apache.commons.lang3;ArrayUtils;false;add;;;Argument[0];ReturnValue;taint",
38+
"org.apache.commons.lang3;ArrayUtils;false;add;;;Argument[2];ReturnValue;taint",
39+
"org.apache.commons.lang3;ArrayUtils;false;add;(java.lang.Object[],java.lang.Object);;Argument[1];ReturnValue;taint",
40+
"org.apache.commons.lang3;ArrayUtils;false;add;(boolean[],boolean);;Argument[1];ReturnValue;taint",
41+
"org.apache.commons.lang3;ArrayUtils;false;add;(byte[],byte);;Argument[1];ReturnValue;taint",
42+
"org.apache.commons.lang3;ArrayUtils;false;add;(char[],char);;Argument[1];ReturnValue;taint",
43+
"org.apache.commons.lang3;ArrayUtils;false;add;(double[],double);;Argument[1];ReturnValue;taint",
44+
"org.apache.commons.lang3;ArrayUtils;false;add;(float[],float);;Argument[1];ReturnValue;taint",
45+
"org.apache.commons.lang3;ArrayUtils;false;add;(int[],int);;Argument[1];ReturnValue;taint",
46+
"org.apache.commons.lang3;ArrayUtils;false;add;(long[],long);;Argument[1];ReturnValue;taint",
47+
"org.apache.commons.lang3;ArrayUtils;false;add;(short[],short);;Argument[1];ReturnValue;taint",
48+
"org.apache.commons.lang3;ArrayUtils;false;addAll;;;Argument;ReturnValue;taint",
49+
"org.apache.commons.lang3;ArrayUtils;false;addFirst;;;Argument;ReturnValue;taint",
50+
"org.apache.commons.lang3;ArrayUtils;false;clone;;;Argument;ReturnValue;taint",
51+
"org.apache.commons.lang3;ArrayUtils;false;get;(java.lang.Object[],int,java.lang.Object);;Argument[2];ReturnValue;taint",
52+
"org.apache.commons.lang3;ArrayUtils;false;get;;;Argument[0];ReturnValue;taint",
53+
"org.apache.commons.lang3;ArrayUtils;false;insert;;;Argument[1];ReturnValue;taint",
54+
"org.apache.commons.lang3;ArrayUtils;false;insert;;;Argument[2];ReturnValue;taint",
55+
"org.apache.commons.lang3;ArrayUtils;false;insert;;;Argument[3];ReturnValue;taint",
56+
"org.apache.commons.lang3;ArrayUtils;false;nullToEmpty;(java.lang.Object[],java.lang.Class);;Argument[0];ReturnValue;taint",
57+
"org.apache.commons.lang3;ArrayUtils;false;nullToEmpty;(java.lang.String[]);;Argument;ReturnValue;taint",
58+
"org.apache.commons.lang3;ArrayUtils;false;remove;;;Argument[0];ReturnValue;taint",
59+
"org.apache.commons.lang3;ArrayUtils;false;removeAll;;;Argument[0];ReturnValue;taint",
60+
"org.apache.commons.lang3;ArrayUtils;false;removeAllOccurences;;;Argument[0];ReturnValue;taint",
61+
"org.apache.commons.lang3;ArrayUtils;false;removeAllOccurrences;;;Argument[0];ReturnValue;taint",
62+
"org.apache.commons.lang3;ArrayUtils;false;removeElement;;;Argument[0];ReturnValue;taint",
63+
"org.apache.commons.lang3;ArrayUtils;false;removeElements;;;Argument[0];ReturnValue;taint",
64+
"org.apache.commons.lang3;ArrayUtils;false;subarray;;;Argument[0];ReturnValue;taint",
65+
"org.apache.commons.lang3;ArrayUtils;false;toArray;;;Argument;ReturnValue;taint",
66+
"org.apache.commons.lang3;ArrayUtils;false;toMap;;;Argument;ReturnValue;taint",
67+
"org.apache.commons.lang3;ArrayUtils;false;toObject;;;Argument;ReturnValue;taint",
68+
"org.apache.commons.lang3;ArrayUtils;false;toPrimitive;;;Argument;ReturnValue;taint"
69+
]
7370
}
7471
}
7572

0 commit comments

Comments
 (0)