Bug #7527
Another case of unicode error when writing logs
100%
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
Historique
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.
Mis à jour par Serghei Mihai il y a presque 9 ans
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.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
- Fichier 0001-saml-review-logging-calls-in-common.py-for-unicode-c.patch 0001-saml-review-logging-calls-in-common.py-for-unicode-c.patch ajouté
- Assigné à changé de Serghei Mihai à Benjamin Dauvergne
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.
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
Appliqué par commit authentic2|4ca7d125af3c89cd801acb229868340cc66bb757.
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
- Statut changé de Solution déployée à Fermé
saml: review logging calls in common.py for unicode correctness (fixes #7527)
Rule: pass only unicode or ASCII byte string to logging calls.