mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
[5.1.x] Fixed #36098 -- Fixed validate_ipv6_address()/validate_ipv46_address() crash for non-string values.
Regression inca2be7724e. Backport ofb3c5830769from main.
This commit is contained in:
committed by
Natalia
parent
dd2247d5fd
commit
c81669cb54
@@ -1,5 +1,7 @@
|
||||
import traceback
|
||||
from decimal import Decimal
|
||||
from io import StringIO
|
||||
from ipaddress import IPv6Address
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.test import SimpleTestCase
|
||||
@@ -23,6 +25,16 @@ class TestUtilsIPv6(SimpleTestCase):
|
||||
self.assertTrue(is_valid_ipv6_address("::ffff:254.42.16.14"))
|
||||
self.assertTrue(is_valid_ipv6_address("::ffff:0a0a:0a0a"))
|
||||
|
||||
def test_validates_correct_with_ipv6_instance(self):
|
||||
cases = [
|
||||
IPv6Address("::ffff:2.125.160.216"),
|
||||
IPv6Address("fe80::1"),
|
||||
IPv6Address("::"),
|
||||
]
|
||||
for case in cases:
|
||||
with self.subTest(case=case):
|
||||
self.assertIs(is_valid_ipv6_address(case), True)
|
||||
|
||||
def test_validates_incorrect_plain_address(self):
|
||||
self.assertFalse(is_valid_ipv6_address("foo"))
|
||||
self.assertFalse(is_valid_ipv6_address("127.0.0.1"))
|
||||
@@ -45,6 +57,12 @@ class TestUtilsIPv6(SimpleTestCase):
|
||||
self.assertFalse(is_valid_ipv6_address("::999.42.16.14"))
|
||||
self.assertFalse(is_valid_ipv6_address("::zzzz:0a0a"))
|
||||
|
||||
def test_validates_incorrect_with_non_string(self):
|
||||
cases = [None, [], {}, (), Decimal("2.46"), 192.168, 42]
|
||||
for case in cases:
|
||||
with self.subTest(case=case):
|
||||
self.assertIs(is_valid_ipv6_address(case), False)
|
||||
|
||||
def test_cleans_plain_address(self):
|
||||
self.assertEqual(clean_ipv6_address("DEAD::0:BEEF"), "dead::beef")
|
||||
self.assertEqual(
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import ipaddress
|
||||
import re
|
||||
import types
|
||||
from datetime import datetime, timedelta
|
||||
@@ -383,15 +384,25 @@ TEST_DATA = [
|
||||
(validate_ipv6_address, "fe80::1", None),
|
||||
(validate_ipv6_address, "::1", None),
|
||||
(validate_ipv6_address, "1:2:3:4:5:6:7:8", None),
|
||||
(validate_ipv6_address, ipaddress.IPv6Address("::ffff:2.125.160.216"), None),
|
||||
(validate_ipv6_address, ipaddress.IPv6Address("fe80::1"), None),
|
||||
(validate_ipv6_address, Decimal("33.1"), ValidationError),
|
||||
(validate_ipv6_address, 9.22, ValidationError),
|
||||
(validate_ipv6_address, "1:2", ValidationError),
|
||||
(validate_ipv6_address, "::zzz", ValidationError),
|
||||
(validate_ipv6_address, "12345::", ValidationError),
|
||||
(validate_ipv46_address, "1.1.1.1", None),
|
||||
(validate_ipv46_address, "255.0.0.0", None),
|
||||
(validate_ipv46_address, "0.0.0.0", None),
|
||||
(validate_ipv46_address, ipaddress.IPv4Address("1.1.1.1"), None),
|
||||
(validate_ipv46_address, ipaddress.IPv4Address("255.0.0.0"), None),
|
||||
(validate_ipv46_address, "fe80::1", None),
|
||||
(validate_ipv46_address, "::1", None),
|
||||
(validate_ipv46_address, "1:2:3:4:5:6:7:8", None),
|
||||
(validate_ipv46_address, ipaddress.IPv6Address("::ffff:2.125.160.216"), None),
|
||||
(validate_ipv46_address, ipaddress.IPv6Address("fe80::1"), None),
|
||||
(validate_ipv46_address, Decimal("33.1"), ValidationError),
|
||||
(validate_ipv46_address, 9.22, ValidationError),
|
||||
(validate_ipv46_address, "256.1.1.1", ValidationError),
|
||||
(validate_ipv46_address, "25.1.1.", ValidationError),
|
||||
(validate_ipv46_address, "25,1,1,1", ValidationError),
|
||||
|
||||
Reference in New Issue
Block a user