Projet

Général

Profil

Bug #7527

Another case of unicode error when writing logs

Ajouté par Frédéric Péters il y a presque 9 ans. Mis à jour il y a plus de 6 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
Début:
11 juin 2015
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

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)

Fichiers

Révisions associées

Révision 4ca7d125 (diff)
Ajouté par Benjamin Dauvergne il y a presque 9 ans

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

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

Historique

#1

Mis à jour par Serghei Mihai il y a presque 9 ans

  • Patch proposed changé de Non à Oui

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

#3

Mis à jour par Benjamin Dauvergne il y a presque 9 ans

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.

#5

Mis à jour par Benjamin Dauvergne il y a presque 9 ans

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

Mis à jour par Benjamin Dauvergne il y a presque 9 ans

  • Version cible mis à 2.2.0
#7

Mis à jour par Benjamin Dauvergne il y a presque 9 ans

  • Statut changé de Nouveau à Résolu (à déployer)
  • % réalisé changé de 0 à 100
#8

Mis à jour par Benjamin Dauvergne il y a environ 8 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#9

Mis à jour par Benjamin Dauvergne il y a plus de 6 ans

  • Statut changé de Solution déployée à Fermé

Formats disponibles : Atom PDF