@@ -205,7 +205,15 @@ public static IEnumerable<string> RequestLineInvalidData
205
205
"CUSTOM / HTTP/1.1a\n " ,
206
206
"CUSTOM / HTTP/1.1a\r \n " ,
207
207
"CUSTOM / HTTP/1.1ab\r \n " ,
208
+ "CUSTOM / H\n " ,
209
+ "CUSTOM / HT\n " ,
210
+ "CUSTOM / HTT\n " ,
211
+ "CUSTOM / HTTP\n " ,
212
+ "CUSTOM / HTTP/\n " ,
213
+ "CUSTOM / HTTP/1\n " ,
214
+ "CUSTOM / HTTP/1.\n " ,
208
215
"CUSTOM / hello\r \n " ,
216
+ "CUSTOM / hello\n " ,
209
217
"CUSTOM ? HTTP/1.1\r \n " ,
210
218
"CUSTOM /a?b=cHTTP/1.1\r \n " ,
211
219
"CUSTOM /a%20bHTTP/1.1\r \n " ,
@@ -217,6 +225,21 @@ public static IEnumerable<string> RequestLineInvalidData
217
225
}
218
226
}
219
227
228
+ // This list is valid in quirk mode
229
+ public static IEnumerable < string > RequestLineInvalidDataLineFeedTerminator
230
+ {
231
+ get
232
+ {
233
+ return new [ ]
234
+ {
235
+ "GET / HTTP/1.0\n " ,
236
+ "GET / HTTP/1.1\n " ,
237
+ "CUSTOM / HTTP/1.0\n " ,
238
+ "CUSTOM / HTTP/1.1\n " ,
239
+ } ;
240
+ }
241
+ }
242
+
220
243
// Bad HTTP Methods (invalid according to RFC)
221
244
public static IEnumerable < string > MethodWithNonTokenCharData
222
245
{
@@ -364,13 +387,19 @@ public static IEnumerable<string> TargetWithNullCharData
364
387
"8charact" ,
365
388
} ;
366
389
367
- public static IEnumerable < object [ ] > RequestHeaderInvalidData => new [ ]
390
+ public static IEnumerable < object [ ] > RequestHeaderInvalidDataLineFeedTerminator => new [ ]
368
391
{
369
392
// Missing CR
370
393
new [ ] { "Header: value\n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"Header: value\x0A" ) } ,
371
394
new [ ] { "Header-1: value1\n Header-2: value2\r \n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"Header-1: value1\x0A" ) } ,
372
395
new [ ] { "Header-1: value1\r \n Header-2: value2\n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"Header-2: value2\x0A" ) } ,
373
396
397
+ // Empty header name
398
+ new [ ] { ":a\n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @":a\x0A" ) } ,
399
+ } ;
400
+
401
+ public static IEnumerable < object [ ] > RequestHeaderInvalidData => new [ ]
402
+ {
374
403
// Line folding
375
404
new [ ] { "Header: line1\r \n line2\r \n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @" line2\x0D\x0A" ) } ,
376
405
new [ ] { "Header: line1\r \n \t line2\r \n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"\x09line2\x0D\x0A" ) } ,
@@ -404,7 +433,7 @@ public static IEnumerable<string> TargetWithNullCharData
404
433
new [ ] { "Header-1 value1\r \n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"Header-1 value1\x0D\x0A" ) } ,
405
434
new [ ] { "Header-1 value1\r \n Header-2: value2\r \n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"Header-1 value1\x0D\x0A" ) } ,
406
435
new [ ] { "Header-1: value1\r \n Header-2 value2\r \n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"Header-2 value2\x0D\x0A" ) } ,
407
- new [ ] { "\n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"\x0A" ) } ,
436
+ new [ ] { "HeaderValue1 \r \n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"HeaderValue1\x0D \x0A" ) } ,
408
437
409
438
// Starting with whitespace
410
439
new [ ] { " Header: value\r \n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @" Header: value\x0D\x0A" ) } ,
@@ -435,11 +464,13 @@ public static IEnumerable<string> TargetWithNullCharData
435
464
436
465
// Headers not ending in CRLF line
437
466
new [ ] { "Header-1: value1\r \n Header-2: value2\r \n \r \r " , CoreStrings . BadRequest_InvalidRequestHeadersNoCRLF } ,
438
- new [ ] { "Header-1: value1\r \n Header-2: value2\r \n \r " , CoreStrings . BadRequest_InvalidRequestHeadersNoCRLF } ,
467
+ new [ ] { "Header-1: value1\r \n Header-2: value2\r \n \r " , CoreStrings . BadRequest_InvalidRequestHeadersNoCRLF } ,
439
468
new [ ] { "Header-1: value1\r \n Header-2: value2\r \n \r \n " , CoreStrings . BadRequest_InvalidRequestHeadersNoCRLF } ,
469
+ new [ ] { "Header-1: value1\r \n Header-2\t : value2 \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @"Header-2\x09: value2 \x0A" ) } ,
440
470
441
471
// Empty header name
442
472
new [ ] { ": value\r \n \r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @": value\x0D\x0A" ) } ,
473
+ new [ ] { ":a\r \n " , CoreStrings . FormatBadRequest_InvalidRequestHeader_Detail ( @":a\x0D\x0A" ) } ,
443
474
} ;
444
475
445
476
public static TheoryData < string , string > HostHeaderData
0 commit comments