Skip to content

Commit 2d6197f

Browse files
committed
C#: Generalize ASP.NET taint members to collection types.
1 parent f826262 commit 2d6197f

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

  • csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources

csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Remote.qll

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44

55
import csharp
6+
private import semmle.code.csharp.commons.Collections
67
private import semmle.code.csharp.frameworks.system.Net
78
private import semmle.code.csharp.frameworks.system.Web
89
private import semmle.code.csharp.frameworks.system.web.Http
@@ -115,8 +116,8 @@ class AspNetServiceRemoteFlowSource extends AspNetRemoteFlowSource, DataFlow::Pa
115116
override string getSourceType() { result = "ASP.NET web service input" }
116117
}
117118

118-
private class CandidateMembersToTaint extends Member {
119-
CandidateMembersToTaint() {
119+
private class CandidateMemberToTaint extends Member {
120+
CandidateMemberToTaint() {
120121
this.isPublic() and
121122
not this.isStatic() and
122123
(
@@ -140,11 +141,11 @@ private class CandidateMembersToTaint extends Member {
140141
* Note that this also impacts uses of such types in other contexts.
141142
*/
142143
private class AspNetRemoteFlowSourceMember extends TaintTracking::TaintedMember,
143-
CandidateMembersToTaint
144+
CandidateMemberToTaint
144145
{
145146
AspNetRemoteFlowSourceMember() {
146147
exists(Type t, Type t0 | t = this.getDeclaringType() |
147-
(t = t0 or t = t0.(ArrayType).getElementType()) and
148+
(t = t0 or t = t0.(CollectionType).getElementType()) and
148149
(
149150
t0 = any(AspNetRemoteFlowSourceMember m).getType()
150151
or
@@ -261,11 +262,11 @@ class AspNetCoreRoutingMethodParameter extends AspNetCoreRemoteFlowSource, DataF
261262
* properties.
262263
*/
263264
private class AspNetCoreRemoteFlowSourceMember extends TaintTracking::TaintedMember,
264-
CandidateMembersToTaint
265+
CandidateMemberToTaint
265266
{
266267
AspNetCoreRemoteFlowSourceMember() {
267268
exists(Type t, Type t0 | t = this.getDeclaringType() |
268-
(t = t0 or t = t0.(ArrayType).getElementType()) and
269+
(t = t0 or t = t0.(CollectionType).getElementType()) and
269270
(
270271
t0 = any(AspNetCoreRemoteFlowSourceMember m).getType()
271272
or

0 commit comments

Comments
 (0)