]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-991266: Fix quoting of Comment attribute of SimpleCookie (GH-6555)
authorBerker Peksag <berker.peksag@gmail.com>
Sun, 22 Apr 2018 23:48:11 +0000 (02:48 +0300)
committerGitHub <noreply@github.com>
Sun, 22 Apr 2018 23:48:11 +0000 (02:48 +0300)
Lib/http/cookies.py
Lib/test/test_http_cookies.py
Misc/NEWS.d/next/Library/2018-04-21-00-24-08.bpo-991266.h93TP_.rst [new file with mode: 0644]

index b2e995c0c47f6db867ca362736e08bf6fab847bc..6694f5478bdadfb84ac4c5b1398ecf79123fa7b9 100644 (file)
@@ -408,6 +408,8 @@ class Morsel(dict):
                 append("%s=%s" % (self._reserved[key], _getdate(value)))
             elif key == "max-age" and isinstance(value, int):
                 append("%s=%d" % (self._reserved[key], value))
+            elif key == "comment" and isinstance(value, str):
+                append("%s=%s" % (self._reserved[key], _quote(value)))
             elif key in self._flags:
                 if value:
                     append(str(self._reserved[key]))
index 447f883390fd734c7620f300ebc84da4aea665b1..6072c7e15e92be51c389a31fbea8bcab0d75ac3f 100644 (file)
@@ -220,6 +220,16 @@ class CookieTests(unittest.TestCase):
         with self.assertRaises(cookies.CookieError):
             C.load(rawdata)
 
+    def test_comment_quoting(self):
+        c = cookies.SimpleCookie()
+        c['foo'] = '\N{COPYRIGHT SIGN}'
+        self.assertEqual(str(c['foo']), 'Set-Cookie: foo="\\251"')
+        c['foo']['comment'] = 'comment \N{COPYRIGHT SIGN}'
+        self.assertEqual(
+            str(c['foo']),
+            'Set-Cookie: foo="\\251"; Comment="comment \\251"'
+        )
+
 
 class MorselTests(unittest.TestCase):
     """Tests for the Morsel object."""
diff --git a/Misc/NEWS.d/next/Library/2018-04-21-00-24-08.bpo-991266.h93TP_.rst b/Misc/NEWS.d/next/Library/2018-04-21-00-24-08.bpo-991266.h93TP_.rst
new file mode 100644 (file)
index 0000000..3af6c27
--- /dev/null
@@ -0,0 +1 @@
+Fix quoting of the ``Comment`` attribute of :class:`http.cookies.SimpleCookie`.