@@ -77,17 +77,17 @@ public void M()
77
77
var sink3 = "" ;
78
78
ReturnRef ( sink2 , ref sink3 , ref sink3 ) ;
79
79
Check ( sink3 ) ;
80
- var sink13 = ( ( IEnumerable < string > ) new string [ ] { sink3 } ) . SelectEven ( x => x ) ;
80
+ var sink13 = ( ( IEnumerable < string > ) new string [ ] { sink3 } ) . SelectEven ( x => x ) . First ( ) ;
81
81
Check ( sink13 ) ;
82
- var sink14 = ( ( IEnumerable < string > ) new string [ ] { sink13 . First ( ) } ) . Select ( ReturnCheck ) ;
82
+ var sink14 = ( ( IEnumerable < string > ) new string [ ] { sink13 } ) . Select ( ReturnCheck ) . First ( ) ;
83
83
Check ( sink14 ) ;
84
- var sink15 = ( ( IEnumerable < string > ) new string [ ] { sink14 . First ( ) } ) . Zip ( ( ( IEnumerable < string > ) new string [ ] { "" } ) , ( x , y ) => x ) ;
84
+ var sink15 = ( ( IEnumerable < string > ) new string [ ] { sink14 } ) . Zip ( ( ( IEnumerable < string > ) new string [ ] { "" } ) , ( x , y ) => x ) . First ( ) ;
85
85
Check ( sink15 ) ;
86
- var sink16 = ( ( IEnumerable < string > ) new string [ ] { "" } ) . Zip ( ( ( IEnumerable < string > ) new string [ ] { sink15 . First ( ) } ) , ( x , y ) => y ) ;
86
+ var sink16 = ( ( IEnumerable < string > ) new string [ ] { "" } ) . Zip ( ( ( IEnumerable < string > ) new string [ ] { sink15 } ) , ( x , y ) => y ) . First ( ) ;
87
87
Check ( sink16 ) ;
88
- var sink17 = sink14 . Aggregate ( "" , ( acc , s ) => acc + s , x => x ) ;
88
+ var sink17 = ( ( IEnumerable < string > ) new string [ ] { sink14 } ) . Aggregate ( "" , ( acc , s ) => acc + s , x => x ) ;
89
89
Check ( sink17 ) ;
90
- var sink18 = ( ( IEnumerable < string > ) new string [ ] { "" } ) . Aggregate ( sink14 . First ( ) , ( acc , s ) => acc + s , x => x ) ;
90
+ var sink18 = ( ( IEnumerable < string > ) new string [ ] { "" } ) . Aggregate ( sink14 , ( acc , s ) => acc + s , x => x ) ;
91
91
Check ( sink18 ) ;
92
92
int sink21 ;
93
93
Int32 . TryParse ( sink18 , out sink21 ) ;
@@ -109,19 +109,19 @@ public void M()
109
109
Check ( nonSink0 ) ;
110
110
ReturnRef ( sink1 , ref sink1 , ref nonSink0 ) ;
111
111
Check ( nonSink0 ) ;
112
- var nonSink1 = ( ( IEnumerable < string > ) new string [ ] { nonSink0 } ) . SelectEven ( x => x ) ;
113
- Check ( nonSink1 ) ;
114
- nonSink1 = ( ( IEnumerable < string > ) new string [ ] { nonSink0 } ) . Select ( x => x ) ;
115
- Check ( nonSink1 ) ;
116
- nonSink1 = ( ( IEnumerable < string > ) new string [ ] { sink14 . First ( ) } ) . Zip ( ( ( IEnumerable < string > ) new string [ ] { "" } ) , ( x , y ) => y ) ;
117
- Check ( nonSink1 ) ;
118
- nonSink1 = ( ( IEnumerable < string > ) new string [ ] { "" } ) . Zip ( ( ( IEnumerable < string > ) new string [ ] { sink15 . First ( ) } ) , ( x , y ) => x ) ;
119
- Check ( nonSink1 ) ;
120
- nonSink0 = sink14 . Aggregate ( "" , ( acc , s ) => acc , x => x ) ;
112
+ nonSink0 = ( ( IEnumerable < string > ) new string [ ] { nonSink0 } ) . SelectEven ( x => x ) . First ( ) ;
121
113
Check ( nonSink0 ) ;
122
- nonSink0 = sink14 . Aggregate ( "" , ( acc , s ) => acc + s , x => "" ) ;
114
+ nonSink0 = ( ( IEnumerable < string > ) new string [ ] { nonSink0 } ) . Select ( x => x ) . First ( ) ;
123
115
Check ( nonSink0 ) ;
124
- nonSink0 = nonSink1 . Aggregate ( sink1 , ( acc , s ) => s , x => x ) ;
116
+ nonSink0 = ( ( IEnumerable < string > ) new string [ ] { sink14 } ) . Zip ( ( ( IEnumerable < string > ) new string [ ] { "" } ) , ( x , y ) => y ) . First ( ) ;
117
+ Check ( nonSink0 ) ;
118
+ nonSink0 = ( ( IEnumerable < string > ) new string [ ] { "" } ) . Zip ( ( ( IEnumerable < string > ) new string [ ] { sink15 } ) , ( x , y ) => x ) . First ( ) ;
119
+ Check ( nonSink0 ) ;
120
+ nonSink0 = ( ( IEnumerable < string > ) new string [ ] { sink14 } ) . Aggregate ( "" , ( acc , s ) => acc , x => x ) ;
121
+ Check ( nonSink0 ) ;
122
+ nonSink0 = ( ( IEnumerable < string > ) new string [ ] { sink14 } ) . Aggregate ( "" , ( acc , s ) => acc + s , x => "" ) ;
123
+ Check ( nonSink0 ) ;
124
+ nonSink0 = ( ( IEnumerable < string > ) new string [ ] { nonSink0 } ) . Aggregate ( sink1 , ( acc , s ) => s , x => x ) ;
125
125
Check ( nonSink0 ) ;
126
126
int nonSink2 ;
127
127
Int32 . TryParse ( nonSink0 , out nonSink2 ) ;
@@ -158,7 +158,7 @@ public void M()
158
158
var sink8 = "" ;
159
159
OutRef ( ref sink8 ) ;
160
160
Check ( sink8 ) ;
161
- var sink12 = OutYield ( ) ;
161
+ var sink12 = OutYield ( ) . First ( ) ;
162
162
Check ( sink12 ) ;
163
163
var sink23 = TaintedParam ( nonSink0 ) ; // even though the argument is not tainted, the parameter is considered tainted
164
164
Check ( sink23 ) ;
@@ -202,30 +202,32 @@ public void M()
202
202
Check ( nonSink0 ) ;
203
203
}
204
204
205
- public void M2 ( IQueryable < string > tainted , IQueryable < string > notTainted )
205
+ public void M2 ( )
206
206
{
207
+ IQueryable < string > tainted = new [ ] { "taint source" } . AsQueryable ( ) ;
208
+ IQueryable < string > notTainted = new [ ] { "not tainted" } . AsQueryable ( ) ;
207
209
// Flow into a callable via library call, tainted
208
210
Func < string , string > f1 = sinkParam10 => { Check ( sinkParam10 ) ; return sinkParam10 ; } ;
209
211
System . Linq . Expressions . Expression < Func < string , string > > f2 = x => ReturnCheck2 ( x ) ;
210
- var sink24 = tainted . Select ( f1 ) ;
212
+ var sink24 = tainted . Select ( f1 ) . First ( ) ;
211
213
Check ( sink24 ) ;
212
- var sink25 = tainted . Select ( f2 ) ;
214
+ var sink25 = tainted . Select ( f2 ) . First ( ) ;
213
215
Check ( sink25 ) ;
214
- var sink26 = tainted . Select ( ReturnCheck3 ) ;
216
+ var sink26 = tainted . Select ( ReturnCheck3 ) . First ( ) ;
215
217
Check ( sink26 ) ;
216
218
217
219
// Flow into a callable via library call, not tainted
218
220
Func < string , string > f3 = nonSinkParam => { Check ( nonSinkParam ) ; return nonSinkParam ; } ;
219
221
System . Linq . Expressions . Expression < Func < string , string > > f4 = x => NonReturnCheck ( x ) ;
220
- var nonSink = notTainted . Select ( f1 ) ;
222
+ var nonSink = notTainted . Select ( f1 ) . First ( ) ;
221
223
Check ( nonSink ) ;
222
- nonSink = notTainted . Select ( f2 ) ;
224
+ nonSink = notTainted . Select ( f2 ) . First ( ) ;
223
225
Check ( nonSink ) ;
224
- nonSink = notTainted . Select ( f3 ) ;
226
+ nonSink = notTainted . Select ( f3 ) . First ( ) ;
225
227
Check ( nonSink ) ;
226
- nonSink = notTainted . Select ( f4 ) ;
228
+ nonSink = notTainted . Select ( f4 ) . First ( ) ;
227
229
Check ( nonSink ) ;
228
- nonSink = notTainted . Select ( ReturnCheck3 ) ;
230
+ nonSink = notTainted . Select ( ReturnCheck3 ) . First ( ) ;
229
231
Check ( nonSink ) ;
230
232
}
231
233
0 commit comments