all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH installer 0/2] nic pinning: require first character to be lower-case
@ 2025-11-18 15:15 Stoiko Ivanov
  2025-11-18 15:15 ` [pve-devel] [PATCH installer 1/2] common: pinning: require first character to be lower-case ascii Stoiko Ivanov
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Stoiko Ivanov @ 2025-11-18 15:15 UTC (permalink / raw)
  To: pve-devel

The regex for validating NICs in pve-common starts with /^[a-z].../
getting 'name must start with a letter' to a pinned nic-name of 'ABC' is
confusing. Additionally there was a discrepancy in validating the nic-name
in the rust-based installers (is_ascii_alphabetic also matches upper-case
letters, whereas the perl-regex required [a-z])

Align the validation with the version in pve-common.

Tested by running the installer with the patch applied in TUI mode
(it creates an error for 'ABC', while accepting it without the patch) and
in GUI mode (to verify the error-message mentions lower-case letter).

Stoiko Ivanov (2):
  common: pinning: require first character to be lower-case ascii
  sys: net: fix error-message for interface names first character

 Proxmox/Sys/Net.pm                      | 2 +-
 proxmox-installer-common/src/options.rs | 8 ++++----
 test/validate-link-pin-map.pl           | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

-- 
2.47.3



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [pve-devel] [PATCH installer 1/2] common: pinning: require first character to be lower-case ascii
  2025-11-18 15:15 [pve-devel] [PATCH installer 0/2] nic pinning: require first character to be lower-case Stoiko Ivanov
@ 2025-11-18 15:15 ` Stoiko Ivanov
  2025-11-18 15:15 ` [pve-devel] [PATCH installer 2/2] sys: net: fix error-message for interface names first character Stoiko Ivanov
  2025-11-18 16:31 ` [pve-devel] applied: [PATCH installer 0/2] nic pinning: require first character to be lower-case Thomas Lamprecht
  2 siblings, 0 replies; 4+ messages in thread
From: Stoiko Ivanov @ 2025-11-18 15:15 UTC (permalink / raw)
  To: pve-devel

the validation regex in pve-common is:
`/^[a-z][a-z0-9_]{1,20}([:\.]\d+)?$/` [0]
and thus requires the first byte of an interface to be lower-case
ascii.
Adapt the error-message and the validation accordingly

[0] https://git.proxmox.com/?p=pve-common.git;a=blob;f=src/PVE/JSONSchema.pm;h=827889950b9165dd22e7b12e934d08fd8b21e855;hb=HEAD#l680

Fixes: aa0ddcd ("common: pinning: make interface name checks stricter")
Reported-by: Robert Obkircher <r.obkircher@proxmox.com>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
 proxmox-installer-common/src/options.rs | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/proxmox-installer-common/src/options.rs b/proxmox-installer-common/src/options.rs
index 8f3b3aa..5933df8 100644
--- a/proxmox-installer-common/src/options.rs
+++ b/proxmox-installer-common/src/options.rs
@@ -524,9 +524,9 @@ impl NetworkInterfacePinningOptions {
             }
 
             // Mimicking the `pve-iface` schema verification
-            if !name.starts_with(|c: char| c.is_ascii_alphabetic()) {
+            if !name.starts_with(|c: char| c.is_ascii_lowercase()) {
                 bail!(
-                    "interface name '{name}' for '{mac}' is invalid: name must start with a letter"
+                    "interface name '{name}' for '{mac}' is invalid: name must start with a lower-case letter"
                 );
             }
 
@@ -1034,7 +1034,7 @@ mod tests {
         assert!(res.is_err());
         assert_eq!(
             res.unwrap_err().to_string(),
-            "interface name '0nic' for 'ab:cd:ef:12:34:56' is invalid: name must start with a letter"
+            "interface name '0nic' for 'ab:cd:ef:12:34:56' is invalid: name must start with a lower-case letter"
         );
 
         options
@@ -1045,7 +1045,7 @@ mod tests {
         assert!(res.is_err());
         assert_eq!(
             res.unwrap_err().to_string(),
-            "interface name '_a' for 'ab:cd:ef:12:34:56' is invalid: name must start with a letter"
+            "interface name '_a' for 'ab:cd:ef:12:34:56' is invalid: name must start with a lower-case letter"
         );
     }
 
-- 
2.47.3



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [pve-devel] [PATCH installer 2/2] sys: net: fix error-message for interface names first character
  2025-11-18 15:15 [pve-devel] [PATCH installer 0/2] nic pinning: require first character to be lower-case Stoiko Ivanov
  2025-11-18 15:15 ` [pve-devel] [PATCH installer 1/2] common: pinning: require first character to be lower-case ascii Stoiko Ivanov
@ 2025-11-18 15:15 ` Stoiko Ivanov
  2025-11-18 16:31 ` [pve-devel] applied: [PATCH installer 0/2] nic pinning: require first character to be lower-case Thomas Lamprecht
  2 siblings, 0 replies; 4+ messages in thread
From: Stoiko Ivanov @ 2025-11-18 15:15 UTC (permalink / raw)
  To: pve-devel

This follows the similar commit for the TUI installer, but as the
validation here was in accordance to the one in pve-common, only
adapts the error-message (and affected test-cases).

Fixes: 2033a35 ("sys: net: pinning: make interface name checks stricter")
Reported-by: Robert Obkircher <r.obkircher@proxmox.com>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
 Proxmox/Sys/Net.pm            | 2 +-
 test/validate-link-pin-map.pl | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Proxmox/Sys/Net.pm b/Proxmox/Sys/Net.pm
index f6a0940..37feee1 100644
--- a/Proxmox/Sys/Net.pm
+++ b/Proxmox/Sys/Net.pm
@@ -341,7 +341,7 @@ sub validate_link_pin_map : prototype($) {
         }
 
         if ($name !~ m/^[a-z]/) {
-            die "interface name '$name' for '$mac' is invalid: name must start with a letter\n";
+            die "interface name '$name' for '$mac' is invalid: name must start with a lower-case letter\n";
         }
 
         if ($name !~ m/^[a-zA-Z_][a-zA-Z0-9_]*$/) {
diff --git a/test/validate-link-pin-map.pl b/test/validate-link-pin-map.pl
index 3a95aab..3fbd0e4 100755
--- a/test/validate-link-pin-map.pl
+++ b/test/validate-link-pin-map.pl
@@ -45,14 +45,14 @@ is(
 eval { validate_link_pin_map({ 'ab:cd:ef:12:34:56' => '0nic' }) };
 is(
     $@,
-    "interface name '0nic' for 'ab:cd:ef:12:34:56' is invalid: name must start with a letter\n",
+    "interface name '0nic' for 'ab:cd:ef:12:34:56' is invalid: name must start with a lower-case letter\n",
     "name starting with number is rejected",
 );
 
 eval { validate_link_pin_map({ 'ab:cd:ef:12:34:56' => '_a' }) };
 is(
     $@,
-    "interface name '_a' for 'ab:cd:ef:12:34:56' is invalid: name must start with a letter\n",
+    "interface name '_a' for 'ab:cd:ef:12:34:56' is invalid: name must start with a lower-case letter\n",
     "name starting with underscore is rejected",
 );
 
-- 
2.47.3



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [pve-devel] applied: [PATCH installer 0/2] nic pinning: require first character to be lower-case
  2025-11-18 15:15 [pve-devel] [PATCH installer 0/2] nic pinning: require first character to be lower-case Stoiko Ivanov
  2025-11-18 15:15 ` [pve-devel] [PATCH installer 1/2] common: pinning: require first character to be lower-case ascii Stoiko Ivanov
  2025-11-18 15:15 ` [pve-devel] [PATCH installer 2/2] sys: net: fix error-message for interface names first character Stoiko Ivanov
@ 2025-11-18 16:31 ` Thomas Lamprecht
  2 siblings, 0 replies; 4+ messages in thread
From: Thomas Lamprecht @ 2025-11-18 16:31 UTC (permalink / raw)
  To: pve-devel, Stoiko Ivanov

On Tue, 18 Nov 2025 16:15:25 +0100, Stoiko Ivanov wrote:
> The regex for validating NICs in pve-common starts with /^[a-z].../
> getting 'name must start with a letter' to a pinned nic-name of 'ABC' is
> confusing. Additionally there was a discrepancy in validating the nic-name
> in the rust-based installers (is_ascii_alphabetic also matches upper-case
> letters, whereas the perl-regex required [a-z])
> 
> Align the validation with the version in pve-common.
> 
> [...]

Applied, thanks!

[1/2] common: pinning: require first character to be lower-case ascii
      commit: 47700a50ab4a8e3322aaa69f6a7ea584519b98e5
[2/2] sys: net: fix error-message for interface names first character
      commit: fc9e72091861b0f0981c8a4153c4017839478af7


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-11-18 16:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-18 15:15 [pve-devel] [PATCH installer 0/2] nic pinning: require first character to be lower-case Stoiko Ivanov
2025-11-18 15:15 ` [pve-devel] [PATCH installer 1/2] common: pinning: require first character to be lower-case ascii Stoiko Ivanov
2025-11-18 15:15 ` [pve-devel] [PATCH installer 2/2] sys: net: fix error-message for interface names first character Stoiko Ivanov
2025-11-18 16:31 ` [pve-devel] applied: [PATCH installer 0/2] nic pinning: require first character to be lower-case Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal