1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
From 4d4ac6b79c453918ebf40c690e8d57d982ee840b Mon Sep 17 00:00:00 2001
From: Colin Watson <cjwatson@debian.org>
Date: Fri, 9 Apr 2021 16:54:49 +0100
Subject: [PATCH] Don't test semicolon separators in urlencoded data
Python no longer accepts ";" as a separator for `urllib.parse.parse_qs`
by default (https://bugs.python.org/issue42967), causing the multipart
test suite to fail with recent Python versions (3.6.13, 3.7.10, 3.8.8,
3.9.2, 3.10.0a6).
While we could detect the availability of the `separator` argument and
pass it, since `application/x-www-form-urlencoded` data in `POST` and
`PUT` requests is probably not an issue for web cache poisoning, the
current HTML spec seems clear that only "&" should be considered, so
follow along with Python's API change.
---
test/test_multipart.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/test/test_multipart.py b/test/test_multipart.py
index 38c69d1..6fe864f 100644
--- a/test/test_multipart.py
+++ b/test/test_multipart.py
@@ -233,10 +233,9 @@ def test_empty(self):
def test_urlencoded(self):
for ctype in ('application/x-www-form-urlencoded', 'application/x-url-encoded'):
self.env['CONTENT_TYPE'] = ctype
- forms, files = self.parse('a=b&c=d;e=f')
+ forms, files = self.parse('a=b&c=d')
self.assertEqual(forms['a'], 'b')
self.assertEqual(forms['c'], 'd')
- self.assertEqual(forms['e'], 'f')
def test_urlencoded_latin1(self):
for ctype in ('application/x-www-form-urlencoded', 'application/x-url-encoded'):
|