Add explicit length checks to ID validation functions to provide clearer
error messages in case of length mismatches

Signed-off-by: Arthur Bied-Charreton <[email protected]>
---
 src/PVE/Network/SDN/Controllers/Plugin.pm | 5 +++++
 src/PVE/Network/SDN/Dns/Plugin.pm         | 5 +++++
 src/PVE/Network/SDN/Fabrics.pm            | 5 +++++
 src/PVE/Network/SDN/Ipams/Plugin.pm       | 5 +++++
 src/PVE/Network/SDN/VnetPlugin.pm         | 5 +++++
 src/PVE/Network/SDN/Zones/Plugin.pm       | 5 +++++
 6 files changed, 30 insertions(+)

diff --git a/src/PVE/Network/SDN/Controllers/Plugin.pm 
b/src/PVE/Network/SDN/Controllers/Plugin.pm
index d70e518..f117f28 100644
--- a/src/PVE/Network/SDN/Controllers/Plugin.pm
+++ b/src/PVE/Network/SDN/Controllers/Plugin.pm
@@ -30,6 +30,11 @@ PVE::JSONSchema::register_format('pve-sdn-controller-id', 
\&parse_sdn_controller
 sub parse_sdn_controller_id {
     my ($id, $noerr) = @_;
 
+    if (length($id) < 2) {
+        return undef if $noerr;
+        die "controller ID '$id' can't be shorter than 2 characters\n";
+    }
+
     if ($id !~ m/^[a-z][a-z0-9_-]*[a-z0-9]$/i) {
         return undef if $noerr;
         die "controller ID '$id' contains illegal characters\n";
diff --git a/src/PVE/Network/SDN/Dns/Plugin.pm 
b/src/PVE/Network/SDN/Dns/Plugin.pm
index 2864d4c..68a07fa 100644
--- a/src/PVE/Network/SDN/Dns/Plugin.pm
+++ b/src/PVE/Network/SDN/Dns/Plugin.pm
@@ -32,6 +32,11 @@ PVE::JSONSchema::register_format('pve-sdn-dns-id', 
\&parse_sdn_dns_id);
 sub parse_sdn_dns_id {
     my ($id, $noerr) = @_;
 
+    if (length($id) < 2) {
+        return undef if $noerr;
+        die "dns ID '$id' can't be shorter than 2 characters\n";
+    }
+
     if ($id !~ m/^[a-z][a-z0-9]*[a-z0-9]$/i) {
         return undef if $noerr;
         die "dns ID '$id' contains illegal characters\n";
diff --git a/src/PVE/Network/SDN/Fabrics.pm b/src/PVE/Network/SDN/Fabrics.pm
index d90992a..b18ac7d 100644
--- a/src/PVE/Network/SDN/Fabrics.pm
+++ b/src/PVE/Network/SDN/Fabrics.pm
@@ -13,6 +13,11 @@ PVE::JSONSchema::register_format(
     sub {
         my ($id, $noerr) = @_;
 
+        if (length($id) > 8) {
+            return undef if $noerr;
+            die "Fabric ID '$id' can't be longer than 8 characters\n";
+        }
+
         if ($id !~ m/^[a-zA-Z0-9][a-zA-Z0-9-]{0,6}[a-zA-Z0-9]?$/i) {
             return undef if $noerr;
             die "Fabric ID '$id' contains illegal characters\n";
diff --git a/src/PVE/Network/SDN/Ipams/Plugin.pm 
b/src/PVE/Network/SDN/Ipams/Plugin.pm
index a986a92..10aabea 100644
--- a/src/PVE/Network/SDN/Ipams/Plugin.pm
+++ b/src/PVE/Network/SDN/Ipams/Plugin.pm
@@ -33,6 +33,11 @@ PVE::JSONSchema::register_format('pve-sdn-ipam-id', 
\&parse_sdn_ipam_id);
 sub parse_sdn_ipam_id {
     my ($id, $noerr) = @_;
 
+    if (length($id) < 2) {
+        return undef if $noerr;
+        die "ipam ID '$id' can't be shorter than 2 characters\n";
+    }
+
     if ($id !~ m/^[a-z][a-z0-9]*[a-z0-9]$/i) {
         return undef if $noerr;
         die "ipam ID '$id' contains illegal characters\n";
diff --git a/src/PVE/Network/SDN/VnetPlugin.pm 
b/src/PVE/Network/SDN/VnetPlugin.pm
index 717438c..a191af1 100644
--- a/src/PVE/Network/SDN/VnetPlugin.pm
+++ b/src/PVE/Network/SDN/VnetPlugin.pm
@@ -30,6 +30,11 @@ PVE::JSONSchema::register_format('pve-sdn-vnet-id', 
\&parse_sdn_vnet_id);
 sub parse_sdn_vnet_id {
     my ($id, $noerr) = @_;
 
+    if (length($id) < 2) {
+        return undef if $noerr;
+        die "vnet ID '$id' can't be shorter than 2 characters\n";
+    }
+
     if ($id !~ m/^[a-z][a-z0-9]*[a-z0-9]$/i) {
         return undef if $noerr;
         die "vnet ID '$id' contains illegal characters\n";
diff --git a/src/PVE/Network/SDN/Zones/Plugin.pm 
b/src/PVE/Network/SDN/Zones/Plugin.pm
index 826ebdf..14e2634 100644
--- a/src/PVE/Network/SDN/Zones/Plugin.pm
+++ b/src/PVE/Network/SDN/Zones/Plugin.pm
@@ -32,6 +32,11 @@ PVE::JSONSchema::register_format('pve-sdn-zone-id', 
\&parse_sdn_zone_id);
 sub parse_sdn_zone_id {
     my ($id, $noerr) = @_;
 
+    if (length($id) < 2) {
+        return undef if $noerr;
+        die "zone ID '$id' can't be shorter than 2 characters\n";
+    }
+
     if ($id !~ m/^[a-z][a-z0-9]*[a-z0-9]$/i) {
         return undef if $noerr;
         die "zone ID '$id' contains illegal characters\n";
-- 
2.47.3


_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to