Commit e2e0a04e authored by Vincent Ardisson's avatar Vincent Ardisson Committed by Vincent A

[caissedepargne] do not compare bytes and unicode on cookies

In python2, cookies from a cookiejar are bytes, but we compare them to a
unicode string (unicode_literals). This is not a problem until there are
non-ascii bytes.

Unfortunately, sometimes the caissedepargne/palatine site returns
cookies in utf-8. So we end with non-ascii bytes.

In python3, it doesn't crash, but requests or the lower layers interpret
cookies as latin-1 instead of utf-8, which yields a few garbled
characters, but fortunately we do not care about that part of the
cookie.

Closes: 57830@sibi
parent 64e08ed2
......@@ -1156,8 +1156,10 @@ class CaisseEpargne(LoginBrowser, StatesMixin):
profile = Profile()
if len([k for k in self.session.cookies.keys() if k == 'CTX']) > 1:
del self.session.cookies['CTX']
if 'username=' in self.session.cookies.get('CTX', ''):
profile.name = to_unicode(re.search('username=([^&]+)', self.session.cookies['CTX']).group(1))
ctx = to_unicode(self.session.cookies.get('CTX', ''))
if 'username=' in ctx:
profile.name = re.search('username=([^&]+)', ctx).group(1)
elif 'nomusager=' in self.session.cookies.get('headerdei'):
profile.name = to_unicode(re.search('nomusager=(?:[^&]+/ )?([^&]+)', self.session.cookies['headerdei']).group(1))
return profile
......
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