Add a validation to catch name=@ and suggest name='' instead

This commit is contained in:
Ross McFarland
2021-12-31 08:48:47 -08:00
parent 9da19749e2
commit d280e0850c
2 changed files with 13 additions and 0 deletions
+2
View File
@@ -124,6 +124,8 @@ class Record(EqualityTupleMixin):
@classmethod
def validate(cls, name, fqdn, data):
reasons = []
if name == '@':
reasons.append('invalid name "@", use "" instead')
n = len(fqdn)
if n > 253:
reasons.append(f'invalid fqdn, "{fqdn}" is too long at {n} '
+11
View File
@@ -1643,6 +1643,17 @@ class TestRecordValidation(TestCase):
zone = Zone('unit.tests.', [])
def test_base(self):
# name = '@'
with self.assertRaises(ValidationError) as ctx:
name = '@'
Record.new(self.zone, name, {
'ttl': 300,
'type': 'A',
'value': '1.2.3.4',
})
reason = ctx.exception.reasons[0]
self.assertTrue(reason.startswith('invalid name "@", use "" instead'))
# fqdn length, DNS defins max as 253
with self.assertRaises(ValidationError) as ctx:
# The . will put this over the edge