summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2016-02-02 17:04:47 +0100
committerPetr Vobornik <pvoborni@redhat.com>2016-03-01 14:16:08 +0100
commit25c53ba3fe474a36639d1c5ed30510c921203fdc (patch)
tree709a710e970c3fb296b2fbeea04d8f7106059435
parentdd38602fa5ea3f0a51db5458e846f3756ab74e47 (diff)
downloadfreeipa-25c53ba3fe474a36639d1c5ed30510c921203fdc.tar.gz
freeipa-25c53ba3fe474a36639d1c5ed30510c921203fdc.tar.xz
freeipa-25c53ba3fe474a36639d1c5ed30510c921203fdc.zip
cookie parser: do not fail on cookie with empty value
https://fedorahosted.org/freeipa/ticket/5709 Reviewed-By: Martin Basti <mbasti@redhat.com>
-rw-r--r--ipapython/cookie.py3
-rw-r--r--ipatests/test_ipapython/test_cookie.py16
2 files changed, 18 insertions, 1 deletions
diff --git a/ipapython/cookie.py b/ipapython/cookie.py
index b44522157..89c3e3cd6 100644
--- a/ipapython/cookie.py
+++ b/ipapython/cookie.py
@@ -272,8 +272,9 @@ class Cookie(object):
if match:
key = match.group(1)
value = match.group(2)
+
# Double quoted value?
- if value[0] == '"':
+ if value and value[0] == '"':
if value[-1] == '"':
value = value[1:-1]
else:
diff --git a/ipatests/test_ipapython/test_cookie.py b/ipatests/test_ipapython/test_cookie.py
index 97cb79a07..6af447984 100644
--- a/ipatests/test_ipapython/test_cookie.py
+++ b/ipatests/test_ipapython/test_cookie.py
@@ -50,6 +50,22 @@ class TestParse(unittest.TestCase):
with self.assertRaises(ValueError):
cookies = Cookie.parse(s)
+ # 1 cookie with empty value
+ s = 'color='
+ cookies = Cookie.parse(s)
+ self.assertEqual(len(cookies), 1)
+ cookie = cookies[0]
+ self.assertEqual(cookie.key, 'color')
+ self.assertEqual(cookie.value, '')
+ self.assertEqual(cookie.domain, None)
+ self.assertEqual(cookie.path, None)
+ self.assertEqual(cookie.max_age, None)
+ self.assertEqual(cookie.expires, None)
+ self.assertEqual(cookie.secure, None)
+ self.assertEqual(cookie.httponly, None)
+ self.assertEqual(str(cookie), "color=")
+ self.assertEqual(cookie.http_cookie(), "color=;")
+
# 1 cookie with name/value
s = 'color=blue'
cookies = Cookie.parse(s)