summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Perkins <john.perkins@rackspace.com>2014-10-06 16:24:57 -0500
committerTristan Cacqueray <tristan.cacqueray@enovance.com>2014-11-19 15:23:12 +0000
commitad6fefcb4d4068b46b69284e277df6ab2ee30105 (patch)
tree76c576972bb615a5215f3c400728c5ae5ece8127
parent6c476224f62770679f779dc6c13be3879b3a5ed8 (diff)
downloadneutron-ad6fefcb4d4068b46b69284e277df6ab2ee30105.tar.gz
Fix hostname regex pattern
Current hostname_pattern regex complexity grows exponentially when given a string of just digits, which can be exploited to cause neutron-server to freeze. Change-Id: I886c6d883a9cb0acd9908495eec50bf0411d8ba8 Closes-bug: #1378450
-rw-r--r--neutron/api/v2/attributes.py4
-rw-r--r--neutron/tests/unit/test_attributes.py1
2 files changed, 3 insertions, 2 deletions
diff --git a/neutron/api/v2/attributes.py b/neutron/api/v2/attributes.py
index 83471f946e..21486dbd39 100644
--- a/neutron/api/v2/attributes.py
+++ b/neutron/api/v2/attributes.py
@@ -540,8 +540,8 @@ def convert_to_list(data):
return [data]
-HOSTNAME_PATTERN = ("(?=^.{1,254}$)(^(?:(?!\d+\.|-)[a-zA-Z0-9_\-]"
- "{1,63}(?<!-)\.?)+(?:[a-zA-Z]{2,})$)")
+HOSTNAME_PATTERN = ("(?=^.{1,254}$)(^(?:(?!\d+.|-)[a-zA-Z0-9_\-]{1,62}"
+ "[a-zA-Z0-9]\.?)+(?:[a-zA-Z]{2,})$)")
HEX_ELEM = '[0-9A-Fa-f]'
UUID_PATTERN = '-'.join([HEX_ELEM + '{8}', HEX_ELEM + '{4}',
diff --git a/neutron/tests/unit/test_attributes.py b/neutron/tests/unit/test_attributes.py
index 2fb268d07a..f8cb462b3e 100644
--- a/neutron/tests/unit/test_attributes.py
+++ b/neutron/tests/unit/test_attributes.py
@@ -281,6 +281,7 @@ class TestAttributes(base.BaseTestCase):
['www.hostname.com', 'www.hostname.com'],
['77.hostname.com'],
['1000.0.0.1'],
+ ['111111111111111111111111111111111111111111111111111111111111'], # noqa
None]
for ns in ns_pools: