Commit 186c5f07 authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #22775: Fixed unpickling of Cookie.SimpleCookie with protocol 2.

Patch by Tim Graham.
parent 009352ae
......@@ -591,8 +591,12 @@ class BaseCookie(dict):
def __setitem__(self, key, value):
"""Dictionary style assignment."""
rval, cval = self.value_encode(value)
self.__set(key, rval, cval)
if isinstance(value, Morsel):
# allow assignment of constructed Morsels (e.g. for pickling)
dict.__setitem__(self, key, value)
else:
rval, cval = self.value_encode(value)
self.__set(key, rval, cval)
# end __setitem__
def output(self, attrs=None, header="Set-Cookie:", sep="\015\012"):
......
......@@ -3,6 +3,7 @@
from test.test_support import run_unittest, run_doctest, check_warnings
import unittest
import Cookie
import pickle
class CookieTests(unittest.TestCase):
......@@ -141,6 +142,18 @@ class CookieTests(unittest.TestCase):
self.assertEqual(dict(C), {})
self.assertEqual(C.output(), '')
def test_pickle(self):
rawdata = 'Customer="WILE_E_COYOTE"; Path=/acme; Version=1'
expected_output = 'Set-Cookie: %s' % rawdata
C = Cookie.SimpleCookie()
C.load(rawdata)
self.assertEqual(C.output(), expected_output)
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
C1 = pickle.loads(pickle.dumps(C, protocol=proto))
self.assertEqual(C1.output(), expected_output)
def test_main():
run_unittest(CookieTests)
......
......@@ -484,6 +484,7 @@ Chris Gonnerman
Shelley Gooch
David Goodger
Hans de Graaff
Tim Graham
Nathaniel Gray
Eddy De Greef
Grant Griffin
......
......@@ -37,6 +37,9 @@ Core and Builtins
Library
-------
- Issue #22775: Fixed unpickling of Cookie.SimpleCookie with protocol 2.
Patch by Tim Graham.
- Issue #22776: Brought excluded code into the scope of a try block in
SysLogHandler.emit().
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment