From 65868ba3f759c02b80727e9d57fd04ee0d317868 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Fri, 5 Dec 2025 15:13:59 +0100 Subject: [PATCH] Fixed not parsing port ranges correctly in Termination::getLineworkportPairs() --- application/Termination/Termination.php | 31 ++++++++++++------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/application/Termination/Termination.php b/application/Termination/Termination.php index 112a0b3df..f1868e7cc 100644 --- a/application/Termination/Termination.php +++ b/application/Termination/Termination.php @@ -236,39 +236,38 @@ class Termination extends mfBaseModel { $return["pairs"] = []; $ports = preg_replace('/[^0-9-]+/', "", $ports); - if(strpos($ports, "-") !== false) { - // port range - $this->log->debug("is range"); - $port_parts = explode("-", $ports); - if(is_array($port_parts) && count($port_parts) == 2) { + + $port_parts = false; + if(preg_match('/^(\d+)-(\d+)$/', $ports, $m)) { + $port_parts = [$m[1], $m[2]]; + } + + if(!is_array($port_parts) || count($port_parts) < 2) { + // not a valid port range, treat as single port + $return["range"][] = $ports; + } else { + // valid port range $from = $port_parts[0]; $to = $port_parts[1]; - + if($port_parts[0] > $port_parts[1]) { $from = $port_parts[1]; $to = $port_parts[0]; } - + $range = []; $pairs = []; - - - + for($i = $from; $i <= $to; $i++) { $range[] = intval($i); if($i + 1 <= $to) { $pairs[] = $i."-".($i+1); } } - + $return["range"] = $range; $return["pairs"] = $pairs; } - } else { - // single port - $this->log->debug("not a range"); - $return["range"][] = $ports; - } //var_dump($return);exit; return $return;