Check DeniedInstallOrigin against hostname and not netloc (#18665)

This commit is contained in:
Mathieu Pillard 2022-01-24 16:55:55 +01:00 коммит произвёл GitHub
Родитель 65276ad735
Коммит b5e084fddc
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 7 добавлений и 1 удалений

Просмотреть файл

@ -1191,7 +1191,7 @@ class DeniedInstallOrigin(ModelBase):
denied = set()
denied_install_origins = cls.objects.all()
for origin in install_origins:
hostname = InstallOrigin.punycode(urlparse(origin).netloc)
hostname = InstallOrigin.punycode(urlparse(origin).hostname or '')
for denied_origin in denied_install_origins:
if fnmatch(hostname, denied_origin.hostname_pattern) or (
denied_origin.include_subdomains

Просмотреть файл

@ -1987,6 +1987,12 @@ class TestDeniedInstallOrigin(TestCase):
['https://foo.com', 'https://examplé.com']
) == {'https://examplé.com'}
def test_find_denied_origins_with_port(self):
DeniedInstallOrigin.objects.create(hostname_pattern='example.com')
assert DeniedInstallOrigin.find_denied_origins(
['https://foo.com', 'https://example.com:8888']
) == {'https://example.com:8888'}
def test_find_denied_origins_multiple_matches(self):
DeniedInstallOrigin.objects.create(hostname_pattern='example.com')
assert DeniedInstallOrigin.find_denied_origins(