Project

General

Profile

Bug #7527

Another case of unicode error when writing logs

Added by Frédéric Péters over 4 years ago. Updated almost 2 years ago.

Status:
Fermé
Priority:
Normal
Category:
-
Target version:
Start date:
11 Jun 2015
Due date:
% Done:

100%

Patch proposed:
Yes
Planning:
No

Description

With 331b1f5 (current master):

File "/usr/lib/python2.7/dist-packages/authentic2/idp/saml/saml2_endpoints.py" in sso_after_process_request
  894.         load_session(request, login)
File "/usr/lib/python2.7/dist-packages/authentic2/saml/common.py" in load_session
  285.         logger.debug('load_session: session dump found %s' %q.session_dump.encode('utf8'))
File "/usr/lib/python2.7/logging/__init__.py" in debug
  1136.             self._log(DEBUG, msg, args, **kwargs)
File "/usr/lib/python2.7/logging/__init__.py" in _log
  1267.         self.handle(record)
File "/usr/lib/python2.7/logging/__init__.py" in handle
  1277.             self.callHandlers(record)
File "/usr/lib/python2.7/logging/__init__.py" in callHandlers
  1317.                     hdlr.handle(record)
File "/usr/lib/python2.7/logging/__init__.py" in handle
  748.                 self.emit(record)
File "/usr/lib/python2.7/logging/handlers.py" in emit
  828.         msg = self.format(record) + '\000'
File "/usr/lib/python2.7/logging/__init__.py" in format
  723.         return fmt.format(record)
File "/usr/lib/python2.7/logging/__init__.py" in format
  467.         s = self._fmt % record.__dict__

Exception Type: UnicodeDecodeError at /idp/saml2/sso
Exception Value: 'ascii' codec can't decode byte 0xc3 in position 3434: ordinal not in range(128)

0001-fix-unicode-strings-logging-7527.patch View (1.13 KB) Serghei Mihai, 11 Jun 2015 11:00 AM

0001-saml-review-logging-calls-in-common.py-for-unicode-c.patch View (7.15 KB) Benjamin Dauvergne, 11 Jun 2015 11:30 AM

Associated revisions

Revision 4ca7d125 (diff)
Added by Benjamin Dauvergne over 4 years ago

saml: review logging calls in common.py for unicode correctness (fixes #7527)

Rule: pass only unicode or ASCII byte string to logging calls.

History

#1 Updated by Serghei Mihai over 4 years ago

  • Patch proposed changed from No to Yes

A priori quelques cas zappés du ticket #7447.

#3 Updated by Benjamin Dauvergne over 4 years ago

Hmm ça ne corrige rien. Le problème vient du .encode('utf-8'). La règle c'est de n'interpoler que des chaînes unicode ou ASCII. Si on interpole de ĺ'UTF-8 alors que la chaîne de formatage est déjà passée en unicode à cause d'une interpolation précédente ça foire parce qu'il essaie de convertir l'UTF-8 en unicode en supposant comme encodage de l'ASCII. Ici ça doit être le nom de l'utilisateur qui a provoqué le passage en unicode.

De son coté logging converti en UTF-8 implicitement en sortie, vers syslog et je suppose vers tout ce qui est descripteur de fichier.

#4 Updated by Benjamin Dauvergne over 4 years ago

#5 Updated by Benjamin Dauvergne over 4 years ago

Autre règle, tout ce qui vient de lasso on log avec %r parce que c'est potentiellement de l'UTF-8, tout ce qui vient de Django (champ de GET ou de POST, champ de modèle) c'est de l'unicode.

#6 Updated by Benjamin Dauvergne over 4 years ago

  • Target version set to 2.2.0

#7 Updated by Benjamin Dauvergne over 4 years ago

  • Status changed from Nouveau to Résolu (à déployer)
  • % Done changed from 0 to 100

#8 Updated by Benjamin Dauvergne over 3 years ago

  • Status changed from Résolu (à déployer) to Solution déployée

#9 Updated by Benjamin Dauvergne almost 2 years ago

  • Status changed from Solution déployée to Fermé

Also available in: Atom PDF