diff options
author | Ian Bicking <ianb@colorstudy.com> | 2010-09-02 03:35:11 -0500 |
---|---|---|
committer | Ian Bicking <ianb@colorstudy.com> | 2010-09-02 03:35:11 -0500 |
commit | c41f834742d83d678144095531ad5341c948e4d8 (patch) | |
tree | c485101921be7812ffa4156c5f434629914dc5d1 | |
parent | b5a97e752ab1875c2b56e3591f0fce3abc9e31d0 (diff) | |
download | paste-c41f834742d83d678144095531ad5341c948e4d8.tar.gz |
Catch cookie errors when parsing cookies (http://trac.pythonpaste.org/pythonpaste/ticket/189)
-rw-r--r-- | paste/request.py | 12 | ||||
-rw-r--r-- | tests/test_request.py | 2 |
2 files changed, 11 insertions, 3 deletions
diff --git a/paste/request.py b/paste/request.py index 1a1d6c5..9af494d 100644 --- a/paste/request.py +++ b/paste/request.py @@ -18,7 +18,7 @@ environment to solve common requirements. """ import cgi -from Cookie import SimpleCookie +from Cookie import SimpleCookie, CookieError from StringIO import StringIO import urlparse import urllib @@ -45,7 +45,10 @@ def get_cookies(environ): if check_header == header: return cookies cookies = SimpleCookie() - cookies.load(header) + try: + cookies.load(header) + except CookieError: + pass environ['paste.cookies'] = (cookies, header) return cookies @@ -65,7 +68,10 @@ def get_cookie_dict(environ): if check_header == header: return cookies cookies = SimpleCookie() - cookies.load(header) + try: + cookies.load(header) + except CookieError: + pass result = {} for name in cookies: result[name] = cookies[name].value diff --git a/tests/test_request.py b/tests/test_request.py index c2cf940..3d882ed 100644 --- a/tests/test_request.py +++ b/tests/test_request.py @@ -58,3 +58,5 @@ def test_bad_cookie(): assert get_cookie_dict(env) == {} env['HTTP_COOKIE'] = '=foo' assert get_cookie_dict(env) == {} + env['HTTP_COOKIE'] = '?=' + assert get_cookie_dict(env) == {} |