summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2013-10-28 14:07:36 -0400
committerChris McDonough <chrism@plope.com>2013-10-28 14:07:36 -0400
commite5a0ca90d16ce78e05db71253720fa3082d8da2d (patch)
tree964a4dbe3723e27ee3e99e82d1fca7383f2084d8
parenta4492a9bbe0a58aaed68f12657d3ddf979d22921 (diff)
parentd7337b1b9d6009d8e6da07162b9f4c403c3d0370 (diff)
downloadpyramid-e5a0ca90d16ce78e05db71253720fa3082d8da2d.tar.gz
pyramid-e5a0ca90d16ce78e05db71253720fa3082d8da2d.tar.bz2
pyramid-e5a0ca90d16ce78e05db71253720fa3082d8da2d.zip
Merge branch 'master' of github.com:Pylons/pyramid
-rw-r--r--pyramid/session.py2
-rw-r--r--pyramid/tests/test_session.py18
2 files changed, 19 insertions, 1 deletions
diff --git a/pyramid/session.py b/pyramid/session.py
index 9e0733661..d3a4113b9 100644
--- a/pyramid/session.py
+++ b/pyramid/session.py
@@ -565,7 +565,7 @@ def SignedCookieSessionFactory(
if deserialize is None:
deserialize = pickle.loads
- digestmod = lambda: hashlib.new(hashalg)
+ digestmod = lambda string=b'': hashlib.new(hashalg, string)
digest_size = digestmod().digest_size
salted_secret = bytes_(salt or '') + bytes_(secret)
diff --git a/pyramid/tests/test_session.py b/pyramid/tests/test_session.py
index c13d3ce5c..a9f70d6a0 100644
--- a/pyramid/tests/test_session.py
+++ b/pyramid/tests/test_session.py
@@ -370,6 +370,24 @@ class TestSignedCookieSession(SharedCookieSessionTests, unittest.TestCase):
session = self._makeOne(request)
self.assertEqual(session, {})
+ def test_very_long_key(self):
+ verylongkey = b'a' * 1024
+ import webob
+ request = testing.DummyRequest()
+ session = self._makeOne(request, secret=verylongkey)
+ session['a'] = 1
+ callbacks = request.response_callbacks
+ self.assertEqual(len(callbacks), 1)
+ response = webob.Response()
+
+ try:
+ result = callbacks[0](request, response)
+ except TypeError as e: # pragma: no cover
+ self.fail('HMAC failed to initialize due to key length.')
+
+ self.assertEqual(result, None)
+ self.assertTrue('Set-Cookie' in dict(response.headerlist))
+
class TestUnencryptedCookieSession(SharedCookieSessionTests, unittest.TestCase):
def setUp(self):
super(TestUnencryptedCookieSession, self).setUp()