Skip to content

Commit 22399c3

Browse files
committed
enforce 253 character limit in domain validator
1 parent 70de324 commit 22399c3

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

src/validators/domain.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ def domain(
8383
service_record = r"_" if rfc_2782 else ""
8484
trailing_dot = r"\.?$" if rfc_1034 else r"$"
8585

86+
encoded = value.encode("idna").decode("utf-8")
87+
if len(encoded.rstrip(".")) > 253:
88+
# ref: RFC 1035, presentation form is limited to 253 characters
89+
return False
90+
8691
return not re.search(r"\s|__+", value) and re.match(
8792
# First character of the domain
8893
rf"^(?:[a-z0-9{service_record}]"
@@ -94,7 +99,7 @@ def domain(
9499
+ r"+[a-z0-9][a-z0-9-_]{0,61}"
95100
# Last character of the gTLD
96101
+ rf"[a-z]{trailing_dot}",
97-
value.encode("idna").decode("utf-8"),
102+
encoded,
98103
re.IGNORECASE,
99104
)
100105
except UnicodeError as err:

0 commit comments

Comments
 (0)