summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2022-06-19 23:46:22 -0400
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-07-06 09:10:41 +0200
commit585ed2f6d7e02b64747770add0e2d3749980d73c (patch)
treea1ba7ee315f5160fc92dc4e311901ac20d4b0846 /tests
parent14057603c747eed7ee0bb8fe1fb34b330caa6c58 (diff)
[4.1.x] Refs CVE-2022-34265 -- Properly escaped Extract() and Trunc() parameters.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com> Backport of 877c800f255ccaa7abde1fb944de45d1616f5cc9 from main
Diffstat (limited to 'tests')
-rw-r--r--tests/backends/base/test_operations.py16
-rw-r--r--tests/custom_lookups/tests.py2
-rw-r--r--tests/db_functions/datetime/test_extract_trunc.py14
3 files changed, 18 insertions, 14 deletions
diff --git a/tests/backends/base/test_operations.py b/tests/backends/base/test_operations.py
index b19b7ee558..5260344da7 100644
--- a/tests/backends/base/test_operations.py
+++ b/tests/backends/base/test_operations.py
@@ -115,49 +115,49 @@ class SimpleDatabaseOperationTests(SimpleTestCase):
with self.assertRaisesMessage(
NotImplementedError, self.may_require_msg % "date_extract_sql"
):
- self.ops.date_extract_sql(None, None)
+ self.ops.date_extract_sql(None, None, None)
def test_time_extract_sql(self):
with self.assertRaisesMessage(
NotImplementedError, self.may_require_msg % "date_extract_sql"
):
- self.ops.time_extract_sql(None, None)
+ self.ops.time_extract_sql(None, None, None)
def test_date_trunc_sql(self):
with self.assertRaisesMessage(
NotImplementedError, self.may_require_msg % "date_trunc_sql"
):
- self.ops.date_trunc_sql(None, None)
+ self.ops.date_trunc_sql(None, None, None)
def test_time_trunc_sql(self):
with self.assertRaisesMessage(
NotImplementedError, self.may_require_msg % "time_trunc_sql"
):
- self.ops.time_trunc_sql(None, None)
+ self.ops.time_trunc_sql(None, None, None)
def test_datetime_trunc_sql(self):
with self.assertRaisesMessage(
NotImplementedError, self.may_require_msg % "datetime_trunc_sql"
):
- self.ops.datetime_trunc_sql(None, None, None)
+ self.ops.datetime_trunc_sql(None, None, None, None)
def test_datetime_cast_date_sql(self):
with self.assertRaisesMessage(
NotImplementedError, self.may_require_msg % "datetime_cast_date_sql"
):
- self.ops.datetime_cast_date_sql(None, None)
+ self.ops.datetime_cast_date_sql(None, None, None)
def test_datetime_cast_time_sql(self):
with self.assertRaisesMessage(
NotImplementedError, self.may_require_msg % "datetime_cast_time_sql"
):
- self.ops.datetime_cast_time_sql(None, None)
+ self.ops.datetime_cast_time_sql(None, None, None)
def test_datetime_extract_sql(self):
with self.assertRaisesMessage(
NotImplementedError, self.may_require_msg % "datetime_extract_sql"
):
- self.ops.datetime_extract_sql(None, None, None)
+ self.ops.datetime_extract_sql(None, None, None, None)
class DatabaseOperationTests(TestCase):
diff --git a/tests/custom_lookups/tests.py b/tests/custom_lookups/tests.py
index ece67a46a5..b730d7b5e1 100644
--- a/tests/custom_lookups/tests.py
+++ b/tests/custom_lookups/tests.py
@@ -75,7 +75,7 @@ class YearTransform(models.Transform):
def as_sql(self, compiler, connection):
lhs_sql, params = compiler.compile(self.lhs)
- return connection.ops.date_extract_sql("year", lhs_sql), params
+ return connection.ops.date_extract_sql("year", lhs_sql, params)
@property
def output_field(self):
diff --git a/tests/db_functions/datetime/test_extract_trunc.py b/tests/db_functions/datetime/test_extract_trunc.py
index bb70ed6094..00e3897e68 100644
--- a/tests/db_functions/datetime/test_extract_trunc.py
+++ b/tests/db_functions/datetime/test_extract_trunc.py
@@ -13,6 +13,7 @@ except ImportError:
pytz = None
from django.conf import settings
+from django.db import DataError, OperationalError
from django.db.models import (
DateField,
DateTimeField,
@@ -244,8 +245,7 @@ class DateFunctionTests(TestCase):
self.create_model(start_datetime, end_datetime)
self.create_model(end_datetime, start_datetime)
- msg = "Invalid lookup_name: "
- with self.assertRaisesMessage(ValueError, msg):
+ with self.assertRaises((DataError, OperationalError, ValueError)):
DTModel.objects.filter(
start_datetime__year=Extract(
"start_datetime", "day' FROM start_datetime)) OR 1=1;--"
@@ -940,14 +940,18 @@ class DateFunctionTests(TestCase):
end_datetime = timezone.make_aware(end_datetime)
self.create_model(start_datetime, end_datetime)
self.create_model(end_datetime, start_datetime)
- msg = "Invalid kind: "
- with self.assertRaisesMessage(ValueError, msg):
- DTModel.objects.filter(
+ # Database backends raise an exception or don't return any results.
+ try:
+ exists = DTModel.objects.filter(
start_datetime__date=Trunc(
"start_datetime",
"year', start_datetime)) OR 1=1;--",
)
).exists()
+ except (DataError, OperationalError):
+ pass
+ else:
+ self.assertIs(exists, False)
def test_trunc_func(self):
start_datetime = datetime(999, 6, 15, 14, 30, 50, 321)