Notes de publication de Django 3.2.1¶
4 mai 2021
Django 3.2.1 corrige un problème de sécurité et plusieurs bogues de la version 3.2.
CVE-2021-31542 : traversée potentielle de répertoires via des fichiers téléversés¶
MultiPartParser
, UploadedFile
et FieldFile
permettaient des traversées de répertoires via des fichiers téléversés avec des noms de fichiers trafiqués à dessein.
In order to mitigate this risk, stricter basename and path sanitation is now applied.
Correction de bogues¶
- Détection de GDAL 3.2 corrigée sous Windows (#32544).
- Correction d’un bogue de Django 3.2 où les sous-classes de
BigAutoField
etSmallAutoField
n’étaient pas admises dans le réglageDEFAULT_AUTO_FIELD
(#32620). - Correction d’une régression dans Django 3.2 produisant un plantage de
QuerySet.values()/values_list()
aprèsQuerySet.union()
,intersection()
etdifference()
lorsque le tri se faisait sur un champ non annoté (#32627). - Suite à une régressions dans Django 3.2, l’affichage du message d’exception a été restauré sur la page de débogage technique 404 (#32637).
- Correction d’un bogue dans Django 3.2 où un contrôle système plante lors d’un accès inverse à des liaisons un-à-un dans
CheckConstraint.check
ouUniqueConstraint.condition
(#32635). - Correction d’une régression dans Django 3.2 qui provoquait un plantage de
ModelAdmin.search_fields
lors de recherche avec des phrases dont les guillemets ne sont pas fermés (#32649). - Correction d’un bogue dans Django 3.2 où des erreurs de recherche de variable étaient journalisées en produisant le gabarit de plan de site si des alternatives n’étaient pas définies (#32648).
- Correction d’une régression dans Django 3.2 qui provoquait un plantage lors de la combinaison d’objets
Q()
contenant des expressions booléennes (#32548). - Correction d’une régression dans Django 3.2 qui provoquait un plantage de
QuerySet.update()
sur un jeu de requête trié par des champs hérités ou joints avec MySQL et MariaDB (#32645). - Correction d’une régression dans Django 3.2 qui provoquait un plantage lors du décodage d’une valeur de cookie utilisée par
django.contrib.messages.storage.cookie.CookieStorage
, dans le format pré Django 3.2 (#32643). - Correction d’une régression dans Django 3.2 qui empêchait l’appui sur majuscule de sélectionner plusieurs lignes dans la liste pour modification du site d’administration (#32647).
- Correction d’un bogue dans Django 3.2 où un contrôle système plante sur le réglage
STATICFILES_DIRS
contenant une liste de tuples binaires(préfixe, chemin)
(#32665). - Correction d’un vieux bogue impliquant des combinaisons par bits de jeux de requête dans des sou-requêtes, ayant commencé à se manifester dans Django 3.2 en raison d’une autre correction utilisant
Exists
pour exclure des liaisons multivaluées (#32650). - Correction d’un bogue dans Django 3.2 où des erreurs de recherche de variable étaient journalisées en produisant certains gabarits du site d’administration (#32681).
- Fixed a bug in Django 3.2 where an admin changelist would crash when deleting
objects filtered against multi-valued relationships (#32682). The
admin changelist now uses
Exists()
instead ofQuerySet.distinct()
because callingdelete()
afterdistinct()
is not allowed in Django 3.2 to address a data loss possibility. - Correction d’une régression dans Django 3.2 où l’environnement du processus appelant n’était pas transmis à la commande dbshell` avec PostgreSQL (#32687).
- Correction d’une régression de performance dans Django 3.2 lors de la construction de filtres complexes avec des sous-requêtes (#32632). Comme effet de bord, l’API privée pouvant vérifier l’égalité de
django.db.sql.query.Query
a été supprimée.