Project

General

Profile

Development #46625

/login/, username/nonce, ValueError: A string literal cannot contain NUL (0x00) characters.

Added by sentry io 4 months ago. Updated 3 months ago.

Status:
Solution déployée
Priority:
Normal
Category:
-
Target version:
-
Start date:
14 Sep 2020
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

Description

https://sentry.entrouvert.org/entrouvert/publik/issues/4629/

ValueError: A string literal cannot contain NUL (0x00) characters.
(23 additional frame(s) were not displayed)
...
  File "django/db/models/query.py", line 53, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch)
  File "django/db/models/sql/compiler.py", line 899, in execute_sql
    raise original_exception
  File "django/db/models/sql/compiler.py", line 889, in execute_sql
    cursor.execute(sql, params)
  File "django/db/backends/utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)

Files


Related issues

Related to Authentic 2 - Bug #48114: crash migration sur version à jourSolution déployée29 Oct 2020

Actions

Associated revisions

Revision d3c962e0 (diff)
Added by Benjamin Dauvergne 3 months ago

misc: check null characters in query-string and form data (#46625)

Revision 7a3be23b (diff)
Added by Benjamin Dauvergne 3 months ago

validators: work around lack of NULL char check in forms.CharField (#46625)

History

#1

Updated by Frédéric Péters 4 months ago

  • Project changed from Suivi des traces to Authentic 2
  • Subject changed from ValueError: A string literal cannot contain NUL (0x00) characters. to /login/, username/nonce, ValueError: A string literal cannot contain NUL (0x00) characters.

Comme #45672 mais pour d'autres champs, nonce & username dans les traces repérées, exemples :

  • nonce = '_E327108CF392D4C3CEE091EE75ADBFD07lwfr\x00\rhjv7a'
  • username = '\x00gf0zg" a=ba04zg'
#2

Updated by Benjamin Dauvergne 4 months ago

  • Assignee set to Benjamin Dauvergne
#3

Updated by Benjamin Dauvergne 4 months ago

1. Solution globale via un middleware pour les query-string et les form data classiques
2. monkeypatch de CharField pour les formulaires multipart/formdata et de rest_framework pour les contenus JSON, restera les éventuels contenus JSON parsés "manuellement"

#5

Updated by Paul Marillonnet 3 months ago

  • Pourquoi la classe de validateur doit-elle être déconstructible ?

Dans une moindre mesure :

  • La modif sur src/authentic2/views.py dans 0002 me paraît être du code churn pour rien. (Peut-être tu avais commencé des trucs dans ce fichier puis laissé tombé en oubliant de restaurer à l'état initial ?)
  • Du détail franchement, mais dans les commentaires de src/authentic2/__init__.py je laisserais juste le lien vers le ticket django qui est l'info manquante la plus importante. Le ticket redmine EO on l'a déjà dans le message de commit. Et le commit GH ne nous dit pas grand chose, je ne fais pas le lien entre leur ajout d'un formulaire dans l'admin et ton tour de passe-passe sur CharField.__init__.
#6

Updated by Benjamin Dauvergne 3 months ago

Paul Marillonnet a écrit :

  • Pourquoi la classe de validateur doit-elle être déconstructible ?

Aucune idée j'ai copié/collé le code de Django, si ça te passionne il est là https://github.com/django/django/blob/master/django/core/validators.py#L540

Dans une moindre mesure :

  • La modif sur src/authentic2/views.py dans 0002 me paraît être du code churn pour rien. (Peut-être tu avais commencé des trucs dans ce fichier puis laissé tombé en oubliant de restaurer à l'état initial ?)

Yep je vire.

  • Du détail franchement, mais dans les commentaires de src/authentic2/__init__.py je laisserais juste le lien vers le ticket django qui est l'info manquante la plus importante. Le ticket redmine EO on l'a déjà dans le message de commit. Et le commit GH ne nous dit pas grand chose, je ne fais pas le lien entre leur ajout d'un formulaire dans l'admin et ton tour de passe-passe sur CharField.__init__.

Ok.

#8

Updated by Paul Marillonnet 3 months ago

  • Status changed from Solution proposée to Solution validée

Benjamin Dauvergne a écrit :

Aucune idée j'ai copié/collé le code de Django, si ça te passionne il est là https://github.com/django/django/blob/master/django/core/validators.py#L540

C'est https://code.djangoproject.com/ticket/21275.

Ack.

#9

Updated by Benjamin Dauvergne 3 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit 7a3be23b0d35135e2d6c45e51fdf97d4ffc23751
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Tue Oct 6 11:58:49 2020 +0200

    validators: work around lack of NULL char check in forms.CharField (#46625)

commit d3c962e09588ba7f2268814ed747bff3232b71ad
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Tue Oct 6 12:40:08 2020 +0200

    misc: check null characters in query-string and form data (#46625)
#10

Updated by Paul Marillonnet 3 months ago

  • Related to Bug #48114: crash migration sur version à jour added
#11

Updated by Frédéric Péters 3 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF