1
0
Fork 0

Merge pull request #1064 from egormkn/main

fix: prevent infinite loop in enumerate_wildcard_locations
This commit is contained in:
Nicolas Duchon 2023-12-10 18:53:50 +01:00 committed by GitHub
commit 97b25e7974
Signed by: GitHub
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -62,11 +62,12 @@ function ascending_wildcard_locations {
# - *.example.com
local domain="${1:?}"
local first_label
regex="^[[:alnum:]_\-]+(\.[[:alpha:]]+)?$"
until [[ "$domain" =~ $regex ]]; do
tld_regex="^[[:alpha:]]+$"
regex="^[^.]+\..+$"
while [[ "$domain" =~ $regex ]]; do
first_label="${domain%%.*}"
domain="${domain/${first_label}./}"
if [[ -z "$domain" ]]; then
domain="${domain/#"${first_label}."/}"
if [[ "$domain" == "*" || "$domain" =~ $tld_regex ]]; then
return
else
echo "*.${domain}"
@ -82,11 +83,11 @@ function descending_wildcard_locations {
# - foo.*
local domain="${1:?}"
local last_label
regex="^[[:alnum:]_\-]+$"
until [[ "$domain" =~ $regex ]]; do
regex="^.+\.[^.]+$"
while [[ "$domain" =~ $regex ]]; do
last_label="${domain##*.}"
domain="${domain/.${last_label}/}"
if [[ -z "$domain" ]]; then
domain="${domain/%".${last_label}"/}"
if [[ "$domain" == "*" ]]; then
return
else
echo "${domain}.*"