@@ -70,58 +70,150 @@ private class ApacheArrayUtilsModel extends SummaryModelCsv {
7070 }
7171}
7272
73- private Type getAnExcludedParameterType ( ) {
74- result instanceof PrimitiveType or
75- result .( RefType ) .hasQualifiedName ( "java.nio.charset" , "Charset" ) or
76- result .( RefType ) .hasQualifiedName ( "java.util" , "Locale" )
77- }
78-
79- private class ApacheStringUtilsTaintPreservingMethod extends TaintPreservingCallable {
80- ApacheStringUtilsTaintPreservingMethod ( ) {
81- this .getDeclaringType ( ) .hasQualifiedName ( "org.apache.commons.lang3" , "StringUtils" ) and
82- this .hasName ( [
83- "abbreviate" , "abbreviateMiddle" , "appendIfMissing" , "appendIfMissingIgnoreCase" ,
84- "capitalize" , "center" , "chomp" , "chop" , "defaultIfBlank" , "defaultIfEmpty" ,
85- "defaultString" , "deleteWhitespace" , "difference" , "firstNonBlank" , "firstNonEmpty" ,
86- "getBytes" , "getCommonPrefix" , "getDigits" , "getIfBlank" , "getIfEmpty" , "join" , "joinWith" ,
87- "left" , "leftPad" , "lowerCase" , "mid" , "normalizeSpace" , "overlay" , "prependIfMissing" ,
88- "prependIfMissingIgnoreCase" , "remove" , "removeAll" , "removeEnd" , "removeEndIgnoreCase" ,
89- "removeFirst" , "removeIgnoreCase" , "removePattern" , "removeStart" , "removeStartIgnoreCase" ,
90- "repeat" , "replace" , "replaceAll" , "replaceChars" , "replaceEach" , "replaceEachRepeatedly" ,
91- "replaceFirst" , "replaceIgnoreCase" , "replaceOnce" , "replaceOnceIgnoreCase" ,
92- "replacePattern" , "reverse" , "reverseDelimited" , "right" , "rightPad" , "rotate" , "split" ,
93- "splitByCharacterType" , "splitByCharacterTypeCamelCase" , "splitByWholeSeparator" ,
94- "splitByWholeSeparatorPreserveAllTokens" , "splitPreserveAllTokens" , "strip" , "stripAccents" ,
95- "stripAll" , "stripEnd" , "stripStart" , "stripToEmpty" , "stripToNull" , "substring" ,
96- "substringAfter" , "substringAfterLast" , "substringBefore" , "substringBeforeLast" ,
97- "substringBetween" , "substringsBetween" , "swapCase" , "toCodePoints" , "toEncodedString" ,
98- "toRootLowerCase" , "toRootUpperCase" , "toString" , "trim" , "trimToEmpty" , "trimToNull" ,
99- "truncate" , "uncapitalize" , "unwrap" , "upperCase" , "valueOf" , "wrap" , "wrapIfMissing"
100- ] )
101- }
102-
103- private predicate isExcludedParameter ( int arg ) {
104- this .getName ( ) .matches ( [ "appendIfMissing%" , "prependIfMissing%" ] ) and arg = [ 2 , 3 ]
105- or
106- this .getName ( ) .matches ( [ "remove%" , "split%" , "substring%" , "strip%" ] ) and
107- arg = [ 1 .. getNumberOfParameters ( ) - 1 ]
108- or
109- this .getName ( ) .matches ( [ "chomp" , "getBytes" , "replace%" , "toString" , "unwrap" ] ) and arg = 1
110- or
111- this .getName ( ) = "join" and
112- // Exclude joins of types that render numerically (char[] and non-primitive arrays
113- // are still considered taint sources)
114- exists ( PrimitiveType pt |
115- this .getParameterType ( arg ) .( Array ) .getComponentType ( ) = pt and
116- not pt instanceof CharacterType
117- ) and
118- arg = 0
119- }
120-
121- override predicate returnsTaintFrom ( int arg ) {
122- arg = [ 0 .. getNumberOfParameters ( ) - 1 ] and
123- not this .getParameterType ( arg ) = getAnExcludedParameterType ( ) and
124- not isExcludedParameter ( arg )
73+ private class ApacheStringUtilsModel extends SummaryModelCsv {
74+ override predicate row ( string row ) {
75+ row =
76+ [
77+ "org.apache.commons.lang3;StringUtils;false;abbreviate;(java.lang.String,java.lang.String,int);;Argument[1];ReturnValue;taint" ,
78+ "org.apache.commons.lang3;StringUtils;false;abbreviate;(java.lang.String,java.lang.String,int,int);;Argument[1];ReturnValue;taint" ,
79+ "org.apache.commons.lang3;StringUtils;false;abbreviate;;;Argument[0];ReturnValue;taint" ,
80+ "org.apache.commons.lang3;StringUtils;false;abbreviateMiddle;;;Argument[0];ReturnValue;taint" ,
81+ "org.apache.commons.lang3;StringUtils;false;abbreviateMiddle;;;Argument[1];ReturnValue;taint" ,
82+ "org.apache.commons.lang3;StringUtils;false;appendIfMissing;;;Argument[0];ReturnValue;taint" ,
83+ "org.apache.commons.lang3;StringUtils;false;appendIfMissing;;;Argument[1];ReturnValue;taint" ,
84+ "org.apache.commons.lang3;StringUtils;false;appendIfMissingIgnoreCase;;;Argument[0];ReturnValue;taint" ,
85+ "org.apache.commons.lang3;StringUtils;false;appendIfMissingIgnoreCase;;;Argument[1];ReturnValue;taint" ,
86+ "org.apache.commons.lang3;StringUtils;false;capitalize;;;Argument;ReturnValue;taint" ,
87+ "org.apache.commons.lang3;StringUtils;false;center;(java.lang.String,int,java.lang.String);;Argument[2];ReturnValue;taint" ,
88+ "org.apache.commons.lang3;StringUtils;false;center;;;Argument[0];ReturnValue;taint" ,
89+ "org.apache.commons.lang3;StringUtils;false;chomp;(java.lang.String);;Argument;ReturnValue;taint" ,
90+ "org.apache.commons.lang3;StringUtils;false;chomp;(java.lang.String,java.lang.String);;Argument[0];ReturnValue;taint" ,
91+ "org.apache.commons.lang3;StringUtils;false;chop;;;Argument;ReturnValue;taint" ,
92+ "org.apache.commons.lang3;StringUtils;false;defaultIfBlank;;;Argument;ReturnValue;taint" ,
93+ "org.apache.commons.lang3;StringUtils;false;defaultIfEmpty;;;Argument;ReturnValue;taint" ,
94+ "org.apache.commons.lang3;StringUtils;false;defaultString;;;Argument;ReturnValue;taint" ,
95+ "org.apache.commons.lang3;StringUtils;false;deleteWhitespace;;;Argument;ReturnValue;taint" ,
96+ "org.apache.commons.lang3;StringUtils;false;difference;;;Argument;ReturnValue;taint" ,
97+ "org.apache.commons.lang3;StringUtils;false;firstNonBlank;;;Argument;ReturnValue;taint" ,
98+ "org.apache.commons.lang3;StringUtils;false;firstNonEmpty;;;Argument;ReturnValue;taint" ,
99+ "org.apache.commons.lang3;StringUtils;false;getBytes;;;Argument[0];ReturnValue;taint" ,
100+ "org.apache.commons.lang3;StringUtils;false;getCommonPrefix;;;Argument;ReturnValue;taint" ,
101+ "org.apache.commons.lang3;StringUtils;false;getDigits;;;Argument;ReturnValue;taint" ,
102+ "org.apache.commons.lang3;StringUtils;false;getIfBlank;;;Argument;ReturnValue;taint" ,
103+ "org.apache.commons.lang3;StringUtils;false;getIfEmpty;;;Argument;ReturnValue;taint" ,
104+ "org.apache.commons.lang3;StringUtils;false;join;(char[],char);;Argument[0];ReturnValue;taint" ,
105+ "org.apache.commons.lang3;StringUtils;false;join;(char[],char,int,int);;Argument[0];ReturnValue;taint" ,
106+ "org.apache.commons.lang3;StringUtils;false;join;(java.lang.Iterable,char);;Argument[0];ReturnValue;taint" ,
107+ "org.apache.commons.lang3;StringUtils;false;join;(java.lang.Iterable,java.lang.String);;Argument;ReturnValue;taint" ,
108+ "org.apache.commons.lang3;StringUtils;false;join;(java.lang.Object[]);;Argument;ReturnValue;taint" ,
109+ "org.apache.commons.lang3;StringUtils;false;join;(java.lang.Object[],char);;Argument[0];ReturnValue;taint" ,
110+ "org.apache.commons.lang3;StringUtils;false;join;(java.lang.Object[],char,int,int);;Argument[0];ReturnValue;taint" ,
111+ "org.apache.commons.lang3;StringUtils;false;join;(java.lang.Object[],java.lang.String);;Argument;ReturnValue;taint" ,
112+ "org.apache.commons.lang3;StringUtils;false;join;(java.lang.Object[],java.lang.String,int,int);;Argument[0];ReturnValue;taint" ,
113+ "org.apache.commons.lang3;StringUtils;false;join;(java.lang.Object[],java.lang.String,int,int);;Argument[1];ReturnValue;taint" ,
114+ "org.apache.commons.lang3;StringUtils;false;join;(java.util.Iterator,char);;Argument[0];ReturnValue;taint" ,
115+ "org.apache.commons.lang3;StringUtils;false;join;(java.util.Iterator,java.lang.String);;Argument;ReturnValue;taint" ,
116+ "org.apache.commons.lang3;StringUtils;false;join;(java.util.List,char,int,int);;Argument[0];ReturnValue;taint" ,
117+ "org.apache.commons.lang3;StringUtils;false;join;(java.util.List,java.lang.String,int,int);;Argument[0];ReturnValue;taint" ,
118+ "org.apache.commons.lang3;StringUtils;false;join;(java.util.List,java.lang.String,int,int);;Argument[1];ReturnValue;taint" ,
119+ "org.apache.commons.lang3;StringUtils;false;joinWith;;;Argument;ReturnValue;taint" ,
120+ "org.apache.commons.lang3;StringUtils;false;left;;;Argument[0];ReturnValue;taint" ,
121+ "org.apache.commons.lang3;StringUtils;false;leftPad;(java.lang.String,int,java.lang.String);;Argument[2];ReturnValue;taint" ,
122+ "org.apache.commons.lang3;StringUtils;false;leftPad;;;Argument[0];ReturnValue;taint" ,
123+ "org.apache.commons.lang3;StringUtils;false;lowerCase;(java.lang.String);;Argument;ReturnValue;taint" ,
124+ "org.apache.commons.lang3;StringUtils;false;lowerCase;(java.lang.String,java.util.Locale);;Argument[0];ReturnValue;taint" ,
125+ "org.apache.commons.lang3;StringUtils;false;mid;;;Argument[0];ReturnValue;taint" ,
126+ "org.apache.commons.lang3;StringUtils;false;normalizeSpace;;;Argument;ReturnValue;taint" ,
127+ "org.apache.commons.lang3;StringUtils;false;overlay;;;Argument[0];ReturnValue;taint" ,
128+ "org.apache.commons.lang3;StringUtils;false;overlay;;;Argument[1];ReturnValue;taint" ,
129+ "org.apache.commons.lang3;StringUtils;false;prependIfMissing;;;Argument[0];ReturnValue;taint" ,
130+ "org.apache.commons.lang3;StringUtils;false;prependIfMissing;;;Argument[1];ReturnValue;taint" ,
131+ "org.apache.commons.lang3;StringUtils;false;prependIfMissingIgnoreCase;;;Argument[0];ReturnValue;taint" ,
132+ "org.apache.commons.lang3;StringUtils;false;prependIfMissingIgnoreCase;;;Argument[1];ReturnValue;taint" ,
133+ "org.apache.commons.lang3;StringUtils;false;remove;;;Argument[0];ReturnValue;taint" ,
134+ "org.apache.commons.lang3;StringUtils;false;removeAll;;;Argument[0];ReturnValue;taint" ,
135+ "org.apache.commons.lang3;StringUtils;false;removeEnd;;;Argument[0];ReturnValue;taint" ,
136+ "org.apache.commons.lang3;StringUtils;false;removeEndIgnoreCase;;;Argument[0];ReturnValue;taint" ,
137+ "org.apache.commons.lang3;StringUtils;false;removeFirst;;;Argument[0];ReturnValue;taint" ,
138+ "org.apache.commons.lang3;StringUtils;false;removeIgnoreCase;;;Argument[0];ReturnValue;taint" ,
139+ "org.apache.commons.lang3;StringUtils;false;removePattern;;;Argument[0];ReturnValue;taint" ,
140+ "org.apache.commons.lang3;StringUtils;false;removeStart;;;Argument[0];ReturnValue;taint" ,
141+ "org.apache.commons.lang3;StringUtils;false;removeStartIgnoreCase;;;Argument[0];ReturnValue;taint" ,
142+ "org.apache.commons.lang3;StringUtils;false;repeat;(java.lang.String,java.lang.String,int);;Argument[1];ReturnValue;taint" ,
143+ "org.apache.commons.lang3;StringUtils;false;repeat;;;Argument[0];ReturnValue;taint" ,
144+ "org.apache.commons.lang3;StringUtils;false;replace;;;Argument[0];ReturnValue;taint" ,
145+ "org.apache.commons.lang3;StringUtils;false;replace;;;Argument[2];ReturnValue;taint" ,
146+ "org.apache.commons.lang3;StringUtils;false;replaceAll;;;Argument[0];ReturnValue;taint" ,
147+ "org.apache.commons.lang3;StringUtils;false;replaceAll;;;Argument[2];ReturnValue;taint" ,
148+ "org.apache.commons.lang3;StringUtils;false;replaceChars;(java.lang.String,java.lang.String,java.lang.String);;Argument[2];ReturnValue;taint" ,
149+ "org.apache.commons.lang3;StringUtils;false;replaceChars;;;Argument[0];ReturnValue;taint" ,
150+ "org.apache.commons.lang3;StringUtils;false;replaceEach;;;Argument[0];ReturnValue;taint" ,
151+ "org.apache.commons.lang3;StringUtils;false;replaceEach;;;Argument[2];ReturnValue;taint" ,
152+ "org.apache.commons.lang3;StringUtils;false;replaceEachRepeatedly;;;Argument[0];ReturnValue;taint" ,
153+ "org.apache.commons.lang3;StringUtils;false;replaceEachRepeatedly;;;Argument[2];ReturnValue;taint" ,
154+ "org.apache.commons.lang3;StringUtils;false;replaceFirst;;;Argument[0];ReturnValue;taint" ,
155+ "org.apache.commons.lang3;StringUtils;false;replaceFirst;;;Argument[2];ReturnValue;taint" ,
156+ "org.apache.commons.lang3;StringUtils;false;replaceIgnoreCase;;;Argument[0];ReturnValue;taint" ,
157+ "org.apache.commons.lang3;StringUtils;false;replaceIgnoreCase;;;Argument[2];ReturnValue;taint" ,
158+ "org.apache.commons.lang3;StringUtils;false;replaceOnce;;;Argument[0];ReturnValue;taint" ,
159+ "org.apache.commons.lang3;StringUtils;false;replaceOnce;;;Argument[2];ReturnValue;taint" ,
160+ "org.apache.commons.lang3;StringUtils;false;replaceOnceIgnoreCase;;;Argument[0];ReturnValue;taint" ,
161+ "org.apache.commons.lang3;StringUtils;false;replaceOnceIgnoreCase;;;Argument[2];ReturnValue;taint" ,
162+ "org.apache.commons.lang3;StringUtils;false;replacePattern;;;Argument[0];ReturnValue;taint" ,
163+ "org.apache.commons.lang3;StringUtils;false;replacePattern;;;Argument[2];ReturnValue;taint" ,
164+ "org.apache.commons.lang3;StringUtils;false;reverse;;;Argument;ReturnValue;taint" ,
165+ "org.apache.commons.lang3;StringUtils;false;reverseDelimited;;;Argument[0];ReturnValue;taint" ,
166+ "org.apache.commons.lang3;StringUtils;false;right;;;Argument[0];ReturnValue;taint" ,
167+ "org.apache.commons.lang3;StringUtils;false;rightPad;(java.lang.String,int,java.lang.String);;Argument[2];ReturnValue;taint" ,
168+ "org.apache.commons.lang3;StringUtils;false;rightPad;;;Argument[0];ReturnValue;taint" ,
169+ "org.apache.commons.lang3;StringUtils;false;rotate;;;Argument[0];ReturnValue;taint" ,
170+ "org.apache.commons.lang3;StringUtils;false;split;(java.lang.String);;Argument;ReturnValue;taint" ,
171+ "org.apache.commons.lang3;StringUtils;false;split;(java.lang.String,char);;Argument[0];ReturnValue;taint" ,
172+ "org.apache.commons.lang3;StringUtils;false;split;(java.lang.String,java.lang.String);;Argument[0];ReturnValue;taint" ,
173+ "org.apache.commons.lang3;StringUtils;false;split;(java.lang.String,java.lang.String,int);;Argument[0];ReturnValue;taint" ,
174+ "org.apache.commons.lang3;StringUtils;false;splitByCharacterType;;;Argument;ReturnValue;taint" ,
175+ "org.apache.commons.lang3;StringUtils;false;splitByCharacterTypeCamelCase;;;Argument;ReturnValue;taint" ,
176+ "org.apache.commons.lang3;StringUtils;false;splitByWholeSeparator;;;Argument[0];ReturnValue;taint" ,
177+ "org.apache.commons.lang3;StringUtils;false;splitByWholeSeparatorPreserveAllTokens;;;Argument[0];ReturnValue;taint" ,
178+ "org.apache.commons.lang3;StringUtils;false;splitPreserveAllTokens;(java.lang.String);;Argument;ReturnValue;taint" ,
179+ "org.apache.commons.lang3;StringUtils;false;splitPreserveAllTokens;(java.lang.String,char);;Argument[0];ReturnValue;taint" ,
180+ "org.apache.commons.lang3;StringUtils;false;splitPreserveAllTokens;(java.lang.String,java.lang.String);;Argument[0];ReturnValue;taint" ,
181+ "org.apache.commons.lang3;StringUtils;false;splitPreserveAllTokens;(java.lang.String,java.lang.String,int);;Argument[0];ReturnValue;taint" ,
182+ "org.apache.commons.lang3;StringUtils;false;strip;(java.lang.String);;Argument;ReturnValue;taint" ,
183+ "org.apache.commons.lang3;StringUtils;false;strip;(java.lang.String,java.lang.String);;Argument[0];ReturnValue;taint" ,
184+ "org.apache.commons.lang3;StringUtils;false;stripAccents;;;Argument;ReturnValue;taint" ,
185+ "org.apache.commons.lang3;StringUtils;false;stripAll;;;Argument[0];ReturnValue;taint" ,
186+ "org.apache.commons.lang3;StringUtils;false;stripEnd;;;Argument[0];ReturnValue;taint" ,
187+ "org.apache.commons.lang3;StringUtils;false;stripStart;;;Argument[0];ReturnValue;taint" ,
188+ "org.apache.commons.lang3;StringUtils;false;stripToEmpty;;;Argument;ReturnValue;taint" ,
189+ "org.apache.commons.lang3;StringUtils;false;stripToNull;;;Argument;ReturnValue;taint" ,
190+ "org.apache.commons.lang3;StringUtils;false;substring;;;Argument[0];ReturnValue;taint" ,
191+ "org.apache.commons.lang3;StringUtils;false;substringAfter;;;Argument[0];ReturnValue;taint" ,
192+ "org.apache.commons.lang3;StringUtils;false;substringAfterLast;;;Argument[0];ReturnValue;taint" ,
193+ "org.apache.commons.lang3;StringUtils;false;substringBefore;;;Argument[0];ReturnValue;taint" ,
194+ "org.apache.commons.lang3;StringUtils;false;substringBeforeLast;;;Argument[0];ReturnValue;taint" ,
195+ "org.apache.commons.lang3;StringUtils;false;substringBetween;;;Argument[0];ReturnValue;taint" ,
196+ "org.apache.commons.lang3;StringUtils;false;substringsBetween;;;Argument[0];ReturnValue;taint" ,
197+ "org.apache.commons.lang3;StringUtils;false;swapCase;;;Argument;ReturnValue;taint" ,
198+ "org.apache.commons.lang3;StringUtils;false;toCodePoints;;;Argument;ReturnValue;taint" ,
199+ "org.apache.commons.lang3;StringUtils;false;toEncodedString;;;Argument[0];ReturnValue;taint" ,
200+ "org.apache.commons.lang3;StringUtils;false;toRootLowerCase;;;Argument;ReturnValue;taint" ,
201+ "org.apache.commons.lang3;StringUtils;false;toRootUpperCase;;;Argument;ReturnValue;taint" ,
202+ "org.apache.commons.lang3;StringUtils;false;toString;;;Argument[0];ReturnValue;taint" ,
203+ "org.apache.commons.lang3;StringUtils;false;trim;;;Argument;ReturnValue;taint" ,
204+ "org.apache.commons.lang3;StringUtils;false;trimToEmpty;;;Argument;ReturnValue;taint" ,
205+ "org.apache.commons.lang3;StringUtils;false;trimToNull;;;Argument;ReturnValue;taint" ,
206+ "org.apache.commons.lang3;StringUtils;false;truncate;;;Argument[0];ReturnValue;taint" ,
207+ "org.apache.commons.lang3;StringUtils;false;uncapitalize;;;Argument;ReturnValue;taint" ,
208+ "org.apache.commons.lang3;StringUtils;false;unwrap;;;Argument[0];ReturnValue;taint" ,
209+ "org.apache.commons.lang3;StringUtils;false;upperCase;(java.lang.String);;Argument;ReturnValue;taint" ,
210+ "org.apache.commons.lang3;StringUtils;false;upperCase;(java.lang.String,java.util.Locale);;Argument[0];ReturnValue;taint" ,
211+ "org.apache.commons.lang3;StringUtils;false;valueOf;;;Argument;ReturnValue;taint" ,
212+ "org.apache.commons.lang3;StringUtils;false;wrap;(java.lang.String,char);;Argument[0];ReturnValue;taint" ,
213+ "org.apache.commons.lang3;StringUtils;false;wrap;(java.lang.String,java.lang.String);;Argument;ReturnValue;taint" ,
214+ "org.apache.commons.lang3;StringUtils;false;wrapIfMissing;(java.lang.String,char);;Argument[0];ReturnValue;taint" ,
215+ "org.apache.commons.lang3;StringUtils;false;wrapIfMissing;(java.lang.String,java.lang.String);;Argument;ReturnValue;taint"
216+ ]
125217 }
126218}
127219
0 commit comments