From c7629ef6e26ed8d57ee20388276386acc8bf3e87 Mon Sep 17 00:00:00 2001 From: elhoim Date: Mon, 31 Aug 2026 13:52:41 +0000 Subject: [PATCH] Reject IPv4/IPv6 literals in looks_like_domain looks_like_domain()'s label regex allowed all-numeric labels, so an IPv4 literal like 8.8.8.8 parsed as a valid domain (four numeric labels each match [A-Za-z0-9-]{1,63}). With --all-guesses this incorrectly added domain/hostname guesses for IP values, routing IPs to domain-only modules. Fix: short-circuit looks_like_domain() to return False when the value is already recognized as an IPv4 or IPv6 address via is_ipv4/is_ipv6. --- bin/cli.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/cli.py b/bin/cli.py index 92267b1..e814ff3 100644 --- a/bin/cli.py +++ b/bin/cli.py @@ -149,6 +149,8 @@ def is_ipv6(value: str) -> bool: def looks_like_domain(value: str) -> bool: + if is_ipv4(value) or is_ipv6(value): + return False if len(value) > 253 or " " in value or "/" in value or "@" in value: return False if value.endswith("."):