File tree Expand file tree Collapse file tree 1 file changed +9
-0
lines changed Expand file tree Collapse file tree 1 file changed +9
-0
lines changed Original file line number Diff line number Diff line change 1
1
import asyncio
2
2
import http
3
3
import logging
4
+ import re
4
5
import urllib
5
6
6
7
import httptools
13
14
is_ssl ,
14
15
)
15
16
17
+ HEADER_RE = re .compile (b'[\x00 -\x1F \x7F ()<>@,;:[]={} \t \\ "]' )
18
+ HEADER_VALUE_RE = re .compile (b"[\x00 -\x1F \x7F ]" )
19
+
16
20
17
21
def _get_status_line (status_code ):
18
22
try :
@@ -459,6 +463,11 @@ async def send(self, message):
459
463
content = [STATUS_LINE [status_code ]]
460
464
461
465
for name , value in headers :
466
+ if HEADER_RE .search (name ):
467
+ raise RuntimeError ("Invalid HTTP header name." )
468
+ if HEADER_VALUE_RE .search (value ):
469
+ raise RuntimeError ("Invalid HTTP header value." )
470
+
462
471
name = name .lower ()
463
472
if name == b"content-length" and self .chunked_encoding is None :
464
473
self .expected_content_length = int (value .decode ())
You can’t perform that action at this time.
0 commit comments