From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 182C3917C9 for ; Thu, 15 Feb 2024 13:40:16 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E8ECE130AF for ; Thu, 15 Feb 2024 13:40:15 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Thu, 15 Feb 2024 13:40:14 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id B225248462 for ; Thu, 15 Feb 2024 13:40:13 +0100 (CET) From: Christoph Heiss To: pve-devel@lists.proxmox.com Date: Thu, 15 Feb 2024 13:39:34 +0100 Message-ID: <20240215124004.1197676-2-c.heiss@proxmox.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215124004.1197676-1-c.heiss@proxmox.com> References: <20240215124004.1197676-1-c.heiss@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.004 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH installer 1/5] common: fqdn: do not allow overlong FQDNs as per Debian spec X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Feb 2024 12:40:16 -0000 Debian limits labels to 63 characters each and the total length to 253 characters [0]. While at it, reference all the RFCs that apply when parsing FQDNs. [0] https://manpages.debian.org/stable/manpages/hostname.7.en.html Signed-off-by: Christoph Heiss --- proxmox-installer-common/src/utils.rs | 45 ++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/proxmox-installer-common/src/utils.rs b/proxmox-installer-common/src/utils.rs index c038524..067e025 100644 --- a/proxmox-installer-common/src/utils.rs +++ b/proxmox-installer-common/src/utils.rs @@ -117,6 +117,7 @@ pub enum FqdnParseError { MissingHostname, NumericHostname, InvalidPart(String), + TooLong(usize), } impl fmt::Display for FqdnParseError { @@ -129,17 +130,46 @@ impl fmt::Display for FqdnParseError { f, "FQDN must only consist of alphanumeric characters and dashes. Invalid part: '{part}'", ), + TooLong(len) => write!(f, "FQDN too long: {len} > {}", Fqdn::MAX_LENGTH), } } } +/// A type for safely representing fully-qualified domain names (FQDNs). +/// +/// It considers following RFCs: +/// https://www.ietf.org/rfc/rfc952.txt (sec. "ASSUMPTIONS", 1.) +/// https://www.ietf.org/rfc/rfc1035.txt (sec. 2.3. "Conventions") +/// https://www.ietf.org/rfc/rfc1123.txt (sec. 2.1. "Host Names and Numbers") +/// https://www.ietf.org/rfc/rfc3492.txt +/// https://www.ietf.org/rfc/rfc4343.txt +/// +/// .. and applies some restriction given by Debian, e.g. 253 instead of 255 +/// maximum total length and maximum 63 characters per label. +/// https://manpages.debian.org/stable/manpages/hostname.7.en.html +/// +/// Additionally: +/// - It enforces the restriction as per Bugzilla #1054, in that +/// purely numeric hostnames are not allowed - against RFC1123 sec. 2.1. +/// +/// Some terminology: +/// - "label" - a single part of a FQDN, e.g.