Bug #20181
Erreur 500 sur la redirection (pour demander à se logguer) d'une url contenant des accents
100%
Description
J'ai cliqué sur le lien en #20169 (alors que je n'étais pas loggué) et j'ai obtenu cette trace :
Internal Server Error: /login/ Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python2.7/dist-packages/django/views/decorators/csrf.py", line 58, in wrapped_view return view_func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/utils/decorators.py", line 110, in _wrapped_view response = view_func(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func response = view_func(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/authentic2/views.py", line 270, in login request, service_slug=request.GET.get(constants.SERVICE_FIELD_NAME)) File "/usr/lib/python2.7/dist-packages/authentic2/utils.py", line 654, in get_registration_url include=(constants.NONCE_FIELD_NAME,), resolve=False) File "/usr/lib/python2.7/dist-packages/authentic2/utils.py", line 279, in make_url url_params = QueryDict(query_string=query_string, mutable=True) File "/usr/lib/python2.7/dist-packages/django/http/request.py", line 358, in __init__ value = value.decode(encoding) File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
Fichiers
Demandes liées
Révisions associées
utils: always encode next_url to ASCII before using it (fixes #20181)
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
- Fichier 0001-utils-always-encode-next_url-to-ASCII-before-using-i.patch 0001-utils-always-encode-next_url-to-ASCII-before-using-i.patch ajouté
- Patch proposed changé de Non à Oui
Ça nécessiterait une exploration plus globale de tous les endroits où on extrait une URL des paramètres mais l'idée c'est qu'on doit en premier lieu pour accepter l'URL vérifier qu'elle est bien convertible en ASCII et la convertir car l'outillage pour les URLs dans Django (ici QueryDict) n'est pas adapté à l'unicode et request.GET/POST ne renvoient que ça.
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Statut changé de Nouveau à En cours
Le "if not domain1 or not domain2" me semble concerné par autre chose mais ack.
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
Ok if not domain1 or not domain2
déplacé dans #20544.
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 0 à 100
Appliqué par commit authentic2|42a6f649586d0c88a02f15fdad2570c2ba18076c.
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Lié à Bug #28935: crash sur caractère non ascii dans /idp/oidc/authorize/ ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
tests: add non-regression test (#20181)