From 1ff709dc91ca27f2c70adcacd8ae7fde21d46de4 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Fri, 28 Apr 2023 08:44:51 +0200 Subject: [PATCH] dhcp: test root domain for DNSSL/radvd PR: https://github.com/opnsense/core/issues/6529 --- src/etc/inc/util.inc | 11 ++++++----- src/www/services_router_advertisements.php | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/etc/inc/util.inc b/src/etc/inc/util.inc index 3cf06152f..bc918e13b 100644 --- a/src/etc/inc/util.inc +++ b/src/etc/inc/util.inc @@ -744,16 +744,17 @@ function is_hostname($hostname) } /* returns true if $domain is a valid domain name */ -function is_domain($domain) +function is_domain($domain, $allow_root = false) { if (!is_string($domain)) { return false; - } - if (preg_match('/^(?:(?:[a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])\.)*(?:[a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])$/i', $domain)) { + } elseif (preg_match('/^(?:(?:[a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])\.)*(?:[a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])$/i', $domain)) { + return true; + } elseif ($allow_root && $domain == '.') { return true; - } else { - return false; } + + return false; } /* returns true if $macaddr is a valid MAC address */ diff --git a/src/www/services_router_advertisements.php b/src/www/services_router_advertisements.php index d19bfcc3c..7faca9773 100644 --- a/src/www/services_router_advertisements.php +++ b/src/www/services_router_advertisements.php @@ -118,7 +118,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { if (!empty($pconfig['radomainsearchlist'])) { $domain_array=preg_split("/[ ;]+/",$pconfig['radomainsearchlist']); foreach ($domain_array as $curdomain) { - if (!is_domain($curdomain)) { + if (!is_domain($curdomain, true)) { $input_errors[] = gettext("A valid domain search list must be specified."); break; }