Validate that netaddr does not receive a string with whitespace
Fixes bug 1177277 Change-Id: Ibecaeed3e5918b06e74d8fa68cbe443bcbada7fc
This commit is contained in:
parent
e377f49d22
commit
0c294f0726
@ -96,9 +96,18 @@ def _validate_range(data, valid_values=None):
|
||||
return msg
|
||||
|
||||
|
||||
def _validate_no_whitespace(data):
|
||||
"""Validates that input has no whitespace."""
|
||||
if len(data.split()) > 1:
|
||||
msg = _("'%s' contains whitespace") % data
|
||||
LOG.debug(msg)
|
||||
raise q_exc.InvalidInput(error_message=msg)
|
||||
return data
|
||||
|
||||
|
||||
def _validate_mac_address(data, valid_values=None):
|
||||
try:
|
||||
netaddr.EUI(data)
|
||||
netaddr.EUI(_validate_no_whitespace(data))
|
||||
except Exception:
|
||||
msg = _("'%s' is not a valid MAC address") % data
|
||||
LOG.debug(msg)
|
||||
@ -107,7 +116,7 @@ def _validate_mac_address(data, valid_values=None):
|
||||
|
||||
def _validate_ip_address(data, valid_values=None):
|
||||
try:
|
||||
netaddr.IPAddress(data)
|
||||
netaddr.IPAddress(_validate_no_whitespace(data))
|
||||
except Exception:
|
||||
msg = _("'%s' is not a valid IP address") % data
|
||||
LOG.debug(msg)
|
||||
@ -227,7 +236,7 @@ def _validate_ip_address_or_none(data, valid_values=None):
|
||||
|
||||
def _validate_subnet(data, valid_values=None):
|
||||
try:
|
||||
netaddr.IPNetwork(data)
|
||||
netaddr.IPNetwork(_validate_no_whitespace(data))
|
||||
if len(data.split('/')) == 2:
|
||||
return
|
||||
except Exception:
|
||||
|
@ -92,6 +92,19 @@ class TestAttributes(base.BaseTestCase):
|
||||
msg = attributes._validate_string("123456789", None)
|
||||
self.assertIsNone(msg)
|
||||
|
||||
def test_validate_no_whitespace(self):
|
||||
data = 'no_white_space'
|
||||
result = attributes._validate_no_whitespace(data)
|
||||
self.assertEqual(result, data)
|
||||
|
||||
self.assertRaises(q_exc.InvalidInput,
|
||||
attributes._validate_no_whitespace,
|
||||
'i have whitespace')
|
||||
|
||||
self.assertRaises(q_exc.InvalidInput,
|
||||
attributes._validate_no_whitespace,
|
||||
'i\thave\twhitespace')
|
||||
|
||||
def test_validate_range(self):
|
||||
msg = attributes._validate_range(1, [1, 9])
|
||||
self.assertIsNone(msg)
|
||||
@ -135,6 +148,18 @@ class TestAttributes(base.BaseTestCase):
|
||||
msg = attributes._validate_ip_address(ip_addr)
|
||||
self.assertEqual(msg, "'%s' is not a valid IP address" % ip_addr)
|
||||
|
||||
ip_addr = '1.1.1.1 has whitespace'
|
||||
msg = attributes._validate_ip_address(ip_addr)
|
||||
self.assertEqual(msg, "'%s' is not a valid IP address" % ip_addr)
|
||||
|
||||
ip_addr = '111.1.1.1\twhitespace'
|
||||
msg = attributes._validate_ip_address(ip_addr)
|
||||
self.assertEqual(msg, "'%s' is not a valid IP address" % ip_addr)
|
||||
|
||||
ip_addr = '111.1.1.1\nwhitespace'
|
||||
msg = attributes._validate_ip_address(ip_addr)
|
||||
self.assertEqual(msg, "'%s' is not a valid IP address" % ip_addr)
|
||||
|
||||
def test_validate_ip_pools(self):
|
||||
pools = [[{'end': '10.0.0.254'}],
|
||||
[{'start': '10.0.0.254'}],
|
||||
|
Loading…
x
Reference in New Issue
Block a user