Bug #62127
Certains emoticones dans les libellés de saut manuel provoquent des erreurs 500
0%
Description
Par exemple l'emoticone 🦁
sur https://demarches-mkuntz.test.entrouvert.org/backoffice/workflows/183/status/1/
L'action : https://demarches-mkuntz.test.entrouvert.org/backoffice/workflows/183/status/1/items/1/ (accessible mais plante si on enregistre)
ParseError at /backoffice/workflows/183/status/1/ not well-formed (invalid token): line 33, column 72 Request Method: GET Request URL: https://demarches-mkuntz.test.entrouvert.org/backoffice/workflows/183/status/1/ Django Version: 2.2.24 Exception Type: ParseError Exception Value: not well-formed (invalid token): line 33, column 72 Exception Location: /usr/lib/python3.7/xml/etree/ElementTree.py in XML, line 1315 Python Executable: /usr/bin/uwsgi-core Python Version: 3.7.3 Python Path: ['/usr/lib/python3/dist-packages/wcs', '.', '', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3/dist-packages/auquotidien/'] Server time: jeu, 24 Fév 2022 08:52:43 +0100
Puis erreur 500 sur le workflow : https://demarches-mkuntz.test.entrouvert.org/backoffice/workflows/183/
Fichiers
Révisions associées
Historique
Mis à jour par Marie Kuntz il y a environ 2 ans
À noter qu'avec une image, ça marche : https://demarches-mkuntz.test.entrouvert.org/backoffice/workflows/184/status/1/
Mis à jour par Frédéric Péters il y a environ 2 ans
graphviz produit un svg pété,
<g id="a_edge1"><a xlink:href="status/1/items/1/" xlink:title="go ÿ¦<81> par\nDestinataire">
mais https://demarches-mkuntz.test.entrouvert.org/backoffice/workflows/183/status/1/items/1/
j'y vois go & #129409;
(sans l'espace sinon redmine transforme l'entité).
ça n'est pas un emoji qui a été enregistré.
Et en local je mets ton emoji ça passe (copié/collé de la description), je met cette entité ça crashe.
Mis à jour par Frédéric Péters il y a environ 2 ans
À noter qu'avec une image
(?)
pour comprendre en fait tu écris l'entité XML directement ?
(et la description de ce ticket l'emoji apparait c'est juste redmine qui comme dans mon commentaire fait une substitution)
Mis à jour par Frédéric Péters il y a environ 2 ans
Ok et je vois que ça vient d'un mail et quelqu'un qui vraiment pose l'entité comme ça.
C'est une pratique commune de faire ça ? Parce que ma réaction ce serait de faire en sorte que les caractères ne soient pas interprétés.
Mis à jour par Marie Kuntz il y a environ 2 ans
En effet redmine a transformé l'entité en emoji dans la description, mais c'est bien le code que j'ai mis sur mon instance et qui provoque le crash ; si je mets l'image, ça passe.
Avec le code : https://demarches-mkuntz.test.entrouvert.org/backoffice/workflows/183/status/1/items/1/ (crash, erreur 500 sur tout le wf)
Avec insertion de l'image : https://demarches-mkuntz.test.entrouvert.org/backoffice/workflows/184/status/1/ nickel
Je n'ai pas manipulé le xml, juste récupéré dans un cas le code donné dans le mail sur publik-communaute@listes.entrouvert.com, dans l'autre, l'image sur le site https://emojipedia.org/lion/
Mis à jour par Marie Kuntz il y a environ 2 ans
Frédéric Péters a écrit :
C'est une pratique commune de faire ça ? Parce que ma réaction ce serait de faire en sorte que les caractères ne soient pas interprétés.
La tête de lion, non, mais des icones, oui ; après je ne sais pas si les gens mettent les entitiés ou des images directement. Moi je passe des images.
Mis à jour par Frédéric Péters il y a environ 2 ans
- Fichier Screenshot 2022-02-24 at 09-14-54 Backoffice de Auquo - 35800 - 9.png Screenshot 2022-02-24 at 09-14-54 Backoffice de Auquo - 35800 - 9.png ajouté
- Statut changé de Nouveau à En cours
- Assigné à mis à Frédéric Péters
Ok "image" c'est "emoji", c'est un caractère comme un autre.
Et le bug ici c'est quelqu'un qui tape une entité XML random et celle-ci qui n'est pas traitée correctement dans l'étape de création du graphe du workflow; côté rendu bouton c'est correctement géré et il n'y a pas de rendu, cf capture.
Donc ça ne va rien casser il y a juste à renforcer le traitement des libellés dans le graphe.
Mis à jour par Frédéric Péters il y a environ 2 ans
- Fichier 0001-workflows-escape-entities-markup-in-action-details-6.patch 0001-workflows-escape-entities-markup-in-action-details-6.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
En faisant ça je me suis rendu compte que dans le passage à une page django pour le rendu d'un statut de workflow (#47154) j'avais été trop généreux sur un |safe, ce qui faisait l'entité interprétée aussi dans la liste des actions d'un statut.
Le patch corrige ça aussi.
Mis à jour par Thomas Noël il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a environ 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 8d0158040e498c7529a16cb7e330c6888edaddfe Author: Frédéric Péters <fpeters@entrouvert.com> Date: Thu Feb 24 09:33:02 2022 +0100 workflows: escape entities & markup in action details (#62127)
Mis à jour par Transition automatique il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
workflows: escape entities & markup in action details (#62127)