Skip to content

Commit bc7dd0f

Browse files
authored
Fix cosmetic header validity parsing regex (#7308)
1 parent 4443b1a commit bc7dd0f

2 files changed

Lines changed: 9 additions & 4 deletions

File tree

src/requests/_internal_utils.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010

1111
from .compat import builtin_str
1212

13-
_VALID_HEADER_NAME_RE_BYTE = re.compile(rb"^[^:\s][^:\r\n]*$")
14-
_VALID_HEADER_NAME_RE_STR = re.compile(r"^[^:\s][^:\r\n]*$")
15-
_VALID_HEADER_VALUE_RE_BYTE = re.compile(rb"^\S[^\r\n]*$|^$")
16-
_VALID_HEADER_VALUE_RE_STR = re.compile(r"^\S[^\r\n]*$|^$")
13+
_VALID_HEADER_NAME_RE_BYTE = re.compile(rb"^[^:\s][^:\r\n]*\Z")
14+
_VALID_HEADER_NAME_RE_STR = re.compile(r"^[^:\s][^:\r\n]*\Z")
15+
_VALID_HEADER_VALUE_RE_BYTE = re.compile(rb"^\S[^\r\n]*\Z|^\Z")
16+
_VALID_HEADER_VALUE_RE_STR = re.compile(r"^\S[^\r\n]*\Z|^\Z")
1717

1818
_HEADER_VALIDATORS_STR = (_VALID_HEADER_NAME_RE_STR, _VALID_HEADER_VALUE_RE_STR)
1919
_HEADER_VALIDATORS_BYTE = (_VALID_HEADER_NAME_RE_BYTE, _VALID_HEADER_VALUE_RE_BYTE)

tests/test_requests.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,6 +1791,11 @@ def test_header_value_not_str(self, httpbin, invalid_header, key):
17911791
{"fo\r\no": "bar"},
17921792
{"fo\n\ro": "bar"},
17931793
{"fo\no": "bar"},
1794+
{"foo": "bar\n"},
1795+
{"foo\n": "bar"},
1796+
{"foo": "bar\r\n"},
1797+
{"foo": "\n"},
1798+
{"foo": "\r\n"},
17941799
),
17951800
)
17961801
def test_header_no_return_chars(self, httpbin, invalid_header):

0 commit comments

Comments
 (0)