@@ -58,39 +58,41 @@ class StringLengthConflationConfiguration extends DataFlow::Configuration {
58
58
override predicate isSource ( DataFlow:: Node node , string flowstate ) {
59
59
// result of a call to `String.count`
60
60
exists ( MemberRefExpr member |
61
- member .getBase ( ) .getType ( ) .getName ( ) = "String" and
61
+ member .getBase ( ) .getType ( ) .( NominalType ) . getABaseType * ( ) . getName ( ) = "String" and
62
62
member .getMember ( ) .( VarDecl ) .getName ( ) = "count" and
63
63
node .asExpr ( ) = member and
64
64
flowstate = "String"
65
65
)
66
66
or
67
67
// result of a call to `NSString.length`
68
68
exists ( MemberRefExpr member |
69
- member .getBase ( ) .getType ( ) .getName ( ) = [ "NSString" , "NSMutableString" ] and
69
+ member .getBase ( ) .getType ( ) .( NominalType ) .getABaseType * ( ) .getName ( ) =
70
+ [ "NSString" , "NSMutableString" ] and
70
71
member .getMember ( ) .( VarDecl ) .getName ( ) = "length" and
71
72
node .asExpr ( ) = member and
72
73
flowstate = "NSString"
73
74
)
74
75
or
75
76
// result of a call to `String.utf8.count`
76
77
exists ( MemberRefExpr member |
77
- member .getBase ( ) .getType ( ) .getName ( ) = "String.UTF8View" and
78
+ member .getBase ( ) .getType ( ) .( NominalType ) . getABaseType * ( ) . getName ( ) = "String.UTF8View" and
78
79
member .getMember ( ) .( VarDecl ) .getName ( ) = "count" and
79
80
node .asExpr ( ) = member and
80
81
flowstate = "String.utf8"
81
82
)
82
83
or
83
84
// result of a call to `String.utf16.count`
84
85
exists ( MemberRefExpr member |
85
- member .getBase ( ) .getType ( ) .getName ( ) = "String.UTF16View" and
86
+ member .getBase ( ) .getType ( ) .( NominalType ) . getABaseType * ( ) . getName ( ) = "String.UTF16View" and
86
87
member .getMember ( ) .( VarDecl ) .getName ( ) = "count" and
87
88
node .asExpr ( ) = member and
88
89
flowstate = "String.utf16"
89
90
)
90
91
or
91
92
// result of a call to `String.unicodeScalars.count`
92
93
exists ( MemberRefExpr member |
93
- member .getBase ( ) .getType ( ) .getName ( ) = "String.UnicodeScalarView" and
94
+ member .getBase ( ) .getType ( ) .( NominalType ) .getABaseType * ( ) .getName ( ) =
95
+ "String.UnicodeScalarView" and
94
96
member .getMember ( ) .( VarDecl ) .getName ( ) = "count" and
95
97
node .asExpr ( ) = member and
96
98
flowstate = "String.unicodeScalars"
0 commit comments