Projet

Général

Profil

Bug #20181

Erreur 500 sur la redirection (pour demander à se logguer) d'une url contenant des accents

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
20 novembre 2017
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Lié à Authentic 2 - Bug #28935: crash sur caractère non ascii dans /idp/oidc/authorize/Fermé12 décembre 2018

Actions

Révisions associées

Révision 572f59de (diff)
Ajouté par Benjamin Dauvergne il y a plus de 6 ans

tests: add non-regression test (#20181)

Révision 42a6f649 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 6 ans

utils: always encode next_url to ASCII before using it (fixes #20181)

Historique

#1

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

  • Description mis à jour (diff)
#2

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

Ç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.

#3

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

  • Assigné à mis à Benjamin Dauvergne
#4

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.

#5

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

Ok if not domain1 or not domain2 déplacé dans #20544.

#6

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
#7

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é
#8

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF