1616import jakarta .ws .rs .core .Link ;
1717import jakarta .ws .rs .core .MediaType ;
1818import jakarta .ws .rs .core .MultivaluedMap ;
19+ import jakarta .ws .rs .core .NewCookie ;
1920import jakarta .ws .rs .core .PathSegment ;
2021import jakarta .ws .rs .core .Response ;
2122import jakarta .ws .rs .core .UriBuilder ;
@@ -37,6 +38,14 @@ private static class IntSource {
3738 static int taint () { return 0 ; }
3839 }
3940
41+ private static class BooleanSource {
42+ static boolean taint () { return false ; }
43+ }
44+
45+ private static class DateSource {
46+ static Date taint () { return null ; }
47+ }
48+
4049 private static class SetStringSource {
4150 static Set <String > taint () { return new HashSet <String >(); }
4251 }
@@ -174,6 +183,68 @@ void testCookie() {
174183 sink (Cookie .valueOf (taint ()).toString ()); // $hasTaintFlow
175184 }
176185
186+ void testNewCookie () {
187+ sink (new NewCookie (Cookie .valueOf (taint ()))); // $hasTaintFlow
188+
189+ sink (new NewCookie (Cookie .valueOf (taint ()), "" , 0 , true )); // $hasTaintFlow
190+ sink (new NewCookie (Cookie .valueOf ("" ), taint (), 0 , false )); // $hasTaintFlow
191+ sink (new NewCookie (Cookie .valueOf ("" ), "" , IntSource .taint (), true )); // $hasTaintFlow
192+ sink (new NewCookie (Cookie .valueOf ("" ), "" , 0 , BooleanSource .taint ())); // $hasTaintFlow
193+
194+ sink (new NewCookie (Cookie .valueOf (taint ()), "" , 0 , new Date (), true , true )); // $hasTaintFlow
195+ sink (new NewCookie (Cookie .valueOf ("" ), taint (), 0 , new Date (), true , false )); // $hasTaintFlow
196+ sink (new NewCookie (Cookie .valueOf ("" ), "" , IntSource .taint (), new Date (), false , true )); // $hasTaintFlow
197+ sink (new NewCookie (Cookie .valueOf ("" ), "" , 0 , DateSource .taint (), false , false )); // $hasTaintFlow
198+ sink (new NewCookie (Cookie .valueOf ("" ), "" , 0 , new Date (), BooleanSource .taint (), false )); // $hasTaintFlow
199+ sink (new NewCookie (Cookie .valueOf ("" ), "" , 0 , new Date (), true , BooleanSource .taint ())); // $hasTaintFlow
200+
201+ sink (new NewCookie (taint (), "" )); // $hasTaintFlow
202+ sink (new NewCookie ("" , taint ())); // $hasTaintFlow
203+
204+ sink (new NewCookie (taint (), "" , "" , "" , 0 , "" , 0 , true )); // $hasTaintFlow
205+ sink (new NewCookie ("" , taint (), "" , "" , 0 , "" , 0 , false )); // $hasTaintFlow
206+ sink (new NewCookie ("" , "" , taint (), "" , 0 , "" , 0 , true )); // $hasTaintFlow
207+ sink (new NewCookie ("" , "" , "" , taint (), 0 , "" , 0 , false )); // $hasTaintFlow
208+ sink (new NewCookie ("" , "" , "" , "" , IntSource .taint (), "" , 0 , true )); // $hasTaintFlow
209+ sink (new NewCookie ("" , "" , "" , "" , 0 , taint (), 0 , false )); // $hasTaintFlow
210+ sink (new NewCookie ("" , "" , "" , "" , 0 , "" , IntSource .taint (), true )); // $hasTaintFlow
211+ sink (new NewCookie ("" , "" , "" , "" , 0 , "" , 0 , BooleanSource .taint ())); // $hasTaintFlow
212+
213+ sink (new NewCookie (taint (), "" , "" , "" , 0 , "" , 0 , new Date (), true , true )); // $hasTaintFlow
214+ sink (new NewCookie ("" , taint (), "" , "" , 0 , "" , 0 , new Date (), false , true )); // $hasTaintFlow
215+ sink (new NewCookie ("" , "" , taint (), "" , 0 , "" , 0 , new Date (), true , false )); // $hasTaintFlow
216+ sink (new NewCookie ("" , "" , "" , taint (), 0 , "" , 0 , new Date (), false , false )); // $hasTaintFlow
217+ sink (new NewCookie ("" , "" , "" , "" , IntSource .taint (), "" , 0 , new Date (), true , true )); // $hasTaintFlow
218+ sink (new NewCookie ("" , "" , "" , "" , 0 , taint (), 0 , new Date (), true , false )); // $hasTaintFlow
219+ sink (new NewCookie ("" , "" , "" , "" , 0 , "" , IntSource .taint (), new Date (), false , true )); // $hasTaintFlow
220+ sink (new NewCookie ("" , "" , "" , "" , 0 , "" , 0 , DateSource .taint (), false , false )); // $hasTaintFlow
221+ sink (new NewCookie ("" , "" , "" , "" , 0 , "" , 0 , new Date (), BooleanSource .taint (), true )); // $hasTaintFlow
222+ sink (new NewCookie ("" , "" , "" , "" , 0 , "" , 0 , new Date (), false , BooleanSource .taint ())); // $hasTaintFlow
223+
224+ sink (new NewCookie (taint (), "" , "" , "" , "" , 0 , true )); // $hasTaintFlow
225+ sink (new NewCookie ("" , taint (), "" , "" , "" , 0 , false )); // $hasTaintFlow
226+ sink (new NewCookie ("" , "" , taint (), "" , "" , 0 , true )); // $hasTaintFlow
227+ sink (new NewCookie ("" , "" , "" , taint (), "" , 0 , false )); // $hasTaintFlow
228+ sink (new NewCookie ("" , "" , "" , "" , taint (), 0 , false )); // $hasTaintFlow
229+ sink (new NewCookie ("" , "" , "" , "" , "" , IntSource .taint (), true )); // $hasTaintFlow
230+ sink (new NewCookie ("" , "" , "" , "" , "" , 0 , BooleanSource .taint ())); // $hasTaintFlow
231+
232+ sink (new NewCookie (taint (), "" , "" , "" , "" , 0 , true , true )); // $hasTaintFlow
233+ sink (new NewCookie ("" , taint (), "" , "" , "" , 0 , false , true )); // $hasTaintFlow
234+ sink (new NewCookie ("" , "" , taint (), "" , "" , 0 , true , false )); // $hasTaintFlow
235+ sink (new NewCookie ("" , "" , "" , taint (), "" , 0 , false , false )); // $hasTaintFlow
236+ sink (new NewCookie ("" , "" , "" , "" , taint (), 0 , true , true )); // $hasTaintFlow
237+ sink (new NewCookie ("" , "" , "" , "" , "" , IntSource .taint (), false , true )); // $hasTaintFlow
238+ sink (new NewCookie ("" , "" , "" , "" , "" , 0 , BooleanSource .taint (), false )); // $hasTaintFlow
239+ sink (new NewCookie ("" , "" , "" , "" , "" , 0 , true , BooleanSource .taint ())); // $hasTaintFlow
240+
241+ sink (NewCookie .valueOf (taint ()).getComment ()); // $hasTaintFlow
242+ sink (NewCookie .valueOf (taint ()).getExpiry ()); // $hasTaintFlow
243+ sink (NewCookie .valueOf (taint ()).getMaxAge ()); // $hasTaintFlow
244+ sink (NewCookie .valueOf (taint ()).toCookie ()); // $hasTaintFlow
245+ sink (NewCookie .valueOf (taint ())); // $hasTaintFlow
246+ }
247+
177248 void testForm (MultivaluedMap <String , String > mm1 , MultivaluedMap <String , String > mm2 ) {
178249 sink (new Form (taint (), "" )); // $hasTaintFlow
179250 sink (new Form ("" , taint ())); // $hasTaintFlow
0 commit comments