From c04904a4f54f8949a6a7821a0859e2732366259b Mon Sep 17 00:00:00 2001 From: licunlong Date: Tue, 24 Nov 2020 19:57:38 +0800 Subject: [PATCH] treat hyphen as valid hostname char --- src/basic/hostname-util.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c index 5bfa028..b80a2b8 100644 --- a/src/basic/hostname-util.c +++ b/src/basic/hostname-util.c @@ -77,6 +77,16 @@ bool valid_ldh_char(char c) { c == '-'; } +static bool hostname_valid_char(char c) { + return + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + c == '-' || + c == '_' || + c == '.'; +} + bool hostname_is_valid(const char *s, ValidHostnameFlags flags) { unsigned n_dots = 0; const char *p; @@ -117,7 +127,7 @@ bool hostname_is_valid(const char *s, bool allow_trailing_dot) { hyphen = true; } else { - if (!valid_ldh_char(*p)) + if (!hostname_valid_char(*p)) return false; dot = false; @@ -160,7 +170,7 @@ char* hostname_cleanup(char *s) { dot = false; hyphen = true; - } else if (valid_ldh_char(*p)) { + } else if (hostname_valid_char(*p)) { *(d++) = *p; dot = false; hyphen = false; -- 2.23.0